linux/fs/ocfs2
Tao Ma 2891d290aa ocfs2: Add clusters free in dealloc_ctxt.
Now in ocfs2 xattr set, the whole process are divided into many small
parts and they are wrapped into diffrent transactions and it make the
set doesn't look like a real transaction. So we want to integrate it
into a real one.

In some cases we will allocate some clusters and free some in just one
transaction. e.g, one xattr is larger than inline size, so it and its
value root is stored within the inode while the value is outside in a
cluster. Then we try to update it with a smaller value(larger than the
size of root but smaller than inline size), we may need to free the
outside cluster while allocate a new bucket(one cluster) since now the
inode may be full. The old solution will lock the global_bitmap(if the
local alloc failed in stress test) and then the truncate log. This will
cause a ABBA lock with truncate log flush.

This patch add the clusters free in dealloc_ctxt, so that we can record
the free clusters during the transaction and then free it after we
release the global_bitmap in xattr set.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
2009-01-05 08:34:18 -08:00
..
cluster fs: replace NIPQUAD() 2008-10-31 00:56:28 -07:00
dlm Merge branch 'master' into next 2008-12-04 17:16:36 +11:00
alloc.c ocfs2: Add clusters free in dealloc_ctxt. 2009-01-05 08:34:18 -08:00
alloc.h ocfs2: Add clusters free in dealloc_ctxt. 2009-01-05 08:34:18 -08:00
aops.c ocfs2: Simplify ocfs2_read_block() 2008-10-14 11:51:57 -07:00
aops.h ocfs2: convert to new aops 2007-10-16 09:42:58 -07:00
buffer_head_io.c ocfs2: fix regression in ocfs2_read_blocks_sync() 2008-12-01 14:46:58 -08:00
buffer_head_io.h ocfs2: Make cached block reads the common case. 2008-10-14 11:58:22 -07:00
dcache.c ocfs2: Remove mount/unmount votes 2008-01-25 14:45:34 -08:00
dcache.h
dir.c ocfs2: Make cached block reads the common case. 2008-10-14 11:58:22 -07:00
dir.h ocfs2: Rename cleanups 2007-10-12 11:54:38 -07:00
dlmglue.c ocfs2: fix wake_up in unlock_ast 2008-12-01 14:46:45 -08:00
dlmglue.h ocfs2: Break out stackglue into modules. 2008-04-18 08:56:05 -07:00
export.c [PATCH] switch all filesystems over to d_obtain_alias 2008-10-23 05:13:01 -04:00
export.h exportfs: make struct export_operations const 2007-10-22 08:13:21 -07:00
extent_map.c ocfs2: Simplify ocfs2_read_block() 2008-10-14 11:51:57 -07:00
extent_map.h ocfs2: Add extent tree operation for xattr value btrees 2008-10-13 16:57:01 -07:00
file.c ocfs2: truncate outstanding block after direct io failure 2008-11-10 09:51:47 -08:00
file.h ocfs2: Make high level btree extend code generic 2008-10-13 13:57:59 -07:00
heartbeat.c ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
heartbeat.h ocfs2: Move o2hb functionality into the stack glue. 2008-04-18 08:56:04 -07:00
inode.c ocfs2: Set journal descriptor to NULL after journal shutdown 2008-11-10 09:51:47 -08:00
inode.h ocfs2: Move ocfs2_bread() into dir.c 2008-10-14 11:58:03 -07:00
ioctl.c ocfs2: Don't check for NULL before brelse() 2008-10-13 17:02:44 -07:00
ioctl.h ocfs2: Convert ocfs2 over to unlocked_ioctl 2008-04-18 08:56:11 -07:00
journal.c ocfs2: Set journal descriptor to NULL after journal shutdown 2008-11-10 09:51:47 -08:00
journal.h ocfs2: Switch over to JBD2. 2008-10-13 17:02:43 -07:00
localalloc.c ocfs2: Make cached block reads the common case. 2008-10-14 11:58:22 -07:00
localalloc.h ocfs2: throttle back local alloc when low on disk space 2008-10-13 13:57:57 -07:00
locks.c ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
locks.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
Makefile ocfs2: Move trusted and user attribute support into xattr.c 2008-10-13 17:02:44 -07:00
mmap.c ocfs2: return 0 in page_mkwrite to let VFS retry. 2008-11-10 09:51:47 -08:00
mmap.h
namei.c Merge branch 'master' into next 2008-11-14 11:29:12 +11:00
namei.h
ocfs1_fs_compat.h fs/: Spelling fixes 2008-02-03 17:33:42 +02:00
ocfs2_fs.h ocfs2: Add JBD2 compat feature bit. 2008-12-16 18:26:16 -08:00
ocfs2_jbd_compat.h ocfs2: Switch over to JBD2. 2008-10-13 17:02:43 -07:00
ocfs2_lockid.h ocfs2: Change mlog_bug_on to BUG_ON in ocfs2_lockid.h 2008-04-18 08:56:07 -07:00
ocfs2_lockingver.h ocfs2: Negotiate locking protocol versions. 2008-02-06 16:11:29 -08:00
ocfs2.h ocfs2: comments typo fix 2008-12-01 14:46:31 -08:00
resize.c ocfs2: Simplify ocfs2_read_block() 2008-10-14 11:51:57 -07:00
resize.h [PATCH 2/2] ocfs2: Implement group add for online resize 2008-01-25 15:04:24 -08:00
slot_map.c ocfs2: Make cached block reads the common case. 2008-10-14 11:58:22 -07:00
slot_map.h ocfs2: De-magic the in-memory slot map. 2008-04-18 08:56:03 -07:00
stack_o2cb.c ocfs2: Remove ->hangup() from stack glue operations. 2008-06-16 10:46:52 -07:00
stack_user.c ocfs2: initialize stack_user lvbptr 2008-12-01 14:46:39 -08:00
stackglue.c ocfs2: Remove pointless !! 2008-10-13 17:02:44 -07:00
stackglue.h ocfs2: POSIX file locks support 2008-10-13 13:57:57 -07:00
suballoc.c ocfs2: Simplify ocfs2_read_block() 2008-10-14 11:51:57 -07:00
suballoc.h ocfs2: Limit inode allocation to 32bits. 2008-10-13 16:57:07 -07:00
super.c ocfs2: Don't check for NULL before brelse() 2008-10-13 17:02:44 -07:00
super.h
symlink.c ocfs2: Simplify ocfs2_read_block() 2008-10-14 11:51:57 -07:00
symlink.h
sysfile.c ocfs2: Silence false lockdep warnings 2008-01-25 15:05:44 -08:00
sysfile.h
uptodate.c ocfs2: use smaller counters in ocfs2_remove_xattr_clusters_from_cache 2008-10-13 17:02:44 -07:00
uptodate.h ocfs2: Add helper function in uptodate.c for removing xattr clusters 2008-10-13 13:57:59 -07:00
ver.c ocfs2: bump version number 2008-01-25 15:05:46 -08:00
ver.h
xattr.c ocfs2/xattr: Only extend xattr bucket in need. 2009-01-05 08:34:18 -08:00
xattr.h ocfs2: fix function declaration and definition in xattr 2008-11-10 09:51:44 -08:00