X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fobdclass%2Flinux%2Flinux-sysctl.c;h=af1d19c8dfb09b618a623f15cdd6930de45734fa;hp=a7c5ac52125b09da21f1136bcd4ed000b210511e;hb=c0dece77445d19b9d02f5856fb5e86cce527f88a;hpb=2b294992edce5af7b79d4300ed3aa1ea6a8db850 diff --git a/lustre/obdclass/linux/linux-sysctl.c b/lustre/obdclass/linux/linux-sysctl.c index a7c5ac5..af1d19c 100644 --- a/lustre/obdclass/linux/linux-sysctl.c +++ b/lustre/obdclass/linux/linux-sysctl.c @@ -15,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -27,7 +23,7 @@ * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2011, 2014, Intel Corporation. + * Copyright (c) 2011, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -84,32 +80,7 @@ proc_memory_alloc(struct ctl_table *table, int write, void __user *buffer, if (write) return -EINVAL; - len = snprintf(buf, sizeof(buf), LPU64"\n", obd_memory_sum()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; -} - -static int -proc_pages_alloc(struct ctl_table *table, int write, void __user *buffer, - size_t *lenp, loff_t *ppos) -{ - char buf[22]; - int len; - - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; - - len = snprintf(buf, sizeof(buf), LPU64"\n", obd_pages_sum()); + len = snprintf(buf, sizeof(buf), "%llu\n", obd_memory_sum()); if (len > *lenp) len = *lenp; buf[len] = '\0'; @@ -134,32 +105,7 @@ proc_mem_max(struct ctl_table *table, int write, void __user *buffer, if (write) return -EINVAL; - len = snprintf(buf, sizeof(buf), LPU64"\n", obd_memory_max()); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - *ppos += *lenp; - return 0; -} - -static int -proc_pages_max(struct ctl_table *table, int write, void __user *buffer, - size_t *lenp, loff_t *ppos) -{ - char buf[22]; - int len; - - if (!*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) - return -EINVAL; - - len = snprintf(buf, sizeof(buf), LPU64"\n", obd_pages_max()); + len = snprintf(buf, sizeof(buf), "%llu\n", obd_memory_max()); if (len > *lenp) len = *lenp; buf[len] = '\0'; @@ -174,7 +120,7 @@ static int proc_max_dirty_pages_in_mb(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos) { - __u64 val; + __s64 val; int rc = 0; if (!table->data || !table->maxlen || !*lenp || (*ppos && !write)) { @@ -182,19 +128,25 @@ proc_max_dirty_pages_in_mb(struct ctl_table *table, int write, return 0; } if (write) { - rc = lprocfs_write_frac_u64_helper(buffer, *lenp, &val, - 1 << (20 - PAGE_CACHE_SHIFT)); + rc = lprocfs_str_with_units_to_s64(buffer, *lenp, &val, 'M'); + if (rc) + return rc; + + if (val < 0) + return -ERANGE; + + val >>= PAGE_SHIFT; /* Don't allow them to let dirty pages exceed 90% of system * memory and set a hard minimum of 4MB. */ if (val > ((totalram_pages / 10) * 9)) { - CERROR("Refusing to set max dirty pages to "LPU64", " + CERROR("Refusing to set max dirty pages to %lld, " "which is more than 90%% of available RAM; " "setting to %lu\n", val, ((totalram_pages / 10) * 9)); obd_max_dirty_pages = ((totalram_pages / 10) * 9); - } else if (val < 4 << (20 - PAGE_CACHE_SHIFT)) { - obd_max_dirty_pages = 4 << (20 - PAGE_CACHE_SHIFT); + } else if (val < 4 << (20 - PAGE_SHIFT)) { + obd_max_dirty_pages = 4 << (20 - PAGE_SHIFT); } else { obd_max_dirty_pages = val; } @@ -204,7 +156,7 @@ proc_max_dirty_pages_in_mb(struct ctl_table *table, int write, len = lprocfs_read_frac_helper(buf, sizeof(buf), *(unsigned long *)table->data, - 1 << (20 - PAGE_CACHE_SHIFT)); + 1 << (20 - PAGE_SHIFT)); if (len > *lenp) len = *lenp; buf[len] = '\0'; @@ -216,39 +168,6 @@ proc_max_dirty_pages_in_mb(struct ctl_table *table, int write, return rc; } -#ifdef RANDOM_FAIL_ALLOC -static int proc_alloc_fail_rate(struct ctl_table *table, int write, - void __user *buffer, size_t *lenp, loff_t *ppos) -{ - int rc = 0; - - if (!table->data || !table->maxlen || !*lenp || (*ppos && !write)) { - *lenp = 0; - return 0; - } - if (write) { - rc = lprocfs_write_frac_helper(buffer, *lenp, - (unsigned int*)table->data, - OBD_ALLOC_FAIL_MULT); - } else { - char buf[21]; - int len; - - len = lprocfs_read_frac_helper(buf, 21, - *(unsigned int*)table->data, - OBD_ALLOC_FAIL_MULT); - if (len > *lenp) - len = *lenp; - buf[len] = '\0'; - if (copy_to_user(buffer, buf, len)) - return -EFAULT; - *lenp = len; - } - *ppos += *lenp; - return rc; -} -#endif - #ifdef CONFIG_SYSCTL static struct ctl_table obd_table[] = { { @@ -293,14 +212,6 @@ static struct ctl_table obd_table[] = { }, { INIT_CTL_NAME - .procname = "pagesused", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_pages_alloc - }, - { - INIT_CTL_NAME .procname = "memused_max", .data = NULL, .maxlen = 0, @@ -309,30 +220,12 @@ static struct ctl_table obd_table[] = { }, { INIT_CTL_NAME - .procname = "pagesused_max", - .data = NULL, - .maxlen = 0, - .mode = 0444, - .proc_handler = &proc_pages_max - }, - { - INIT_CTL_NAME .procname = "ldlm_timeout", .data = &ldlm_timeout, .maxlen = sizeof(int), .mode = 0644, .proc_handler = &proc_set_timeout }, -#ifdef RANDOM_FAIL_ALLOC - { - INIT_CTL_NAME - .procname = "alloc_fail_rate", - .data = &obd_alloc_fail_rate, - .maxlen = sizeof(int), - .mode = 0644, - .proc_handler = &proc_alloc_fail_rate - }, -#endif { INIT_CTL_NAME .procname = "max_dirty_mb",