diff options
-rwxr-xr-x | tests/bugs/bug-1161156.t | 48 | ||||
-rw-r--r-- | xlators/cluster/dht/src/dht-rename.c | 2 |
2 files changed, 49 insertions, 1 deletions
diff --git a/tests/bugs/bug-1161156.t b/tests/bugs/bug-1161156.t new file mode 100755 index 00000000000..12ebc45bdd3 --- /dev/null +++ b/tests/bugs/bug-1161156.t @@ -0,0 +1,48 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../nfs.rc + +function usage() +{ + local QUOTA_PATH=$1; + $CLI volume quota $V0 list $QUOTA_PATH | \ + grep "$QUOTA_PATH" | awk '{print $4}' +} + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info; + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2,3,4,5,6}; +EXPECT 'Created' volinfo_field $V0 'Status'; + +TEST $CLI volume start $V0; +EXPECT 'Started' volinfo_field $V0 'Status'; + +# Testing with NFS for no particular reason +EXPECT_WITHIN $NFS_EXPORT_TIMEOUT 1 is_nfs_export_available +TEST mount_nfs $H0:/$V0 $N0 +mydir="dir" +TEST mkdir -p $N0/$mydir + +TEST dd if=/dev/zero of=$N0/$mydir/file bs=1k count=10240 + +TEST $CLI volume quota $V0 enable +TEST $CLI volume quota $V0 limit-usage / 20MB +TEST $CLI volume quota $V0 soft-timeout 0 +TEST $CLI volume quota $V0 hard-timeout 0 + +TEST dd if=/dev/zero of=$N0/$mydir/newfile_1 bs=512 count=10240 +# wait for write behind to complete. +EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "15.0MB" usage "/" +TEST ! dd if=/dev/zero of=$N0/$mydir/newfile_2 bs=1k count=10240 + +# Test the rename, it should fail due to space restrictions +TEST ! mv $N0/dir/file $N0/dir/newfile_3 + +# cleanup +umount_nfs $N0 +cleanup; diff --git a/xlators/cluster/dht/src/dht-rename.c b/xlators/cluster/dht/src/dht-rename.c index eac3975ccbe..c8a05a3939d 100644 --- a/xlators/cluster/dht/src/dht-rename.c +++ b/xlators/cluster/dht/src/dht-rename.c @@ -642,7 +642,7 @@ dht_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, if (op_ret == -1) { /* Critical failure: unable to rename the cached file */ - if (src_cached == dst_cached) { + if (prev->this == src_cached) { gf_msg (this->name, GF_LOG_WARNING, op_errno, DHT_MSG_RENAME_FAILED, "%s: Rename on %s failed, (gfid = %s) ", |