diff options
| -rw-r--r-- | tests/bugs/bug-1164613.t | 34 | ||||
| -rw-r--r-- | tests/include.rc | 6 | ||||
| -rw-r--r-- | xlators/features/snapview-client/src/snapview-client.c | 16 | 
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;                  }          }  | 
