summaryrefslogtreecommitdiffstats
path: root/xlators/cluster/afr/src/afr-transaction.c
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2018-08-16 17:28:54 +0530
committerRavishankar N <ravishankar@redhat.com>2018-08-23 06:37:27 +0000
commit9ec821f9e67848b3527f6b7dc776cb9ba440610b (patch)
tree335c94f8daf40e255eaaf5ff3d7d532cec8b04fd /xlators/cluster/afr/src/afr-transaction.c
parent94cac2562ff32104d2cd6325396e55cae16ec743 (diff)
afr: common thin-arbiter functions
...that can be used by client and self-heal daemon, namely: afr_ta_post_op_lock() afr_ta_post_op_unlock() Note: These are not yet consumed. They will be used in the write txn changes patch which will introduce 2 domain locking. updates: bz#1579788 Change-Id: I636d50f8fde00736665060e8f9ee4510d5f38795 Signed-off-by: Ravishankar N <ravishankar@redhat.com>
Diffstat (limited to 'xlators/cluster/afr/src/afr-transaction.c')
-rw-r--r--xlators/cluster/afr/src/afr-transaction.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/xlators/cluster/afr/src/afr-transaction.c b/xlators/cluster/afr/src/afr-transaction.c
index 77398519ba0..9c587db0562 100644
--- a/xlators/cluster/afr/src/afr-transaction.c
+++ b/xlators/cluster/afr/src/afr-transaction.c
@@ -915,8 +915,10 @@ afr_fill_ta_loc (xlator_t *this, loc_t *loc)
loc->name = priv->pending_key[THIN_ARBITER_BRICK_INDEX];
gf_uuid_copy (loc->gfid, priv->ta_gfid);
loc->inode = inode_new (loc->parent->table);
- if (!loc->inode)
+ if (!loc->inode) {
+ loc_wipe(loc);
return -ENOMEM;
+ }
return 0;
}
@@ -943,8 +945,12 @@ afr_changelog_thin_arbiter_post_op (xlator_t *this, afr_local_t *local)
GF_ASSERT (failed_count == 1);
ret = afr_fill_ta_loc (this, &loc);
- if (ret)
+ if (ret) {
+ gf_msg (this->name, GF_LOG_ERROR, -ret, AFR_MSG_THIN_ARB,
+ "Failed to populate thin-arbiter loc for: %s.",
+ loc.name);
goto out;
+ }
xattr = dict_new ();
if (!xattr) {
@@ -965,7 +971,7 @@ afr_changelog_thin_arbiter_post_op (xlator_t *this, afr_local_t *local)
/*TODO: Convert to two domain locking. */
ret = syncop_inodelk (priv->children[THIN_ARBITER_BRICK_INDEX],
- THIN_ARBITER_DOM1, &loc, F_SETLKW, &flock,
+ AFR_TA_DOM_NOTIFY, &loc, F_SETLKW, &flock,
NULL, NULL);
if (ret)
goto out;
@@ -987,7 +993,7 @@ afr_changelog_thin_arbiter_post_op (xlator_t *this, afr_local_t *local)
}
flock.l_type = F_UNLCK;
syncop_inodelk (priv->children[THIN_ARBITER_BRICK_INDEX],
- THIN_ARBITER_DOM1, &loc, F_SETLKW, &flock, NULL, NULL);
+ AFR_TA_DOM_NOTIFY, &loc, F_SETLK, &flock, NULL, NULL);
out:
if (xattr)
dict_unref (xattr);