char *buf);
#endif
/* lproc_status.c */
-int lprocfs_obd_max_pages_per_rpc_seq_show(struct seq_file *m, void *data);
-ssize_t lprocfs_obd_max_pages_per_rpc_seq_write(struct file *file,
- const char __user *buffer,
- size_t count, loff_t *off);
+ssize_t max_pages_per_rpc_show(struct kobject *kobj, struct attribute *attr,
+ char *buf);
+ssize_t max_pages_per_rpc_store(struct kobject *kobj, struct attribute *attr,
+ const char *buffer, size_t count);
ssize_t short_io_bytes_show(struct kobject *kobj, struct attribute *attr,
char *buf);
ssize_t short_io_bytes_store(struct kobject *kobj, struct attribute *attr,
}
LUSTRE_RW_ATTR(max_mod_rpcs_in_flight);
+LUSTRE_RW_ATTR(max_pages_per_rpc);
+
static int mdc_max_dirty_mb_seq_show(struct seq_file *m, void *v)
{
struct obd_device *obd = m->private;
LPROC_SEQ_FOPS_RO_TYPE(mdc, server_uuid);
LPROC_SEQ_FOPS_RO_TYPE(mdc, timeouts);
LPROC_SEQ_FOPS_RO_TYPE(mdc, state);
-LPROC_SEQ_FOPS_RW_TYPE(mdc, obd_max_pages_per_rpc);
LPROC_SEQ_FOPS_RW_TYPE(mdc, import);
LPROC_SEQ_FOPS_RW_TYPE(mdc, pinger_recov);
.fops = &mdc_connect_flags_fops },
{ .name = "mds_server_uuid",
.fops = &mdc_server_uuid_fops },
- { .name = "max_pages_per_rpc",
- .fops = &mdc_obd_max_pages_per_rpc_fops },
{ .name = "max_dirty_mb",
.fops = &mdc_max_dirty_mb_fops },
{ .name = "mdc_cached_mb",
&lustre_attr_checksum_dump.attr,
&lustre_attr_max_rpcs_in_flight.attr,
&lustre_attr_max_mod_rpcs_in_flight.attr,
+ &lustre_attr_max_pages_per_rpc.attr,
&lustre_attr_mds_conn_uuid.attr,
&lustre_attr_conn_uuid.attr,
&lustre_attr_ping.attr,
};
EXPORT_SYMBOL_GPL(lustre_sysfs_ops);
-int lprocfs_obd_max_pages_per_rpc_seq_show(struct seq_file *m, void *data)
+ssize_t max_pages_per_rpc_show(struct kobject *kobj, struct attribute *attr,
+ char *buf)
{
- struct obd_device *obd = data;
+ struct obd_device *obd = container_of(kobj, struct obd_device,
+ obd_kset.kobj);
struct client_obd *cli = &obd->u.cli;
+ int rc;
spin_lock(&cli->cl_loi_list_lock);
- seq_printf(m, "%d\n", cli->cl_max_pages_per_rpc);
+ rc = scnprintf(buf, PAGE_SIZE, "%u\n", cli->cl_max_pages_per_rpc);
spin_unlock(&cli->cl_loi_list_lock);
- return 0;
+ return rc;
}
-EXPORT_SYMBOL(lprocfs_obd_max_pages_per_rpc_seq_show);
+EXPORT_SYMBOL(max_pages_per_rpc_show);
-ssize_t lprocfs_obd_max_pages_per_rpc_seq_write(struct file *file,
- const char __user *buffer,
- size_t count, loff_t *off)
+ssize_t max_pages_per_rpc_store(struct kobject *kobj, struct attribute *attr,
+ const char *buffer, size_t count)
{
- struct seq_file *m = file->private_data;
- struct obd_device *obd = m->private;
+ struct obd_device *obd = container_of(kobj, struct obd_device,
+ obd_kset.kobj);
struct client_obd *cli = &obd->u.cli;
struct obd_import *imp;
struct obd_connect_data *ocd;
int chunk_mask, rc;
- char kernbuf[22];
u64 val;
- if (count > sizeof(kernbuf) - 1)
- 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)
return rc;
return rc ?: count;
}
-EXPORT_SYMBOL(lprocfs_obd_max_pages_per_rpc_seq_write);
+EXPORT_SYMBOL(max_pages_per_rpc_store);
ssize_t short_io_bytes_show(struct kobject *kobj, struct attribute *attr,
char *buf)
}
LUSTRE_RO_ATTR(destroys_in_flight);
-LPROC_SEQ_FOPS_RW_TYPE(osc, obd_max_pages_per_rpc);
-
+LUSTRE_RW_ATTR(max_pages_per_rpc);
LUSTRE_RW_ATTR(short_io_bytes);
#ifdef CONFIG_PROC_FS
.fops = &osc_connect_flags_fops },
{ .name = "ost_server_uuid",
.fops = &osc_server_uuid_fops },
- { .name = "max_pages_per_rpc",
- .fops = &osc_obd_max_pages_per_rpc_fops },
{ .name = "osc_cached_mb",
.fops = &osc_cached_mb_fops },
{ .name = "osc_unevict_cached_mb",
&lustre_attr_destroys_in_flight.attr,
&lustre_attr_grant_shrink_interval.attr,
&lustre_attr_max_dirty_mb.attr,
+ &lustre_attr_max_pages_per_rpc.attr,
&lustre_attr_max_rpcs_in_flight.attr,
&lustre_attr_short_io_bytes.attr,
&lustre_attr_resend_count.attr,