diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2009-03-31 18:23:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-01 11:59:13 -0400 |
commit | 704503d836042d4a4c7685b7036e7de0418fbc0f (patch) | |
tree | 218bea088f0b286981221e44d5247dab98020d30 /kernel/sysctl.c | |
parent | 6a11f75b6a17b5d9ac5025f8d048382fd1f47377 (diff) |
mm: fix proc_dointvec_userhz_jiffies "breakage"
Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9838
On i386, HZ=1000, jiffies_to_clock_t() converts time in a somewhat strange
way from the user's point of view:
# echo 500 >/proc/sys/vm/dirty_writeback_centisecs
# cat /proc/sys/vm/dirty_writeback_centisecs
499
So, we have 5000 jiffies converted to only 499 clock ticks and reported
back.
TICK_NSEC = 999848
ACTHZ = 256039
Keeping in-kernel variable in units passed from userspace will fix issue
of course, but this probably won't be right for every sysctl.
[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Nick Piggin <nickpiggin@yahoo.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index c5ef44ff850f..2e490a389dd2 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -1010,7 +1010,7 @@ static struct ctl_table vm_table[] = { | |||
1010 | .data = &dirty_expire_interval, | 1010 | .data = &dirty_expire_interval, |
1011 | .maxlen = sizeof(dirty_expire_interval), | 1011 | .maxlen = sizeof(dirty_expire_interval), |
1012 | .mode = 0644, | 1012 | .mode = 0644, |
1013 | .proc_handler = &proc_dointvec_userhz_jiffies, | 1013 | .proc_handler = &proc_dointvec, |
1014 | }, | 1014 | }, |
1015 | { | 1015 | { |
1016 | .ctl_name = VM_NR_PDFLUSH_THREADS, | 1016 | .ctl_name = VM_NR_PDFLUSH_THREADS, |