1
linux/fs
Mingming Cao fe55c45236 [PATCH] ext3: remove unnecessary race then retry in ext3_get_block
The extra race-with-truncate-then-retry logic around
ext3_get_block_handle(), which was inherited from ext2, becomes unecessary
for ext3, since we have already obtained the ei->truncate_sem in
ext3_get_block_handle() before calling ext3_alloc_branch().  The
ei->truncate_sem is already there to block concurrent truncate and block
allocation on the same inode.  So the inode's indirect addressing tree
won't be changed after we grab that semaphore.

We could, after get the semaphore, re-verify the branch is up-to-date or
not.  If it has been changed, then get the updated branch.  If we still
need block allocation, we will have a safe version of the branch to work
with in the ext3_find_goal()/ext3_splice_branch().

The code becomes more readable after remove those retry logic.  The patch
also clean up some gotos in ext3_get_block_handle() to make it more
readable.

Signed-off-by: Mingming Cao <cmm@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-05-01 08:59:20 -07:00
..
adfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
affs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
afs [PATCH] Exterminate PAGE_BUG 2005-05-01 08:59:01 -07:00
autofs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
autofs4 [PATCH] autofs4: tree race fix 2005-05-01 08:59:17 -07:00
befs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cifs [PATCH] cifs: Update cifs todo list 2005-04-30 11:10:58 -07:00
coda Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cramfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
debugfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
devfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
devpts Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
efs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
exportfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ext2 [PATCH] ext2 corruption - regression between 2.6.9 and 2.6.10 2005-04-16 15:25:45 -07:00
ext3 [PATCH] ext3: remove unnecessary race then retry in ext3_get_block 2005-05-01 08:59:20 -07:00
fat Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
freevxfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hfs [PATCH] hfs, hfsplus: don't leak s_fs_info and fix an oops 2005-05-01 08:59:16 -07:00
hfsplus [PATCH] hfs, hfsplus: don't leak s_fs_info and fix an oops 2005-05-01 08:59:16 -07:00
hostfs [PATCH] uml - hostfs: avoid buffers 2005-05-01 08:58:56 -07:00
hpfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hppfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hugetlbfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
isofs [PATCH] isofs includes sanitized 2005-04-25 18:32:12 -07:00
jbd [PATCH] jbd dirty buffer leak fix 2005-04-16 15:26:36 -07:00
jffs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
jffs2 [PATCH] Exterminate PAGE_BUG 2005-05-01 08:59:01 -07:00
jfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
lockd Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
minix Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
msdos Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ncpfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nfsd [PATCH] nfsd4: fix struct file leak 2005-04-16 15:26:38 -07:00
nls Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ntfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
openpromfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
partitions [PATCH] kobject/hotplug split - block core 2005-04-18 21:57:36 -07:00
proc [PATCH] procfs: Fix hardlink counts for /proc/<PID>/task 2005-05-01 08:59:03 -07:00
qnx4 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ramfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
reiserfs [PATCH] reiserfs endianness: comp_short_keys() cleanup 2005-05-01 08:59:19 -07:00
romfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smbfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysfs [PATCH] sysfs: add sysfs_chmod_file() 2005-04-18 21:57:32 -07:00
sysv Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
udf [PATCH] Exterminate PAGE_BUG 2005-05-01 08:59:01 -07:00
ufs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
umsdos Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vfat Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xfs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
aio.c [PATCH] aio: optimize io_submit_one() 2005-05-01 08:59:16 -07:00
attr.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bad_inode.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_aout.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_elf_fdpic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_elf.c [PATCH] Fix error recovery path for arch_setup_additional_pages 2005-04-28 15:17:19 -07:00
binfmt_em86.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_flat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_misc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_script.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_som.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
bio.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
block_dev.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
buffer.c [PATCH] Exterminate PAGE_BUG 2005-05-01 08:59:01 -07:00
char_dev.c [PATCH] revert fs/char_dev.c CONFIG_BASE_FULL change 2005-04-17 10:57:20 -07:00
compat_ioctl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
compat.c [PATCH] NFS4: Don't use __user with compat_uptr_t 2005-04-27 15:39:03 -07:00
dcache.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dcookies.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
direct-io.c [PATCH] Direct IO async short read fix 2005-04-16 15:25:50 -07:00
dnotify.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dquot.c [PATCH] quota: fix possible oops on quotaoff 2005-04-16 15:25:46 -07:00
eventpoll.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
exec.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fcntl.c [PATCH] convert that currently tests _NSIG directly to use valid_signal() 2005-05-01 08:59:14 -07:00
fifo.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
file_table.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
file.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
filesystems.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fs-writeback.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
inode.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig.binfmt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
libfs.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
locks.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mbcache.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpage.c [PATCH] mpage_writepages() page locking fix 2005-05-01 08:58:39 -07:00
namei.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
namespace.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nfsctl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
open.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pipe.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
posix_acl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
quota_v1.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
quota_v2.c [PATCH] quota: possible bug in quota format v2 support 2005-04-16 15:25:47 -07:00
quota.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
read_write.c [PATCH] undo do_readv_writev() behavior change 2005-04-16 15:25:49 -07:00
readdir.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
select.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
seq_file.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
super.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xattr_acl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xattr.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00