diff options
| author | Lepton Wu <[email protected]> | 2007-10-16 23:30:04 -0700 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2007-10-17 08:42:58 -0700 |
| commit | fb46f341d9868fe993626536c7449c2a1aec62a3 (patch) | |
| tree | 869b426000d9c4689110e08ff9419901a958ec7c /include/linux | |
| parent | b9ec0339d8e22cadf2d9d1b010b51dc53837dfb0 (diff) | |
reiserfs: workaround for dead loop in finish_unfinished
There is possible dead loop in finish_unfinished function.
In most situation, the call chain iput -> ... -> reiserfs_delete_inode ->
remove_save_link will success. But for some reason such as data
corruption, reiserfs_delete_inode fails on reiserfs_do_truncate ->
search_for_position_by_key.
Then remove_save_link won't be called. We always get the same
"save_link_key" in the while loop in finish_unfinished function. The
following patch adds a check for the possible dead loop and just remove
save link when deap loop.
[[email protected]: cleanups]
Signed-off-by: Lepton Wu <[email protected]>
Cc: Chris Mason <[email protected]>
Cc: Jeff Mahoney <[email protected]>
Cc: "Vladimir V. Saveliev" <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions