2008-06-24 01:46:54

by Kentaro Makita

[permalink] [raw]
Subject: [RESEND][PATCH -mm 2/2] vfs: add cond_resched_lock while scanning dentry LRU lists

o add cond_resched_lock(&dcache_lock) while scanning LRU lists on superblocks
in __shrink_dcache_sb()

Signed-off-by: Kentaro Makita <[email protected]>
---
fs/dcache.c | 1 +
1 files changed, 1 insertion(+)

Index: b/fs/dcache.c
===================================================================
--- a/fs/dcache.c 2008-06-05 11:48:57.000000000 +0900
+++ b/fs/dcache.c 2008-06-05 11:49:19.000000000 +0900
@@ -484,6 +484,7 @@ restart:
if (--cnt == 0)
break;
}
+ cond_resched_lock(&dcache_lock);
}
}
while (!list_empty(&tmp)) {









2008-06-24 02:11:55

by Andrew Morton

[permalink] [raw]
Subject: Re: [RESEND][PATCH -mm 2/2] vfs: add cond_resched_lock while scanning dentry LRU lists

On Tue, 24 Jun 2008 10:45:23 +0900 Kentaro Makita <[email protected]> wrote:

> o add cond_resched_lock(&dcache_lock) while scanning LRU lists on superblocks
> in __shrink_dcache_sb()
>
> Signed-off-by: Kentaro Makita <[email protected]>
> ---
> fs/dcache.c | 1 +
> 1 files changed, 1 insertion(+)
>
> Index: b/fs/dcache.c
> ===================================================================
> --- a/fs/dcache.c 2008-06-05 11:48:57.000000000 +0900
> +++ b/fs/dcache.c 2008-06-05 11:49:19.000000000 +0900
> @@ -484,6 +484,7 @@ restart:
> if (--cnt == 0)
> break;
> }
> + cond_resched_lock(&dcache_lock);
> }
> }
> while (!list_empty(&tmp)) {

The changelog is insufficient. It tells us what the patch did (which
was completely obvious anyway) but it fails to tell us _why_ the patch
did it.

That is is easily guessable but a good changelog would have described
the problem which you observed and would have described how the the
patch changed the runtime behaviour.

And this is not a trivial formality either. Because if, for example,
the problem whcih you are fixing here is "machine goes comatose for ten
minutes" then we'll need algorithmic changes and not a bandaid of this
nature.