From 85c4aa0615f161a9ff1c6b58a82b5a652eb83c43 Mon Sep 17 00:00:00 2001 From: vmallika Date: Mon, 17 Nov 2014 07:14:28 +0530 Subject: gluster/uss: Don't send failure when accessing snap with name same as entry-point name In a scenario, if the snap name is same as the snap-directory than cd to snaps/snaps fails. Send a lookup to snap-view server instead of failing Change-Id: Ie7b811815ff30961500592bbc8cdb514a9d76ef5 BUG: 1164613 Signed-off-by: vmallika Reviewed-on: http://review.gluster.org/9135 Tested-by: Gluster Build System Reviewed-by: Rajesh Joseph Reviewed-by: Avra Sengupta Reviewed-by: Krishnan Parthasarathi Tested-by: Krishnan Parthasarathi --- tests/bugs/bug-1164613.t | 36 ++++++++++++++++++++++ .../features/snapview-client/src/snapview-client.c | 16 ++-------- 2 files changed, 38 insertions(+), 14 deletions(-) create mode 100644 tests/bugs/bug-1164613.t diff --git a/tests/bugs/bug-1164613.t b/tests/bugs/bug-1164613.t new file mode 100644 index 00000000000..16b94a54632 --- /dev/null +++ b/tests/bugs/bug-1164613.t @@ -0,0 +1,36 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../snapshot.rc + +cleanup; +TEST verify_lvm_version; +TEST glusterd; +TEST pidof glusterd; + +TEST setup_lvm 1 + +TEST $CLI volume create $V0 $H0:$L1 +TEST $CLI volume start $V0 +TEST glusterfs -s $H0 --volfile-id=$V0 $M0 + +TEST touch $M0/testfile + +TEST $CLI snapshot config activate-on-create enable +TEST $CLI volume set $V0 features.uss enable +TEST $CLI volume set $V0 snapshot-directory snaps + +TEST $CLI snapshot create snaps $V0 + + +TEST ls $M0/snaps/snaps/testfile + +umount -f $M0 + +#Clean up +TEST $CLI snapshot delete snaps +TEST $CLI volume stop $V0 force +TEST $CLI volume delete $V0 + +cleanup; + diff --git a/xlators/features/snapview-client/src/snapview-client.c b/xlators/features/snapview-client/src/snapview-client.c index 5bb60d66dd6..5f58422c32e 100644 --- a/xlators/features/snapview-client/src/snapview-client.c +++ b/xlators/features/snapview-client/src/snapview-client.c @@ -312,26 +312,14 @@ svc_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, local->subvolume = subvolume; } } else { + subvolume = SECOND_CHILD (this); + local->subvolume = subvolume; if (parent_type == NORMAL_INODE) { - subvolume = SECOND_CHILD (this); - local->subvolume = subvolume; /* Indication of whether the lookup is happening on the entry point or not, to the snapview-server. */ SVC_ENTRY_POINT_SET (this, xdata, op_ret, op_errno, new_xdata, priv, ret, out); - } else { - /* Either error can be sent to application as - the entry point directory can exist only within - real directories and here the parent is a virtual - directory or send the call all the way to svs and - let it send the error back. For now it is sending - the error to application itself. (Saves the - network latency) - */ - op_ret = -1; - op_errno = ENOENT; - goto out; } } -- cgit