diff options
author | Sunil Mushran <sunil.mushran@oracle.com> | 2007-09-21 14:41:43 -0400 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-10-03 14:14:45 -0400 |
commit | bda0233b89c10ae46ccecb78bffdaf0fd7833d17 (patch) | |
tree | b7ffce2948a7ecd1912f58b3de553f76fe61f74f /fs/ocfs2 | |
parent | f778089cb2445dfc6dfd30a7a567925fd8589f1e (diff) |
ocfs2: Unlock mutex in local alloc failure case
The fs was not unlocking the local alloc inode mutex in the code path in
which it failed to find a window of free bits in the global bitmap.
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/localalloc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/ocfs2/localalloc.c b/fs/ocfs2/localalloc.c index de984d272576..d272847d5a07 100644 --- a/fs/ocfs2/localalloc.c +++ b/fs/ocfs2/localalloc.c | |||
@@ -514,8 +514,10 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb, | |||
514 | ac->ac_bh = osb->local_alloc_bh; | 514 | ac->ac_bh = osb->local_alloc_bh; |
515 | status = 0; | 515 | status = 0; |
516 | bail: | 516 | bail: |
517 | if (status < 0 && local_alloc_inode) | 517 | if (status < 0 && local_alloc_inode) { |
518 | mutex_unlock(&local_alloc_inode->i_mutex); | ||
518 | iput(local_alloc_inode); | 519 | iput(local_alloc_inode); |
520 | } | ||
519 | 521 | ||
520 | mlog_exit(status); | 522 | mlog_exit(status); |
521 | return status; | 523 | return status; |