diff options
| author | Miklos Szeredi <[email protected]> | 2005-07-12 13:58:10 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2005-07-12 16:00:59 -0700 |
| commit | 168a9fd6a1bf91041adf9909f6c72cf747f0ca8c (patch) | |
| tree | 65b4dc843f34f0837b10f4fbbc1763f5aae87b7b /scripts/patch-kernel | |
| parent | 3b6bfcdb116f2cc2cab921fcac6d39d4022952d2 (diff) | |
[PATCH] __wait_on_freeing_inode fix
This patch fixes queer behavior in __wait_on_freeing_inode().
If I_LOCK was not set it called yield(), effectively busy waiting for the
removal of the inode from the hash. This change was introduced within
"[PATCH] eliminate inode waitqueue hashtable" Changeset 1.1938.166.16 last
october by wli.
The solution is to restore the old behavior, of unconditionally waiting on
the waitqueue. It doesn't matter if I_LOCK is not set initally, the task
will go to sleep, and wake up when wake_up_inode() is called from
generic_delete_inode() after removing the inode from the hash chain.
Comment is also updated to better reflect current behavior.
This condition is very hard to trigger normally (simultaneous clear_inode()
with iget()) so probably only heavy stress testing can reveal any change of
behavior.
Signed-off-by: Miklos Szeredi <[email protected]>
Acked-by: Christoph Hellwig <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts/patch-kernel')
0 files changed, 0 insertions, 0 deletions