> @@ -1124,7 +1118,6 @@ static struct ctl_table fs_table[] = {
> .proc_handler = &proc_dointvec,
> },
> {
> - .ctl_name = FS_NRFILE,
> .procname = "file-nr",
> .data = &files_stat,
> .maxlen = 3*sizeof(int),
Why? It will work just fine through default sysctl(2) writeback.
Alexey Dobriyan <[email protected]> writes:
>> @@ -1124,7 +1118,6 @@ static struct ctl_table fs_table[] = {
>> .proc_handler = &proc_dointvec,
>> },
>> {
>> - .ctl_name = FS_NRFILE,
>> .procname = "file-nr",
>> .data = &files_stat,
>> .maxlen = 3*sizeof(int),
>
> Why? It will work just fine through default sysctl(2) writeback.
Well write doesn't happen. But even more so proc_nr_files() dynamically
generates files_stat.nr_files. That doesn't happen on the generic
sysctl path, and thus it's broken.
Yes. I'm being picky, because at some point in the past before
that was a per cpu variable the code worked, and won't look broken
now unless you examine the contents of the data.
Eric
On Fri, Aug 10, 2007 at 03:26:52AM -0600, Eric W. Biederman wrote:
> Alexey Dobriyan <[email protected]> writes:
>
> >> @@ -1124,7 +1118,6 @@ static struct ctl_table fs_table[] = {
> >> .proc_handler = &proc_dointvec,
> >> },
> >> {
> >> - .ctl_name = FS_NRFILE,
> >> .procname = "file-nr",
> >> .data = &files_stat,
> >> .maxlen = 3*sizeof(int),
> >
> > Why? It will work just fine through default sysctl(2) writeback.
>
>
> Well write doesn't happen. But even more so proc_nr_files() dynamically
> generates files_stat.nr_files. That doesn't happen on the generic
> sysctl path, and thus it's broken.
I see now, thanks. CC'ing Dipankar who probably want to fix this.
Dipankar, fs.file-nr always contains stale data in nr_files field unless
you regenerate it by reading /proc/sys/fs/file-nr :)
> Yes. I'm being picky, because at some point in the past before
> that was a per cpu variable the code worked, and won't look broken
> now unless you examine the contents of the data.
More than year passed, nobody noticed until now, probably FS_NRFILE
should go.