2006-10-11 02:08:20

by Vadim Lobanov

[permalink] [raw]
Subject: Potential fix for fdtable badness.

All,

Sorry about the recent fdtable badness that you all encountered. I'm working
on getting a fix out there.

Dave, Olof, Linas, Bryce,

Could you please test the patch at the bottom of the email to see if it makes
your computers happy again, if you have the time and inclination to do so?

Andrew,

Would you prefer me to resend a fixed patch #4, or a new fix (#5) on top of
what's in your tree?

diff -Npru old/fs/file.c new/fs/file.c
--- old/fs/file.c 2006-10-10 18:58:21.000000000 -0700
+++ new/fs/file.c 2006-10-10 19:01:03.000000000 -0700
@@ -164,9 +164,8 @@ static struct fdtable * alloc_fdtable(un
* the fdarray into page-sized chunks: starting at a quarter of a page,
* and growing in powers of two from there on.
*/
- nr++;
nr /= (PAGE_SIZE / 4 / sizeof(struct file *));
- nr = roundup_pow_of_two(nr);
+ nr = roundup_pow_of_two(nr + 1);
nr *= (PAGE_SIZE / 4 / sizeof(struct file *));
if (nr > NR_OPEN)
nr = NR_OPEN;


2006-10-11 02:31:21

by Andrew Morton

[permalink] [raw]
Subject: Re: Potential fix for fdtable badness.

On Tue, 10 Oct 2006 19:08:18 -0700
Vadim Lobanov <[email protected]> wrote:

> Would you prefer me to resend a fixed patch #4, or a new fix (#5) on top of
> what's in your tree?

Incremental updates are preferred.

> diff -Npru old/fs/file.c new/fs/file.c
> --- old/fs/file.c 2006-10-10 18:58:21.000000000 -0700
> +++ new/fs/file.c 2006-10-10 19:01:03.000000000 -0700
> @@ -164,9 +164,8 @@ static struct fdtable * alloc_fdtable(un
> * the fdarray into page-sized chunks: starting at a quarter of a page,
> * and growing in powers of two from there on.
> */
> - nr++;
> nr /= (PAGE_SIZE / 4 / sizeof(struct file *));
> - nr = roundup_pow_of_two(nr);
> + nr = roundup_pow_of_two(nr + 1);
> nr *= (PAGE_SIZE / 4 / sizeof(struct file *));
> if (nr > NR_OPEN)
> nr = NR_OPEN;

Like that.

2006-10-11 02:39:38

by Vadim Lobanov

[permalink] [raw]
Subject: Re: Potential fix for fdtable badness.

On Tuesday 10 October 2006 19:31, Andrew Morton wrote:
> On Tue, 10 Oct 2006 19:08:18 -0700
>
> Vadim Lobanov <[email protected]> wrote:
> > Would you prefer me to resend a fixed patch #4, or a new fix (#5) on top
> > of what's in your tree?
>
> Incremental updates are preferred.
>
> > diff -Npru old/fs/file.c new/fs/file.c
> > --- old/fs/file.c 2006-10-10 18:58:21.000000000 -0700
> > +++ new/fs/file.c 2006-10-10 19:01:03.000000000 -0700
> > @@ -164,9 +164,8 @@ static struct fdtable * alloc_fdtable(un
> > * the fdarray into page-sized chunks: starting at a quarter of a page,
> > * and growing in powers of two from there on.
> > */
> > - nr++;
> > nr /= (PAGE_SIZE / 4 / sizeof(struct file *));
> > - nr = roundup_pow_of_two(nr);
> > + nr = roundup_pow_of_two(nr + 1);
> > nr *= (PAGE_SIZE / 4 / sizeof(struct file *));
> > if (nr > NR_OPEN)
> > nr = NR_OPEN;
>
> Like that.

I'll wrap the fixes up in incremental patches once the problem has been
eradicated.

2006-10-11 12:42:14

by Dave Kleikamp

[permalink] [raw]
Subject: Re: Potential fix for fdtable badness.

On Tue, 2006-10-10 at 19:08 -0700, Vadim Lobanov wrote:
> All,
>
> Sorry about the recent fdtable badness that you all encountered. I'm working
> on getting a fix out there.
>
> Dave, Olof, Linas, Bryce,
>
> Could you please test the patch at the bottom of the email to see if it makes
> your computers happy again, if you have the time and inclination to do so?

The patch works for me. Thanks!

Shaggy

> Andrew,
>
> Would you prefer me to resend a fixed patch #4, or a new fix (#5) on top of
> what's in your tree?
>
> diff -Npru old/fs/file.c new/fs/file.c
> --- old/fs/file.c 2006-10-10 18:58:21.000000000 -0700
> +++ new/fs/file.c 2006-10-10 19:01:03.000000000 -0700
> @@ -164,9 +164,8 @@ static struct fdtable * alloc_fdtable(un
> * the fdarray into page-sized chunks: starting at a quarter of a page,
> * and growing in powers of two from there on.
> */
> - nr++;
> nr /= (PAGE_SIZE / 4 / sizeof(struct file *));
> - nr = roundup_pow_of_two(nr);
> + nr = roundup_pow_of_two(nr + 1);
> nr *= (PAGE_SIZE / 4 / sizeof(struct file *));
> if (nr > NR_OPEN)
> nr = NR_OPEN;
--
David Kleikamp
IBM Linux Technology Center

2006-10-11 17:15:11

by Olof Johansson

[permalink] [raw]
Subject: Re: Potential fix for fdtable badness.

On Tue, 10 Oct 2006 19:08:18 -0700 Vadim Lobanov <[email protected]> wrote:

> All,
>
> Sorry about the recent fdtable badness that you all encountered. I'm working
> on getting a fix out there.
>
> Dave, Olof, Linas, Bryce,
>
> Could you please test the patch at the bottom of the email to see if it makes
> your computers happy again, if you have the time and inclination to do so?

Looks good to me.


-Olof

2006-10-11 20:13:22

by linas

[permalink] [raw]
Subject: Re: Potential fix for fdtable badness.

On Tue, Oct 10, 2006 at 07:08:18PM -0700, Vadim Lobanov wrote:
>
> Dave, Olof, Linas, Bryce,
>
> Could you please test the patch at the bottom of the email to see if it makes
> your computers happy again, if you have the time and inclination to do so?
>
> +++ new/fs/file.c 2006-10-10 19:01:03.000000000 -0700
> - nr++;
> nr /= (PAGE_SIZE / 4 / sizeof(struct file *));
> - nr = roundup_pow_of_two(nr);
> + nr = roundup_pow_of_two(nr + 1);

This fixed things for me!

--linas