aha/fs/nilfs2
Ryusuke Konishi 47420c7998 nilfs2: avoid double error caused by nilfs_transaction_end
Pekka Enberg pointed out that double error handlings found after
nilfs_transaction_end() can be avoided by separating abort operation:

 OK, I don't understand this. The only way nilfs_transaction_end() can
 fail is if we have NILFS_TI_SYNC set and we fail to construct the
 segment. But why do we want to construct a segment if we don't commit?

 I guess what I'm asking is why don't we have a separate
 nilfs_transaction_abort() function that can't fail for the erroneous
 case to avoid this double error value tracking thing?

This does the separation and renames nilfs_transaction_end() to
nilfs_transaction_commit() for clarification.

Since, some calls of these functions were used just for exclusion control
against the segment constructor, they are replaced with semaphore
operations.

Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-04-07 08:31:17 -07:00
..
alloc.c nilfs2: persistent object allocator 2009-04-07 08:31:13 -07:00
alloc.h nilfs2: persistent object allocator 2009-04-07 08:31:13 -07:00
bmap.c
bmap.h
bmap_union.h
btnode.c nilfs2: B-tree node cache 2009-04-07 08:31:13 -07:00
btnode.h nilfs2: B-tree node cache 2009-04-07 08:31:13 -07:00
btree.c nilfs2: B-tree based block mapping 2009-04-07 08:31:13 -07:00
btree.h nilfs2: B-tree based block mapping 2009-04-07 08:31:13 -07:00
cpfile.c nilfs2: segment usage file 2009-04-07 08:31:14 -07:00
cpfile.h nilfs2: checkpoint file 2009-04-07 08:31:14 -07:00
dat.c nilfs2: disk address translator 2009-04-07 08:31:14 -07:00
dat.h nilfs2: disk address translator 2009-04-07 08:31:14 -07:00
dir.c nilfs2: directory entry operations 2009-04-07 08:31:15 -07:00
direct.c nilfs2: direct block mapping 2009-04-07 08:31:13 -07:00
direct.h nilfs2: direct block mapping 2009-04-07 08:31:13 -07:00
file.c nilfs2: fix missed-sync issue for do_sync_mapping_range() 2009-04-07 08:31:15 -07:00
gcdat.c nilfs2: another dat for garbage collection 2009-04-07 08:31:16 -07:00
gcinode.c nilfs2: block cache for garbage collection 2009-04-07 08:31:16 -07:00
ifile.c nilfs2: inode map file 2009-04-07 08:31:14 -07:00
ifile.h nilfs2: inode map file 2009-04-07 08:31:14 -07:00
inode.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
ioctl.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
Makefile nilfs2: update makefile and Kconfig 2009-04-07 08:31:16 -07:00
mdt.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
mdt.h nilfs2: meta data file 2009-04-07 08:31:13 -07:00
namei.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
nilfs.h nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
page.c nilfs2: buffer and page operations 2009-04-07 08:31:13 -07:00
page.h nilfs2: buffer and page operations 2009-04-07 08:31:13 -07:00
recovery.c nilfs2: recovery functions 2009-04-07 08:31:16 -07:00
sb.h
segbuf.c nilfs2: segment buffer 2009-04-07 08:31:15 -07:00
segbuf.h nilfs2: segment buffer 2009-04-07 08:31:15 -07:00
seglist.h nilfs2: segment constructor 2009-04-07 08:31:15 -07:00
segment.c nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00
segment.h nilfs2: fix missed-sync issue for do_sync_mapping_range() 2009-04-07 08:31:15 -07:00
sufile.c nilfs2: segment usage file 2009-04-07 08:31:14 -07:00
sufile.h nilfs2: segment usage file 2009-04-07 08:31:14 -07:00
super.c nilfs2: cleanup nilfs_clear_inode 2009-04-07 08:31:17 -07:00
the_nilfs.c nilfs2: operations for the_nilfs core object 2009-04-07 08:31:15 -07:00
the_nilfs.h nilfs2: avoid double error caused by nilfs_transaction_end 2009-04-07 08:31:17 -07:00