-
Notifications
You must be signed in to change notification settings - Fork 142
Fix crash of all ios processes in some write scenarios #1686
Conversation
4f65eff
to
d3ff93e
Compare
@andriytk : With following patch for motr utils ST, same crash can be reproduced.
I have update Layout id to 2, as with 1 after the fix is applied, fails with delete timeout errors due to large number of transactions. $./scripts/m0 run-st 42motr-utils
|
Thanks, @madhavemuri! Will add it. |
Asking @gshipra and @yatin-mahajan to review this patch. |
Thanks @huanghua78, good idea! |
d3ff93e
to
c2f8e32
Compare
Panic: ((cr->tc_balance[cu]) != 0) at btree_save() (be/btree.c:1393) Stack: Seagate#3 m0_panic() at lib/assert.c:52 Seagate#4 btree_save() at be/btree.c:339 Seagate#5 m0_be_btree_update() at be/btree.c:1952 Seagate#6 btree_update_sync() at balloc/balloc.c:95 Seagate#7 balloc_gi_sync() at balloc/balloc.c:928 Seagate#8 balloc_free_db_update() at balloc/balloc.c:1934 Seagate#9 balloc_free_internal() at balloc/balloc.c:2716 Seagate#10 balloc_free() at balloc/balloc.c:2929 Seagate#11 stob_ad_bfree() at stob/ad.c:1098 Seagate#12 stob_ad_seg_free (val=1594) at stob/ad.c:1647 Seagate#13 __lambda() at stob/ad.c:1719 Seagate#14 m0_be_emap_paste(val=1794) at be/extmap.c:628 Seagate#15 stob_ad_write_map_ext(off=464) at stob/ad.c:1731 Seagate#16 stob_ad_write_map(frags=18) at stob/ad.c:1858 Seagate#17 stob_ad_write_prepare() at stob/ad.c:2006 Seagate#18 stob_ad_io_launch_prepare() at stob/ad.c:2052 Seagate#19 m0_stob_io_prepare() at stob/io.c:178 Seagate#20 m0_stob_io_prepare_and_launch() at stob/io.c:226 Seagate#21 io_launch() at ioservice/io_foms.c:1837 Seagate#22 m0_io_fom_cob_rw_tick() at ioservice/io_foms.c:2333 Seagate#23 fom_exec() at fop/fom.c:791 Seagate#24 loc_handler_thread() at fop/fom.c:931 Setup: 1 node, 4+2+0 EC data pool with 10 disks. Scenario: write the same object twice like this: $ m0cp <motr-conn-params> -s 1m -c 40 -L 4 /dev/zero -o 0x12345678:0x678900207 $ m0cp <motr-conn-params> -s 1m -c 40 -L 4 /dev/zero -o 0x12345678:0x678900207 -u RCA: regression of BE credit calculation in stob_ad_write_credit() code was introduced at commit ab22d23. Solution: rollback the regression change. Co-authored-by: Madhavrao Vemuri <madhav.vemuri@seagate.com> Signed-off-by: Andriy Tkachuk <andriy.tkachuk@seagate.com>
c2f8e32
to
710f283
Compare
UTs failed:
But this looks like an old known issue - #1660. |
Shipra is no more working with Seagate. |
Hi @andriytk, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me.
Panic:
((cr->tc_balance[cu]) != 0) at btree_save() (be/btree.c:1393)
Stack is the same in all processes core files:
Setup: 1 node, 10 disks data pool with 4+2+0 EC.
Scenario: write the same object twice like this:
RCA: the regression of BE credit calculation in
stob_ad_write_credit()
code was introduced at commit ab22d23.Solution: rollback the regression change.
Closes #1678.
Coding
Checklist for Author
Testing
Checklist for Author
Impact Analysis
Checklist for Author/Reviewer/GateKeeper
Review Checklist
Checklist for Author
Documentation
Checklist for Author