diff options
author | Mark Fasheh <mark.fasheh@oracle.com> | 2007-10-18 15:36:10 -0400 |
---|---|---|
committer | Mark Fasheh <mark.fasheh@oracle.com> | 2007-11-06 18:31:52 -0500 |
commit | 9f70968af3e6e21612e06e153aa71c62dee5a09b (patch) | |
tree | c4a11e07d94ad99fe13512b3b1a117de2613c300 /fs | |
parent | 019d1b2247c6898589560c6f3b3e7ec280b0010a (diff) |
ocfs2: Re-order iput in ocfs2_drop_dentry_lock
Do this to avoid a theoretical (I haven't seen this in practice) race where
the downconvert thread might drop the dentry lock, allowing a remote unlink
to proceed before dropping the inode locks. This could bounce access to the
orphan dir between nodes.
There doesn't seem to be a need to do the same in ocfs2_dentry_iput() as
that's never called for the last ref drop from the downconvert thread.
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ocfs2/dcache.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c index 3094ddb7a254..1957a5ed219e 100644 --- a/fs/ocfs2/dcache.c +++ b/fs/ocfs2/dcache.c | |||
@@ -318,9 +318,9 @@ out_attach: | |||
318 | static void ocfs2_drop_dentry_lock(struct ocfs2_super *osb, | 318 | static void ocfs2_drop_dentry_lock(struct ocfs2_super *osb, |
319 | struct ocfs2_dentry_lock *dl) | 319 | struct ocfs2_dentry_lock *dl) |
320 | { | 320 | { |
321 | iput(dl->dl_inode); | ||
321 | ocfs2_simple_drop_lockres(osb, &dl->dl_lockres); | 322 | ocfs2_simple_drop_lockres(osb, &dl->dl_lockres); |
322 | ocfs2_lock_res_free(&dl->dl_lockres); | 323 | ocfs2_lock_res_free(&dl->dl_lockres); |
323 | iput(dl->dl_inode); | ||
324 | kfree(dl); | 324 | kfree(dl); |
325 | } | 325 | } |
326 | 326 | ||