size_t count, loff_t *off)
{
struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
- int val, rc;
+ int rc;
+ __s64 val;
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc)
- return rc;
- if (val < 0 || val > 1)
- return -ERANGE;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+ if (val < 0 || val > 1)
+ return -ERANGE;
- /* opposite senses */
- if (dev->u.cli.cl_import->imp_deactive == val)
- rc = ptlrpc_set_import_active(dev->u.cli.cl_import, val);
- else
- CDEBUG(D_CONFIG, "activate %d: ignoring repeat request\n", val);
+ /* opposite senses */
+ if (dev->u.cli.cl_import->imp_deactive == val)
+ rc = ptlrpc_set_import_active(dev->u.cli.cl_import, val);
+ else
+ CDEBUG(D_CONFIG, "activate %d: ignoring repeat request\n",
+ (int)val);
- return count;
+ return count;
}
LPROC_SEQ_FOPS(osc_active);
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;
+ struct client_obd *cli = &dev->u.cli;
+ int rc;
int adding, added, req_count;
+ __s64 val;
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc)
- return rc;
-
- if (val < 1 || val > OSC_MAX_RIF_MAX)
- return -ERANGE;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+ if (val < 1 || val > OSC_MAX_RIF_MAX)
+ return -ERANGE;
- LPROCFS_CLIMP_CHECK(dev);
+ LPROCFS_CLIMP_CHECK(dev);
- adding = val - cli->cl_max_rpcs_in_flight;
+ adding = (int)val - cli->cl_max_rpcs_in_flight;
req_count = atomic_read(&osc_pool_req_count);
if (adding > 0 && req_count < osc_reqpool_maxreqcount) {
/*
{
struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
struct client_obd *cli = &dev->u.cli;
- int pages_number, mult, rc;
+ int rc;
+ __s64 pages_number;
- mult = 1 << (20 - PAGE_CACHE_SHIFT);
- rc = lprocfs_write_frac_helper(buffer, count, &pages_number, mult);
+ rc = lprocfs_str_with_units_to_s64(buffer, count, &pages_number, 'M');
if (rc)
return rc;
+ pages_number >>= PAGE_CACHE_SHIFT;
+
if (pages_number <= 0 ||
pages_number >= OSC_MAX_DIRTY_MB_MAX << (20 - PAGE_CACHE_SHIFT) ||
pages_number > totalram_pages / 4) /* 1/4 of RAM */
{
struct obd_device *dev = ((struct seq_file *)file->private_data)->private;
struct client_obd *cli = &dev->u.cli;
- __u64 val;
- long pages_number;
+ __s64 pages_number;
long rc;
- int mult;
char kernbuf[128];
if (count >= sizeof(kernbuf))
return -EFAULT;
kernbuf[count] = 0;
- mult = 1 << (20 - PAGE_CACHE_SHIFT);
buffer += lprocfs_find_named_value(kernbuf, "used_mb:", &count) -
kernbuf;
- rc = lprocfs_write_frac_u64_helper(buffer, count, &val, mult);
-
+ rc = lprocfs_str_with_units_to_s64(buffer, count, &pages_number, 'M');
if (rc)
return rc;
- if (val > LONG_MAX)
- return -ERANGE;
- pages_number = (long)val;
+ pages_number >>= PAGE_CACHE_SHIFT;
if (pages_number < 0)
return -ERANGE;
size_t count, loff_t *off)
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
- struct client_obd *cli = &obd->u.cli;
- int rc;
- __u64 val;
+ struct client_obd *cli = &obd->u.cli;
+ int rc;
+ __s64 val;
- if (obd == NULL)
- return 0;
+ if (obd == NULL)
+ return 0;
- rc = lprocfs_write_u64_helper(buffer, count, &val);
- if (rc)
- return rc;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+ if (val < 0)
+ return -ERANGE;
- /* this is only for shrinking grant */
+ /* this is only for shrinking grant */
spin_lock(&cli->cl_loi_list_lock);
if (val >= cli->cl_avail_grant) {
spin_unlock(&cli->cl_loi_list_lock);
spin_unlock(&cli->cl_loi_list_lock);
- LPROCFS_CLIMP_CHECK(obd);
- if (cli->cl_import->imp_state == LUSTRE_IMP_FULL)
- rc = osc_shrink_grant_to_target(cli, val);
- LPROCFS_CLIMP_EXIT(obd);
- if (rc)
- return rc;
- return count;
+ LPROCFS_CLIMP_CHECK(obd);
+ if (cli->cl_import->imp_state == LUSTRE_IMP_FULL)
+ rc = osc_shrink_grant_to_target(cli, val);
+ LPROCFS_CLIMP_EXIT(obd);
+ if (rc)
+ return rc;
+ return count;
}
LPROC_SEQ_FOPS(osc_cur_grant_bytes);
size_t count, loff_t *off)
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
- int val, rc;
+ int rc;
+ __s64 val;
if (obd == NULL)
return 0;
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc)
- return rc;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
- if (val <= 0)
- return -ERANGE;
+ if (val <= 0 || val > INT_MAX)
+ return -ERANGE;
- obd->u.cli.cl_grant_shrink_interval = val;
+ obd->u.cli.cl_grant_shrink_interval = val;
- return count;
+ return count;
}
LPROC_SEQ_FOPS(osc_grant_shrink_interval);
size_t count, loff_t *off)
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
- int val, rc;
+ int rc;
+ __s64 val;
- if (obd == NULL)
- return 0;
+ if (obd == NULL)
+ return 0;
- rc = lprocfs_write_helper(buffer, count, &val);
- if (rc)
- return rc;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
- obd->u.cli.cl_checksum = (val ? 1 : 0);
+ obd->u.cli.cl_checksum = !!val;
- return count;
+ return count;
}
LPROC_SEQ_FOPS(osc_checksum);
size_t count, loff_t *off)
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
- int val, rc;
+ int rc;
+ __s64 val;
- rc = lprocfs_write_helper(buffer, count, &val);
+ rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc)
return rc;
- if (val < 0)
+ if (val < 0 || val > INT_MAX)
return -EINVAL;
atomic_set(&obd->u.cli.cl_resends, val);
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
struct osc_device *od = obd2osc_dev(obd);
+ int rc;
+ __s64 val;
- return lprocfs_write_helper(buffer, count, &od->od_contention_time) ?: count;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+ if (val < 0 || val > INT_MAX)
+ return -ERANGE;
+
+ od->od_contention_time = val;
+
+ return count;
}
LPROC_SEQ_FOPS(osc_contention_seconds);
{
struct obd_device *obd = ((struct seq_file *)file->private_data)->private;
struct osc_device *od = obd2osc_dev(obd);
+ int rc;
+ __s64 val;
- return lprocfs_write_helper(buffer, count, &od->od_lockless_truncate) ?:
- count;
+ rc = lprocfs_str_to_s64(buffer, count, &val);
+ if (rc)
+ return rc;
+ if (val < 0)
+ return -ERANGE;
+
+ od->od_lockless_truncate = !!val;
+
+ return count;
}
LPROC_SEQ_FOPS(osc_lockless_truncate);
struct client_obd *cli = &dev->u.cli;
struct obd_connect_data *ocd = &cli->cl_import->imp_connect_data;
int chunk_mask, rc;
- __u64 val;
+ __s64 val;
- rc = lprocfs_write_u64_helper(buffer, count, &val);
+ rc = lprocfs_str_to_s64(buffer, count, &val);
if (rc)
return rc;
+ if (val < 0)
+ return -ERANGE;
/* if the max_pages is specified in bytes, convert to pages */
if (val >= ONE_MB_BRW_SIZE)