#include <obd_class.h>
#include <lprocfs_status.h>
+#include "mdc_internal.h"
+
#ifdef LPROCFS
static int mdc_max_rpcs_in_flight_seq_show(struct seq_file *m, void *v)
{
struct obd_device *dev = m->private;
- struct client_obd *cli = &dev->u.cli;
+ __u32 max;
int rc;
- client_obd_list_lock(&cli->cl_loi_list_lock);
- rc = seq_printf(m, "%u\n", cli->cl_max_rpcs_in_flight);
- client_obd_list_unlock(&cli->cl_loi_list_lock);
+ max = obd_get_max_rpcs_in_flight(&dev->u.cli);
+ rc = seq_printf(m, "%u\n", max);
+
return rc;
}
static ssize_t mdc_max_rpcs_in_flight_seq_write(struct file *file,
- const char *buffer,
+ const char __user *buffer,
size_t count,
loff_t *off)
{
struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
- struct client_obd *cli = &dev->u.cli;
- int val, rc;
-
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc)
- return rc;
+ int val;
+ int rc;
- if (val < 1 || val > MDC_MAX_RIF_MAX)
- return -ERANGE;
+ rc = lprocfs_write_helper(buffer, count, &val);
+ if (rc == 0)
+ rc = obd_set_max_rpcs_in_flight(&dev->u.cli, val);
- client_obd_list_lock(&cli->cl_loi_list_lock);
- cli->cl_max_rpcs_in_flight = val;
- client_obd_list_unlock(&cli->cl_loi_list_lock);
+ if (rc != 0)
+ count = rc;
- return count;
+ return count;
}
LPROC_SEQ_FOPS(mdc_max_rpcs_in_flight);
LPROC_SEQ_FOPS_RW_TYPE(mdc, pinger_recov);
struct lprocfs_seq_vars lprocfs_mdc_obd_vars[] = {
- { "uuid", &mdc_uuid_fops, 0, 0 },
- { "ping", &mdc_ping_fops, 0, 0222 },
- { "connect_flags", &mdc_connect_flags_fops,0, 0 },
- { "blocksize", &mdc_blksize_fops, 0, 0 },
- { "kbytestotal", &mdc_kbytestotal_fops, 0, 0 },
- { "kbytesfree", &mdc_kbytesfree_fops, 0, 0 },
- { "kbytesavail", &mdc_kbytesavail_fops, 0, 0 },
- { "filestotal", &mdc_filestotal_fops, 0, 0 },
- { "filesfree", &mdc_filesfree_fops, 0, 0 },
- { "mds_server_uuid", &mdc_server_uuid_fops, 0, 0 },
- { "mds_conn_uuid", &mdc_conn_uuid_fops, 0, 0 },
+ { .name = "uuid",
+ .fops = &mdc_uuid_fops },
+ { .name = "ping",
+ .fops = &mdc_ping_fops,
+ .proc_mode = 0222 },
+ { .name = "connect_flags",
+ .fops = &mdc_connect_flags_fops },
+ { .name = "blocksize",
+ .fops = &mdc_blksize_fops },
+ { .name = "kbytestotal",
+ .fops = &mdc_kbytestotal_fops },
+ { .name = "kbytesfree",
+ .fops = &mdc_kbytesfree_fops },
+ { .name = "kbytesavail",
+ .fops = &mdc_kbytesavail_fops },
+ { .name = "filestotal",
+ .fops = &mdc_filestotal_fops },
+ { .name = "filesfree",
+ .fops = &mdc_filesfree_fops },
+ { .name = "mds_server_uuid",
+ .fops = &mdc_server_uuid_fops },
+ { .name = "mds_conn_uuid",
+ .fops = &mdc_conn_uuid_fops },
/*
* FIXME: below proc entry is provided, but not in used, instead
* sbi->sb_md_brw_size is used, the per obd variable should be used
* when CMD is enabled, and dir pages are managed in MDC layer.
* Remember to enable proc write function.
*/
- { "max_pages_per_rpc", &mdc_obd_max_pages_per_rpc_fops },
- { "max_rpcs_in_flight", &mdc_max_rpcs_in_flight_fops },
- { "timeouts", &mdc_timeouts_fops },
- { "import", &mdc_import_fops },
- { "state", &mdc_state_fops },
- { "pinger_recov", &mdc_pinger_recov_fops },
+ { .name = "max_pages_per_rpc",
+ .fops = &mdc_obd_max_pages_per_rpc_fops },
+ { .name = "max_rpcs_in_flight",
+ .fops = &mdc_max_rpcs_in_flight_fops },
+ { .name = "timeouts",
+ .fops = &mdc_timeouts_fops },
+ { .name = "import",
+ .fops = &mdc_import_fops },
+ { .name = "state",
+ .fops = &mdc_state_fops },
+ { .name = "pinger_recov",
+ .fops = &mdc_pinger_recov_fops },
{ 0 }
};
#endif /* LPROCFS */