summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/bug-1164613.t34
-rw-r--r--tests/include.rc6
-rw-r--r--xlators/features/snapview-client/src/snapview-client.c16
3 files changed, 42 insertions, 14 deletions
diff --git a/tests/bugs/bug-1164613.t b/tests/bugs/bug-1164613.t
new file mode 100644
index 00000000000..b7b27f1d649
--- /dev/null
+++ b/tests/bugs/bug-1164613.t
@@ -0,0 +1,34 @@
+#!/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 create snaps $V0
+TEST $CLI snapshot activate snaps
+TEST $CLI volume set $V0 features.uss enable
+TEST $CLI volume set $V0 snapshot-directory snaps
+
+EXPECT_WITHIN $PROCESS_UP_TIMEOUT "0" STAT $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/tests/include.rc b/tests/include.rc
index 5640ab08fbe..599ad1bd4c2 100644
--- a/tests/include.rc
+++ b/tests/include.rc
@@ -325,6 +325,12 @@ function process_leak_count ()
return $(ls -lh /proc/$pid/fd | grep "(deleted)"| wc -l)
}
+function STAT()
+{
+ stat $1
+ echo $?
+}
+
alias EXPECT='_EXPECT $LINENO'
alias EXPECT_NOT='_EXPECT_NOT $LINENO'
alias TEST='_TEST $LINENO'
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;
}
}