From cddc75e242140f8485e2377ce4e6dffe23123744 Mon Sep 17 00:00:00 2001 From: Ashish Pandey Date: Tue, 8 Sep 2015 12:27:50 +0530 Subject: features/snap : cleanup the root loc in statfs Problem : In svc_statfs function, wipe_loc is getting called on loc passed by nfs. This loc is being used by svc_stat which throws erro if loc->inode is NULL. Solution : wipe_loc should be called on local root_loc. Change-Id: I9cc5ee3b1bd9f352f2362a6d997b7b09051c0f68 BUG: 1260848 Signed-off-by: Ashish Pandey Reviewed-on: http://review.gluster.org/12123 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Pranith Kumar Karampuri --- tests/bugs/snapshot/bug-1260848.t | 25 ++++++++++++++++++++++ .../features/snapview-client/src/snapview-client.c | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/bugs/snapshot/bug-1260848.t diff --git a/tests/bugs/snapshot/bug-1260848.t b/tests/bugs/snapshot/bug-1260848.t new file mode 100644 index 00000000000..9963b293604 --- /dev/null +++ b/tests/bugs/snapshot/bug-1260848.t @@ -0,0 +1,25 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../nfs.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +## Start and create a volume +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 disperse 6 redundancy 2 $H0:$B0/${V0}{0..5} +TEST $CLI volume set $V0 uss on +TEST $CLI volume start $V0 + +## Wait for volume to register with rpc.mountd +EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available; + +## Mount NFS +TEST mount_nfs $H0:/$V0 $N0 nolock; + +TEST df -h $N0 + +cleanup; diff --git a/xlators/features/snapview-client/src/snapview-client.c b/xlators/features/snapview-client/src/snapview-client.c index 227916cf8bc..4a2bdfbd301 100644 --- a/xlators/features/snapview-client/src/snapview-client.c +++ b/xlators/features/snapview-client/src/snapview-client.c @@ -541,7 +541,7 @@ svc_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc, STACK_WIND_TAIL (frame, subvolume, subvolume->fops->statfs, temp_loc, xdata); - if (temp_loc) + if (temp_loc == &root_loc) loc_wipe (temp_loc); wind = _gf_true; -- cgit