diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-01-10 14:48:02 -0500 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2011-01-10 14:48:02 -0500 |
| commit | 68c404b18f6fba404b2753622d0459c68ee128ae (patch) | |
| tree | c1ec0bb12f19d91071b461cc2831d9d3dd4c74f3 /fs/ocfs2/aops.c | |
| parent | d035c36c58dd9183ad6aa7875dea89893faedb55 (diff) | |
| parent | 6650239a4b01077e80d5a4468562756d77afaa59 (diff) | |
Merge branch 'bugfixes' into nfs-for-2.6.38
Conflicts:
fs/nfs/nfs2xdr.c
fs/nfs/nfs3xdr.c
fs/nfs/nfs4xdr.c
Diffstat (limited to 'fs/ocfs2/aops.c')
| -rw-r--r-- | fs/ocfs2/aops.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c index f1e962cb3b7..0d7c5540ad6 100644 --- a/fs/ocfs2/aops.c +++ b/fs/ocfs2/aops.c @@ -573,11 +573,14 @@ static void ocfs2_dio_end_io(struct kiocb *iocb, /* this io's submitter should not have unlocked this before we could */ BUG_ON(!ocfs2_iocb_is_rw_locked(iocb)); + if (ocfs2_iocb_is_sem_locked(iocb)) { + up_read(&inode->i_alloc_sem); + ocfs2_iocb_clear_sem_locked(iocb); + } + ocfs2_iocb_clear_rw_locked(iocb); level = ocfs2_iocb_rw_locked_level(iocb); - if (!level) - up_read(&inode->i_alloc_sem); ocfs2_rw_unlock(inode, level); if (is_async) |
