LDEBUGFS_SEQ_FOPS_RO(ldiskfs_osd_oi_scrub);
-static int ldiskfs_osd_readcache_seq_show(struct seq_file *m, void *data)
+static ssize_t readcache_max_filesize_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
{
- struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private);
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osd_device *osd = osd_dt_dev(dt);
LASSERT(osd != NULL);
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- seq_printf(m, "%llu\n", osd->od_readcache_max_filesize);
- return 0;
+ return scnprintf(buf, PAGE_SIZE, "%llu\n",
+ osd->od_readcache_max_filesize);
}
-static ssize_t
-ldiskfs_osd_readcache_seq_write(struct file *file, const char __user *buffer,
- size_t count, loff_t *off)
+static ssize_t readcache_max_filesize_store(struct kobject *kobj,
+ struct attribute *attr,
+ const char *buffer, size_t count)
{
- struct seq_file *m = file->private_data;
- struct dt_device *dt = m->private;
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
struct osd_device *osd = osd_dt_dev(dt);
- char kernbuf[22] = "";
u64 val;
int rc;
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- if (count >= sizeof(kernbuf))
- return -EINVAL;
-
- if (copy_from_user(kernbuf, buffer, count))
- return -EFAULT;
- kernbuf[count] = 0;
-
- rc = sysfs_memparse(kernbuf, count, &val, "B");
+ rc = sysfs_memparse(buffer, count, &val, "B");
if (rc < 0)
return rc;
OSD_MAX_CACHE_SIZE : val;
return count;
}
+LUSTRE_RW_ATTR(readcache_max_filesize);
-LDEBUGFS_SEQ_FOPS(ldiskfs_osd_readcache);
-
-static int ldiskfs_osd_readcache_max_io_seq_show(struct seq_file *m, void *data)
+static ssize_t readcache_max_io_mb_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
{
- struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private);
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osd_device *osd = osd_dt_dev(dt);
LASSERT(osd != NULL);
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- seq_printf(m, "%lu\n", osd->od_readcache_max_iosize >> 20);
- return 0;
+ return scnprintf(buf, PAGE_SIZE, "%lu\n",
+ osd->od_readcache_max_iosize >> 20);
}
-static ssize_t
-ldiskfs_osd_readcache_max_io_seq_write(struct file *file,
- const char __user *buffer,
- size_t count, loff_t *off)
+static ssize_t readcache_max_io_mb_store(struct kobject *kobj,
+ struct attribute *attr,
+ const char *buffer, size_t count)
{
- struct seq_file *m = file->private_data;
- struct dt_device *dt = m->private;
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
struct osd_device *osd = osd_dt_dev(dt);
- char kernbuf[22] = "";
u64 val;
int rc;
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- if (count >= sizeof(kernbuf))
- return -EINVAL;
-
- if (copy_from_user(kernbuf, buffer, count))
- return -EFAULT;
- kernbuf[count] = 0;
-
- rc = sysfs_memparse(kernbuf, count, &val, "MiB");
+ rc = sysfs_memparse(buffer, count, &val, "MiB");
if (rc < 0)
return rc;
osd->od_readcache_max_iosize = val;
return count;
}
+LUSTRE_RW_ATTR(readcache_max_io_mb);
-LDEBUGFS_SEQ_FOPS(ldiskfs_osd_readcache_max_io);
-
-static int ldiskfs_osd_writethrough_max_io_seq_show(struct seq_file *m,
- void *data)
+static ssize_t writethrough_max_io_mb_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
{
- struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private);
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osd_device *osd = osd_dt_dev(dt);
LASSERT(osd != NULL);
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- seq_printf(m, "%lu\n", osd->od_writethrough_max_iosize >> 20);
- return 0;
+ return scnprintf(buf, PAGE_SIZE, "%lu\n",
+ osd->od_writethrough_max_iosize >> 20);
}
-static ssize_t
-ldiskfs_osd_writethrough_max_io_seq_write(struct file *file,
- const char __user *buffer,
- size_t count, loff_t *off)
+static ssize_t writethrough_max_io_mb_store(struct kobject *kobj,
+ struct attribute *attr,
+ const char *buffer, size_t count)
{
- struct seq_file *m = file->private_data;
- struct dt_device *dt = m->private;
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
struct osd_device *osd = osd_dt_dev(dt);
- char kernbuf[22] = "";
u64 val;
int rc;
if (unlikely(osd->od_mnt == NULL))
return -EINPROGRESS;
- if (count >= sizeof(kernbuf))
- return -EINVAL;
-
- if (copy_from_user(kernbuf, buffer, count))
- return -EFAULT;
- kernbuf[count] = 0;
-
- rc = sysfs_memparse(kernbuf, count, &val, "MiB");
+ rc = sysfs_memparse(buffer, count, &val, "MiB");
if (rc < 0)
return rc;
osd->od_writethrough_max_iosize = val;
return count;
}
-
-LDEBUGFS_SEQ_FOPS(ldiskfs_osd_writethrough_max_io);
+LUSTRE_RW_ATTR(writethrough_max_io_mb);
#if LUSTRE_VERSION_CODE < OBD_OCD_VERSION(3, 0, 52, 0)
static ssize_t index_in_idif_show(struct kobject *kobj, struct attribute *attr,
struct ldebugfs_vars ldebugfs_osd_obd_vars[] = {
{ .name = "oi_scrub",
.fops = &ldiskfs_osd_oi_scrub_fops },
- { .name = "readcache_max_filesize",
- .fops = &ldiskfs_osd_readcache_fops },
- { .name = "readcache_max_io_mb",
- .fops = &ldiskfs_osd_readcache_max_io_fops },
- { .name = "writethrough_max_io_mb",
- .fops = &ldiskfs_osd_writethrough_max_io_fops },
{ NULL }
};
#ifdef LDISKFS_GET_BLOCKS_VERY_DENSE
&lustre_attr_extents_dense.attr,
#endif
+ &lustre_attr_readcache_max_filesize.attr,
+ &lustre_attr_readcache_max_io_mb.attr,
+ &lustre_attr_writethrough_max_io_mb.attr,
NULL,
};
}
LUSTRE_RW_ATTR(index_backup);
-static int zfs_osd_readcache_seq_show(struct seq_file *m, void *data)
+static ssize_t readcache_max_filesize_show(struct kobject *kobj,
+ struct attribute *attr,
+ char *buf)
{
- struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private);
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
+ struct osd_device *osd = osd_dt_dev(dt);
LASSERT(osd != NULL);
if (unlikely(osd->od_os == NULL))
return -EINPROGRESS;
- seq_printf(m, "%llu\n", osd->od_readcache_max_filesize);
- return 0;
+ return scnprintf(buf, PAGE_SIZE, "%llu\n",
+ osd->od_readcache_max_filesize);
}
-static ssize_t
-zfs_osd_readcache_seq_write(struct file *file, const char __user *buffer,
- size_t count, loff_t *off)
+static ssize_t readcache_max_filesize_store(struct kobject *kobj,
+ struct attribute *attr,
+ const char *buffer, size_t count)
{
- struct seq_file *m = file->private_data;
- struct dt_device *dt = m->private;
+ struct dt_device *dt = container_of(kobj, struct dt_device,
+ dd_kobj);
struct osd_device *osd = osd_dt_dev(dt);
- char kernbuf[22] = "";
u64 val;
int rc;
if (unlikely(osd->od_os == NULL))
return -EINPROGRESS;
- if (count >= sizeof(kernbuf))
- return -EINVAL;
-
- if (copy_from_user(kernbuf, buffer, count))
- return -EFAULT;
- kernbuf[count] = 0;
-
- rc = sysfs_memparse(kernbuf, count, &val, "B");
+ rc = sysfs_memparse(buffer, count, &val, "B");
if (rc < 0)
return rc;
OSD_MAX_CACHE_SIZE : val;
return count;
}
-LDEBUGFS_SEQ_FOPS(zfs_osd_readcache);
+LUSTRE_RW_ATTR(readcache_max_filesize);
static struct attribute *zfs_attrs[] = {
&lustre_attr_fstype.attr,
&lustre_attr_index_backup.attr,
&lustre_attr_auto_scrub.attr,
&lustre_attr_sync_on_lseek.attr,
+ &lustre_attr_readcache_max_filesize.attr,
NULL,
};
struct ldebugfs_vars ldebugfs_osd_obd_vars[] = {
{ .name = "oi_scrub",
.fops = &zfs_osd_oi_scrub_fops },
- { .name = "readcache_max_filesize",
- .fops = &zfs_osd_readcache_fops },
{ 0 }
};