linux/fs/ufs
Evgeniy Dushistov 09114eb8c5 [PATCH] ufs: fix hang during `rm'
This fixes the code like this:

	bh = sb_find_get_block (sb, tmp + j);
	if ((bh && DATA_BUFFER_USED(bh)) || tmp != fs32_to_cpu(sb, *p)) {
		retry = 1;
		brelse (bh);
		goto next1;
	}
	bforget (bh);

sb_find_get_block() ordinarily returns a buffer_head with b_count>=2, and
this code assume that in case if "b_count>1" buffer is used, so this caused
infinite loop.

(akpm: that is-the-buffer-busy code is incomprehensible.  Good riddance.  Use
of block_truncate_page() seems sane).

Signed-off-by: Evgeniy Dushistov <dushistov@mail.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-03 08:32:04 -08:00
..
balloc.c [PATCH] ufs cleanup 2006-01-14 10:27:32 -08:00
cylinder.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dir.c [PATCH] fs/ufs: debug mode compilation failure 2006-01-06 15:22:28 -08:00
file.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ialloc.c [PATCH] ufs cleanup 2006-01-14 10:27:32 -08:00
inode.c [PATCH] ufs: fix hang during `rm' 2006-02-03 08:32:04 -08:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
namei.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
super.c [PATCH] ufs: fix oops with `ufs1' type 2006-02-03 08:32:04 -08:00
swab.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
symlink.c [PATCH] Fix up symlink function pointers 2005-08-19 18:08:21 -07:00
truncate.c [PATCH] ufs: fix hang during `rm' 2006-02-03 08:32:04 -08:00
util.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
util.h [PATCH] ufs cleanup 2006-01-14 10:27:32 -08:00