Whamcloud - gitweb
LU-721 llite: Parallel writes to same file results in zero file
authorBobi Jam <bobijam@whamcloud.com>
Mon, 3 Oct 2011 04:44:37 +0000 (12:44 +0800)
committerOleg Drokin <green@whamcloud.com>
Mon, 3 Oct 2011 17:13:38 +0000 (13:13 -0400)
Canceling lock may contain data being sent to OSTs. Change
find_cbdata iterator to take that into account.

Author: Vladimir Saveliev <vladimir.saveliev@oracle.com>
Signed-off-by: Bobi Jam <bobijam@whamcloud.com>
Change-Id: I1b30fe13ee5303fe3b98e45ad969f5273c41d676
Reviewed-on: http://review.whamcloud.com/1460
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/dcache.c

index c969ffe..3396978 100644 (file)
@@ -116,7 +116,9 @@ int ll_dcompare(struct dentry *parent, struct qstr *d_name, struct qstr *name)
 
 static inline int return_if_equal(struct ldlm_lock *lock, void *data)
 {
-        if (lock->l_flags & LDLM_FL_CANCELING)
+        if ((lock->l_flags &
+             (LDLM_FL_CANCELING | LDLM_FL_DISCARD_DATA)) ==
+            (LDLM_FL_CANCELING | LDLM_FL_DISCARD_DATA))
                 return LDLM_ITER_CONTINUE;
         return LDLM_ITER_STOP;
 }