diff options
author | Kotresh HR <khiremat@redhat.com> | 2018-05-28 03:05:26 -0400 |
---|---|---|
committer | Kotresh HR <khiremat@redhat.com> | 2019-04-02 12:24:33 +0530 |
commit | e9429bdda11217d3565825f413873be1bcc3ed9f (patch) | |
tree | de6ba0c7e62569cfcf79c63ee7c284efcca2dba1 /xlators/cluster | |
parent | 5c2548456424b99d41fff2a7468660ba7c0da0aa (diff) |
cluster/dht: Fix rename journal in changelog
With patch [1], renames are journalled only
on cached subvolume. The dht sends the special
key on the cached subvolume so that the changelog
journals the rename. With single distribute
sub-volume, the key is not being set. This patch
fixes the same.
[1] https://review.gluster.org/10410
Backport of:
> Patch: https://review.gluster.org/20093
> BUG: 1583018
> Change-Id: Ic2e35b40535916fa506a714f257ba325e22d0961
> Signed-off-by: Kotresh HR <khiremat@redhat.com>
fixes: bz#1660225
Change-Id: Ic2e35b40535916fa506a714f257ba325e22d0961
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/dht/src/dht-rename.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c index 3dc042e3ce5..808749eac03 100644 --- a/xlators/cluster/dht/src/dht-rename.c +++ b/xlators/cluster/dht/src/dht-rename.c @@ -1701,6 +1701,7 @@ dht_rename (call_frame_t *frame, xlator_t *this, dht_local_t *local = NULL; dht_conf_t *conf = NULL; char gfid[GF_UUID_BUF_SIZE] = {0}; + gf_boolean_t free_xdata = _gf_false; VALIDATE_OR_GOTO (frame, err); VALIDATE_OR_GOTO (this, err); @@ -1710,7 +1711,17 @@ dht_rename (call_frame_t *frame, xlator_t *this, conf = this->private; if (conf->subvolume_cnt == 1) { + if (!IA_ISDIR (oldloc->inode->ia_type)) { + if (!xdata) { + free_xdata = _gf_true; + } + DHT_CHANGELOG_TRACK_AS_RENAME(xdata, oldloc, newloc); + } default_rename (frame, this, oldloc, newloc, xdata); + if (free_xdata && xdata) { + dict_unref(xdata); + xdata = NULL; + } return 0; } |