[Bugs] [Bug 1225323] New: Glusterfs client crash during fd migration after graph switch
bugzilla at redhat.com
bugzilla at redhat.com
Wed May 27 06:38:08 UTC 2015
https://bugzilla.redhat.com/show_bug.cgi?id=1225323
Bug ID: 1225323
Summary: Glusterfs client crash during fd migration after graph
switch
Product: GlusterFS
Version: mainline
Component: unclassified
Assignee: bugs at gluster.org
Reporter: rgowdapp at redhat.com
CC: bugs at gluster.org, gluster-bugs at redhat.com
Description of problem:
(gdb) bt
#0 0x00007fe56cb27503 in dht_fsync (frame=0x7fe576d701c4, this=<optimized
out>, fd=0x7fe560002cec, datasync=0, xdata=0x0)
at ../../../../../xlators/cluster/dht/src/dht-inode-read.c:818
#1 0x00007fe56c8db4b8 in wb_fsync (frame=0x7fe576d70118, this=0x7fe56800a2e0,
fd=0x7fe560002cec, datasync=0, xdata=0x0)
at ../../../../../xlators/performance/write-behind/src/write-behind.c:1523
#2 0x00007fe56c6ccb3a in ra_fsync (frame=0x7fe576d7006c, this=0x7fe56800b6b0,
fd=0x7fe560002cec, datasync=0, xdata=0x0)
at ../../../../../xlators/performance/read-ahead/src/read-ahead.c:628
#3 0x00007fe577eefb1d in default_fsync (frame=0x7fe576d7006c,
this=0x7fe56800c9e0, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../libglusterfs/src/defaults.c:1817
#4 0x00007fe577eefb1d in default_fsync (frame=0x7fe576d7006c,
this=0x7fe56800dde0, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../libglusterfs/src/defaults.c:1817
#5 0x00007fe577eefb1d in default_fsync (frame=0x7fe576d7006c,
this=0x7fe56800f0d0, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../libglusterfs/src/defaults.c:1817
#6 0x00007fe577efab3b in default_fsync_resume (frame=0x7fe576d70a80,
this=0x7fe568010540, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../libglusterfs/src/defaults.c:1376
#7 0x00007fe577f14fdd in call_resume (stub=0x7fe5767f7dd4) at
../../../libglusterfs/src/call-stub.c:2576
#8 0x00007fe567dfa578 in open_and_resume (this=this at entry=0x7fe568010540,
fd=fd at entry=0x7fe560002cec, stub=0x7fe5767f7dd4)
at ../../../../../xlators/performance/open-behind/src/open-behind.c:241
#9 0x00007fe567dfa922 in ob_fsync (frame=0x7fe576d70a80, this=0x7fe568010540,
fd=0x7fe560002cec, flag=<optimized out>, xdata=<optimized out>)
at ../../../../../xlators/performance/open-behind/src/open-behind.c:498
#10 0x00007fe567becbaf in mdc_fsync (frame=0x7fe576d709d4, this=0x7fe5680118d0,
fd=0x7fe560002cec, datasync=0, xdata=0x0)
at ../../../../../xlators/performance/md-cache/src/md-cache.c:1669
#11 0x00007fe5679d0f76 in io_stats_fsync (frame=0x7fe576d70270,
this=0x7fe568012c90, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../../../xlators/debug/io-stats/src/io-stats.c:2207
#12 0x00007fe577eefb1d in default_fsync (frame=0x7fe576d70270,
this=0x7fe568014160, fd=0x7fe560002cec, flags=0, xdata=0x0)
at ../../../libglusterfs/src/defaults.c:1817
#13 0x00007fe577f3040a in syncop_fsync (subvol=subvol at entry=0x7fe568014160,
fd=fd at entry=0x7fe560002cec, dataonly=dataonly at entry=0,
xdata_in=xdata_in at entry=0x0, xdata_out=xdata_out at entry=0x0) at
../../../libglusterfs/src/syncop.c:2280
#14 0x00007fe56fe0257a in fuse_migrate_fd (this=this at entry=0x1661700,
basefd=basefd at entry=0x7fe560002cec,
old_subvol=old_subvol at entry=0x7fe568014160,
new_subvol=new_subvol at entry=0x7fe560030be0)
at ../../../../../xlators/mount/fuse/src/fuse-bridge.c:4423
#15 0x00007fe56fe0271d in fuse_handle_opened_fds (this=0x1661700,
old_subvol=0x7fe568014160, new_subvol=0x7fe560030be0)
at ../../../../../xlators/mount/fuse/src/fuse-bridge.c:4508
#16 0x00007fe56fe027c9 in fuse_graph_switch_task (data=<optimized out>) at
../../../../../xlators/mount/fuse/src/fuse-bridge.c:4559
---Type <return> to continue, or q <return> to quit---q
Quit
(gdb) f 0
#0 0x00007fe56cb27503 in dht_fsync (frame=0x7fe576d701c4, this=<optimized
out>, fd=0x7fe560002cec, datasync=0, xdata=0x0)
at ../../../../../xlators/cluster/dht/src/dht-inode-read.c:818
818 STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync,
(gdb) l
813 local->call_cnt = 1;
814 local->rebalance.flags = datasync;
815
816 subvol = local->cached_subvol;
817
818 STACK_WIND (frame, dht_fsync_cbk, subvol, subvol->fops->fsync,
819 fd, datasync, xdata);
820
821 return 0;
822
(gdb) p subvol
$1 = (xlator_t *) 0x0
Version-Release number of selected component (if applicable):
master
How reproducible:
Fairly consistently in some setups
Steps to Reproduce:
1. run ./tests/performance/open-behind.t in a loop. Sometimes Gluster mount
crashes after we switch open-behind off. The crash is seen when when
"num_graphs" is executed.
2.
3.
Actual results:
Expected results:
Additional info:
RCA: Its a race. If a graph switch happens when we have an fd opened under
".meta" subtree, crash is seen when migrating that fd. meta-fsync is not
implemented and hence call is wound to real volume. Other translators have no
idea of handling this virtual inode. Fix is to implement fsync in meta. As a
complete fix, meta should implement all fops, so that it can check whether an
inode belongs to it or not and wind the call down only if it does not belong to
itself.
--
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.
More information about the Bugs
mailing list