summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglusterfs/src/lkowner.h19
-rw-r--r--xlators/features/marker/src/marker.c3
2 files changed, 22 insertions, 0 deletions
diff --git a/libglusterfs/src/lkowner.h b/libglusterfs/src/lkowner.h
index 969d13e..cf1e471 100644
--- a/libglusterfs/src/lkowner.h
+++ b/libglusterfs/src/lkowner.h
@@ -80,4 +80,23 @@ is_same_lkowner (gf_lkowner_t *l1, gf_lkowner_t *l2)
return ((l1->len == l2->len) && !memcmp(l1->data, l2->data, l1->len));
}
+static inline int
+is_lk_owner_null (gf_lkowner_t *lkowner)
+{
+ int is_null = 1;
+ int i = 0;
+
+ if (lkowner == NULL || lkowner->len == 0)
+ goto out;
+
+ for (i = 0; i < lkowner->len; i++) {
+ if (lkowner->data[i] != 0) {
+ is_null = 0;
+ break;
+ }
+ }
+out:
+ return is_null;
+}
+
#endif /* _LK_OWNER_H */
diff --git a/xlators/features/marker/src/marker.c b/xlators/features/marker/src/marker.c
index 1814cdc..8e026ec 100644
--- a/xlators/features/marker/src/marker.c
+++ b/xlators/features/marker/src/marker.c
@@ -1575,6 +1575,9 @@ marker_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
lock.l_type = F_WRLCK;
lock.l_whence = SEEK_SET;
+ if (is_lk_owner_null (&frame->root->lk_owner))
+ set_lk_owner_from_ptr (&frame->root->lk_owner, frame->root);
+
STACK_WIND (frame,
marker_rename_inodelk_cbk,
FIRST_CHILD(this),