I'm tripping an ASSERT in xfs_trans_get_buf every so often.
The code path in question gets hit very infrequently, and I've
never seen the code path get used when the ASSERT passes.
XFS assertion failed: XFS_BUF_ISDELAYWRITE(bp),
file: xfs_trans_buf.c, line: 166
else if (XFS_BUF_ISSTALE(bp)) {
xfs_buftrace("TRANS GET RECUR STALE", bp);
-> ASSERT(XFS_BUF_ISDELAYWRITE(bp));
}
Can anyone explain what this path is for and why there's an assertion
that the buffer must have the delayed write flag set?
I'll try to get a good test for this checked in.
kdb bt output:
0xc1b898c8 0xc4884069 [xfs]assfail+0x2d (0xc48a263c, 0xc48a25d7, 0xa6)
xfs .text 0xc4816060 0xc488403c 0xc4884070
0xc1b898ec 0xc4873c92 [xfs]xfs_trans_get_buf+0x142 (0xc0d1855c, 0xc227657c,
0x348e8, 0x0, 0x8)
xfs .text 0xc4816060 0xc4873b50 0xc4873e4c
0xc1b89924 0xc48369a6 [xfs]xfs_btree_get_bufl+0x62 (0xc2276400, 0xc0d1855c,
0x84b5, 0x0, 0x0)
xfs .text 0xc4816060 0xc4836944 0xc4836a08
0xc1b899d0 0xc482abec [xfs]xfs_bmap_extents_to_btree+0x338 (0xc0d1855c,
0xc3dc95a0, 0xc1b89d84, 0xc1b89dfc, 0xc1b89a50)
xfs .text 0xc4816060 0xc482a8b4 0xc482ae34
0xc1b89ab0 0xc48257fb [xfs]xfs_bmap_add_extent_delay_real+0xa37 (0xc3dc95a0,
0x9, 0xc1b89b08, 0xc1b89c6c, 0xc1b89b0c)
xfs .text 0xc4816060 0xc4824dc4 0xc4825f90
0xc1b89b34 0xc4824b29 [xfs]xfs_bmap_add_extent+0x281 (0xc3dc95a0, 0x9,
0xc1b89c3c, 0xc1b89c6c, 0xc1b89d84)
xfs .text 0xc4816060 0xc48248a8 0xc4824dc4
0xc1b89cd8 0xc482d9c6 [xfs]xfs_bmapi+0xafa (0xc0d1855c, 0xc3dc95a0, 0xb7, 0x0,
0x8)
xfs .text 0xc4816060 0xc482cecc 0xc482e838
0xc1b89e08 0xc488abec [xfs]xfs_iomap_write_convert+0x3dc (0xc3dc96ec, 0xba000,
0x0, 0x1000, 0xc1b89fa4)
xfs .text 0xc4816060 0xc488a810 0xc488b0b4
0xc1b89ec8 0xc48898af [xfs]xfs_iomap_write+0x12b (0xc3dc96ec, 0xba000, 0x0,
0x1000, 0xc1b89fa4)
xfs .text 0xc4816060 0xc4889784 0xc48899bc
0xc1b89f08 0xc48892ca [xfs]xfs_bmap+0x26e (0xc3dc95b8, 0xba000, 0x0, 0x1000,
0x10010002)
|