diff options
author | Mark Fasheh <mfasheh@suse.com> | 2010-03-11 18:31:09 -0800 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-03-23 18:22:40 -0700 |
commit | b4414eea0e7b9c134262c801a87e338bf675962c (patch) | |
tree | 09829d99527f1da69cc19074a2d3baef1195955e /fs/ocfs2/localalloc.c | |
parent | b23179681c90a55e2a2083e1dde9f727ecffb2b7 (diff) | |
download | talos-op-linux-b4414eea0e7b9c134262c801a87e338bf675962c.tar.gz talos-op-linux-b4414eea0e7b9c134262c801a87e338bf675962c.zip |
ocfs2: Clear undo bits when local alloc is freed
When the local alloc file changes windows, unused bits are freed back to the
global bitmap. By defnition, those bits can not be in use by any file. Also,
the local alloc will never have been able to allocate those bits if they
were part of a previous truncate. Therefore it makes sense that we should
clear unused local alloc bits in the undo buffer so that they can be used
immediatly.
[ Modified to call it ocfs2_release_clusters() -- Joel ]
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2/localalloc.c')
-rw-r--r-- | fs/ocfs2/localalloc.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c index 171c691b42a0..c983715d8d8c 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c @@ -872,8 +872,10 @@ static int ocfs2_sync_local_to_main(struct ocfs2_super *osb, (unsigned long long)la_start_blk, (unsigned long long)blkno); - status = ocfs2_free_clusters(handle, main_bm_inode, - main_bm_bh, blkno, count); + status = ocfs2_release_clusters(handle, + main_bm_inode, + main_bm_bh, blkno, + count); if (status < 0) { mlog_errno(status); goto bail; |