From a6aaf29d57274c452de057cb8d7b4bf4da0466b1 Mon Sep 17 00:00:00 2001 From: Susant Palai Date: Thu, 18 Jan 2018 13:06:12 +0530 Subject: cluster/dht: avoid overwriting client writes during migration For more details on this issue see https://github.com/gluster/glusterfs/issues/308 Solution: This is a restrictive solution where a file will not be migrated if a client writes to it during the migration. This does not check if the writes from the rebalance and the client actually do overlap. If dht_writev_cbk finds that the file is being migrated (PHASE1) it will set an xattr on the destination file indicating the file was updated by a non-rebalance client. Rebalance checks if any other client has written to the dst file and aborts the file migration if it finds the xattr. updates gluster/glusterfs#308 Change-Id: I73aec28bc9dbb8da57c7425ec88c6b6af0fbc9dd Signed-off-by: Susant Palai Signed-off-by: Raghavendra G Signed-off-by: N Balachandran (cherry picked from commit 545a7ce6762a1b3a7b989b43a9d18b5b1b299df0) --- xlators/mgmt/glusterd/src/glusterd-volume-set.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'xlators/mgmt') diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index b87f6aa8cd7..674769c0b8f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -1349,6 +1349,14 @@ struct volopt_map_entry glusterd_volopt_map[] = { .flags = VOLOPT_FLAG_CLIENT_OPT, }, + { .key = "cluster.force-migration", + .voltype = "cluster/distribute", + .option = "force-migration", + .value = "off", + .op_version = GD_OP_VERSION_4_0_0, + .flags = VOLOPT_FLAG_CLIENT_OPT, + }, + /* NUFA xlator options (Distribute special case) */ { .key = "cluster.nufa", .voltype = "cluster/distribute", -- cgit