summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmar Tumballi <amarts@redhat.com>2018-02-01 22:56:09 +0530
committerAmar Tumballi <amarts@redhat.com>2018-02-01 23:49:43 +0530
commitc436e142592a09a25f06cf0ce3549ce27a242860 (patch)
tree3028141c39f2bc2e15a9ede854f906022e4cbfc3
parent34d2c9de7d6f652bdc5d601249fc1de26999a46d (diff)
sdfs: crash fixes
* from the patch which got tested in experimental branch, there was a code cleanup involved, which missed setting of a local variable, which led to crash immediately after enabling the feature. * added a sanity test case to validate all the fops of sdfs. Updates: #397 Change-Id: I7e0bebfc195c344620577cb16c1afc5f4e7d2d92 BUG: 1541117 Signed-off-by: Amar Tumballi <amarts@redhat.com>
-rw-r--r--tests/basic/sdfs-sanity.t22
-rw-r--r--xlators/features/sdfs/src/sdfs.c22
2 files changed, 36 insertions, 8 deletions
diff --git a/tests/basic/sdfs-sanity.t b/tests/basic/sdfs-sanity.t
new file mode 100644
index 00000000000..f25376c3cad
--- /dev/null
+++ b/tests/basic/sdfs-sanity.t
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+. $(dirname $0)/../include.rc
+. $(dirname $0)/../volume.rc
+
+cleanup;
+
+TEST glusterd
+TEST pidof glusterd
+
+TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{1,2,3,4,5,6,7,8,9};
+TEST $CLI volume set $V0 features.sdfs enable;
+TEST $CLI volume start $V0;
+
+## Mount FUSE
+TEST $GFS -s $H0 --volfile-id $V0 $M1;
+
+# This test covers lookup, mkdir, mknod, symlink, link, rename,
+# create operations
+TEST $(dirname $0)/rpc-coverage.sh $M1
+
+cleanup;
diff --git a/xlators/features/sdfs/src/sdfs.c b/xlators/features/sdfs/src/sdfs.c
index 3b70dce5d27..0c45cad6238 100644
--- a/xlators/features/sdfs/src/sdfs.c
+++ b/xlators/features/sdfs/src/sdfs.c
@@ -263,7 +263,8 @@ sdfs_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -355,7 +356,8 @@ sdfs_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -452,7 +454,8 @@ sdfs_create (call_frame_t *frame, xlator_t *this, loc_t *loc,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -544,7 +547,8 @@ sdfs_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -639,7 +643,8 @@ sdfs_symlink (call_frame_t *frame, xlator_t *this, const char *linkname,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -861,7 +866,6 @@ sdfs_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
local->main_frame = frame;
-
lock = GF_CALLOC (1, sizeof (*lock), gf_common_mt_char);
if (!lock)
goto err;
@@ -986,7 +990,8 @@ sdfs_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),
@@ -1279,7 +1284,8 @@ sdfs_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,
goto err;
}
- ((sdfs_local_t *)new_frame->local)->stub = stub;
+ local = new_frame->local;
+ local->stub = stub;
STACK_WIND (new_frame, sdfs_entrylk_cbk,
FIRST_CHILD (this),