From 6e912edf580252d4eb967a5bffedbb1f42931a21 Mon Sep 17 00:00:00 2001 From: Poornima G Date: Thu, 25 Aug 2016 10:25:24 +0530 Subject: [PATCH 121/141] md-cache: Do not use features.cache-invalidation for both md-cache and upcall Currently, the volume set option features.cache-invalidation enables upcall feature on server side and md-cache cache-invalidation on client side. There are multiple problems that can arise from this: 1. The scenario when user wants to, enable upcall for nfs-ganesha setup, but do not want to enable md-cache cache-invalidation, as the nfs-clients have already cached the metadata and upcall is used to to invalidate the nfs-client cache. In this case, users should have a way of disabling md-cache invalidation without disabling upcall. 2. Upcall requires a op-version of GD_OP_VERSION_3_7_0, where as md-cache invalidation requires an op version of GD_OP_VERSION_3_9_0. Consider a setup where the servers are in op-version GD_OP_VERSION_3_7_0, and th clients are in op-version GD_OP_VERSION_3_9_0. if there is one single volume set option, user can enable this feature in this setup. But it can lead to stale xattr cache as the xattr invalidation was introduced in upcall only in release 3.8. Hence, we should not be able to enable md-cache invalidation, if all the servers and clients are not on opversion >= GD_OP_VERSION_3_9_0. To solve the above mentioned issues, we have seperate volume options for enabling md-cache invalidation and upcall. But this can lead to issues when user enable md-cache invalidation and forgets to enable upcall. Probably in the next release, these can be enables by default. Change-Id: Ie70eff97fe12fcb623eec8f4f5861ac065bf483e BUG: 1284873 Signed-off-by: Poornima G Reviewed-on: http://review.gluster.org/15314 NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Smoke: Gluster Build System Reviewed-by: soumya k Reviewed-by: Raghavendra G Reviewed-on: https://code.engineering.redhat.com/gerrit/87034 Reviewed-by: Rajesh Joseph Tested-by: Rajesh Joseph --- tests/bugs/md-cache/bug-1211863.t | 7 ++++--- xlators/mgmt/glusterd/src/glusterd-volume-set.c | 2 +- xlators/performance/md-cache/src/md-cache.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/bugs/md-cache/bug-1211863.t b/tests/bugs/md-cache/bug-1211863.t index 4fa9e33..ece42fe 100644 --- a/tests/bugs/md-cache/bug-1211863.t +++ b/tests/bugs/md-cache/bug-1211863.t @@ -42,16 +42,17 @@ EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M1 TEST $CLI volume set $V0 features.cache-invalidation on TEST $CLI volume set $V0 features.cache-invalidation-timeout 600 +TEST $CLI volume set $V0 performance.cache-invalidation on -## 18. Restart the volume to restart the bick process +## 19. Restart the volume to restart the bick process TEST $CLI volume stop $V0 TEST $CLI volume start $V0 -## 20. Create two gluster mounts +## 21. Create two gluster mounts TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M1 -## 22. Repeat the tests 11-14, but this time since cache invalidation is on, +## 23. Repeat the tests 11-14, but this time since cache invalidation is on, #the getxattr will reflect the new value TEST "setfattr -n user.DOSATTRIB -v "abc" $M0/file1" TEST "getfattr -n user.DOSATTRIB $M1/file1 | grep -q abc" diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-set.c b/xlators/mgmt/glusterd/src/glusterd-volume-set.c index de7bcb4..a293021 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-set.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-set.c @@ -1967,7 +1967,7 @@ struct volopt_map_entry glusterd_volopt_map[] = { .op_version = 2, .flags = OPT_FLAG_CLIENT_OPT }, - { .key = "features.cache-invalidation", + { .key = "performance.cache-invalidation", .voltype = "performance/md-cache", .option = "cache-invalidation", .op_version = GD_OP_VERSION_3_9_0, diff --git a/xlators/performance/md-cache/src/md-cache.c b/xlators/performance/md-cache/src/md-cache.c index ab6dcff..ab9860b 100644 --- a/xlators/performance/md-cache/src/md-cache.c +++ b/xlators/performance/md-cache/src/md-cache.c @@ -2811,8 +2811,8 @@ struct volume_options options[] = { { .key = {"cache-invalidation"}, .type = GF_OPTION_TYPE_BOOL, .default_value = "false", - .description = "When \"on\", invalidates/updates the metadata cache " - "on receiving of the cache-invalidation notifications", + .description = "When \"on\", invalidates/updates the metadata cache," + " on receiving the cache-invalidation notifications", }, { .key = {NULL} }, }; -- 1.7.1