#include <linux/circ_buf.h>
#include <linux/device.h>
#include <linux/fs.h>
+#include <linux/idr.h>
#include <linux/kernel.h>
#include <linux/miscdevice.h>
#include <linux/module.h>
return mask;
}
-static long oal_ioctl_info(struct oal_circ_buf *ocb, unsigned long arg)
+static long oal_ioctl_info(struct oal_circ_buf *ocb, void __user *uarg)
{
struct ofd_access_log *oal = ocb->ocb_access_log;
-
struct lustre_access_log_info_v1 __user *lali;
u32 entry_count = CIRC_CNT(ocb->ocb_circ.head,
ocb->ocb_circ.tail,
ocb->ocb_circ.tail,
oal->oal_log_size) / oal->oal_entry_size;
- lali = (struct lustre_access_log_info_v1 __user *)arg;
+ lali = uarg;
BUILD_BUG_ON(sizeof(lali->lali_name) != sizeof(oal->oal_name));
if (put_user(LUSTRE_ACCESS_LOG_VERSION_1, &lali->lali_version))
}
static long oal_file_ioctl(struct file *filp, unsigned int cmd,
- unsigned long arg)
+ unsigned long arg)
{
struct oal_circ_buf *ocb = filp->private_data;
case LUSTRE_ACCESS_LOG_IOCTL_VERSION:
return LUSTRE_ACCESS_LOG_VERSION_1;
case LUSTRE_ACCESS_LOG_IOCTL_INFO:
- return oal_ioctl_info(ocb, arg);
+ return oal_ioctl_info(ocb, (void __user *)arg);
case LUSTRE_ACCESS_LOG_IOCTL_FILTER:
ocb->ocb_filter = arg;
return 0;
.read = &oal_file_read,
.write = &oal_file_write,
.poll = &oal_file_poll,
+#ifdef HAVE_NO_LLSEEK
.llseek = &no_llseek,
+#endif
};
static void oal_device_release(struct device *dev)
oal->oal_is_closed = 1;
down_read(&oal->oal_buf_list_sem);
- list_for_each_entry(ocb, &oal->oal_circ_buf_list, ocb_list) {
- wake_up_all(&ocb->ocb_read_wait_queue);
- }
+ list_for_each_entry(ocb, &oal->oal_circ_buf_list, ocb_list)
+ wake_up(&ocb->ocb_read_wait_queue);
up_read(&oal->oal_buf_list_sem);
cdev_device_del(&oal->oal_cdev, &oal->oal_device);
}
}
static long oal_control_file_ioctl(struct file *filp, unsigned int cmd,
- unsigned long arg)
+ unsigned long arg)
{
struct oal_control_file *ccf = filp->private_data;