summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xtests/bugs/bug-1161156.t48
-rw-r--r--xlators/cluster/dht/src/dht-rename.c2
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) ",