diff options
author | Pranith Kumar K <pkarampu@redhat.com> | 2013-06-27 12:59:14 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-06-27 23:34:29 -0700 |
commit | 0c05cde4a16c426089933803d082183227422307 (patch) | |
tree | 78c6d3646e6d1aba4827b0cc77015f7054474ca3 /tests/bugs | |
parent | 4bea8a2cfeaa8e037c6566b6a192bc31a2c004ca (diff) |
cluster/afr: Handle NULL fdctx in fsync
Problem:
If fdctx is NULL in afr_fsync, process crashes because
of NULL dereference.
Fix:
if fdctx is NULL, always say witnessed unstable write so
that fsyncs are done properly. Handled fdctx being null
in afr_delayed_changelog_post_op otherwise fsync stub is
never resumed and the mount was hanging.
Change-Id: Icacc900e9be63c29db3325cb0e19cc250adebaac
BUG: 978794
Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Reviewed-on: http://review.gluster.org/5258
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'tests/bugs')
-rw-r--r-- | tests/bugs/bug-978794.t | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/bugs/bug-978794.t b/tests/bugs/bug-978794.t new file mode 100644 index 00000000000..d22d3cde33d --- /dev/null +++ b/tests/bugs/bug-978794.t @@ -0,0 +1,29 @@ +#!/bin/bash +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../fileio.rc + + +# This test opens 100 fds and triggers graph switches to check if fsync +# as part of graph-switch causes crash or not. + +cleanup; + +TEST glusterd +TEST pidof glusterd +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{0,1} +TEST $CLI volume start $V0 +TEST glusterfs --volfile-id=/$V0 --volfile-server=$H0 $M0 +TEST touch $M0/{1..100} +for i in {1..100}; do fd[$i]=`fd_available`; fd_open ${fd[$i]} 'w' $M0/$i; done +TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{2,3} +TEST $CLI volume rebalance $V0 start force +EXPECT_WITHIN 120 "completed" rebalance_status_field $V0 +TEST cat $M0/{1..100} +for i in {1..100}; do fd_write ${fd[$i]} 'abc'; done +TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{4,5} +TEST $CLI volume rebalance $V0 start force +EXPECT_WITHIN 120 "completed" rebalance_status_field $V0 +for i in {1..100}; do fd_write ${fd[$i]} 'abc'; done +TEST cat $M0/{1..100} +cleanup |