From 5e7e12694e3898ef7bb5425827122c434a465ce8 Mon Sep 17 00:00:00 2001 From: Kotresh HR Date: Wed, 24 Dec 2014 21:26:28 +0530 Subject: feature/changelog: Virtual xattr to trigger explicit sync in geo-rep. A virtual xattr "glusterfs.geo-rep.trigger-sync" is provided in glusterfs through changelog translator. Geo-rep triggers a explicit data sync on setting this xattr on a file. Changelog captures a DATA entry on file's gfid on setting this virtual xattr on a file. This is supported only for files. It doesn't support directories. Usage: setfattr -n glusterfs.geo-rep.trigger-sync Change-Id: Ia689326ac2dcb31035ffbecad2c548eda4eb9245 BUG: 1176934 Signed-off-by: Kotresh HR Reviewed-on: http://review.gluster.org/9337 Tested-by: Gluster Build System Reviewed-by: Venky Shankar Tested-by: Venky Shankar --- xlators/features/changelog/src/changelog.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'xlators/features/changelog/src') diff --git a/xlators/features/changelog/src/changelog.c b/xlators/features/changelog/src/changelog.c index d2e30f7f001..e047288d43d 100644 --- a/xlators/features/changelog/src/changelog.c +++ b/xlators/features/changelog/src/changelog.c @@ -1326,6 +1326,17 @@ changelog_setxattr (call_frame_t *frame, CHANGELOG_INIT (this, frame->local, loc->inode, loc->inode->gfid, 1); + /* On setting this virtual xattr on a file, an explicit data + sync is triggered from geo-rep as DATA entry is recorded + in changelog. */ + if (dict_get (dict, GF_XATTR_TRIGGER_SYNC) + && loc->inode->ia_type != IA_IFDIR) { + changelog_update (this, priv, frame->local, + CHANGELOG_TYPE_DATA); + CHANGELOG_STACK_UNWIND (setxattr, frame, 0, 0, xdata); + return 0; + } + co = changelog_get_usable_buffer (frame->local); if (!co) goto wind; -- cgit