Details
-
Bug
-
Resolution: Fixed
-
Major
-
None
-
None
-
3
-
9223372036854775807
Description
Recent runs showed the assertion below:
LustreError: 25386:0:(mdt_handler.c:950:mdt_big_xattr_get()) ASSERTION( info->mti_big_lmm_used == 0 ) failed: LustreError: 25386:0:(mdt_handler.c:950:mdt_big_xattr_get()) LBUG Pid: 25386, comm: mdt00_003 3.10.0-1062.18.1.el7_lustre.x86_64 #1 SMP Wed May 27 23:19:17 UTC 2020 Call Trace: [<ffffffffc08bf1dc>] libcfs_call_trace+0x8c/0xc0 [libcfs] [<ffffffffc08bf28c>] lbug_with_loc+0x4c/0xa0 [libcfs] [<ffffffffc11643a7>] mdt_big_xattr_get+0x667/0x830 [mdt] [<ffffffffc11647a7>] mdt_stripe_get+0x237/0x410 [mdt] [<ffffffffc118a92b>] mdt_reint_migrate+0x116b/0x16c0 [mdt] [<ffffffffc118af03>] mdt_reint_rec+0x83/0x210 [mdt] [<ffffffffc1163970>] mdt_reint_internal+0x710/0xae0 [mdt] [<ffffffffc116ed47>] mdt_reint+0x67/0x140 [mdt] [<ffffffffc0e3ac0a>] tgt_request_handle+0x96a/0x1640 [ptlrpc] [<ffffffffc0ddc216>] ptlrpc_server_handle_request+0x256/0xb10 [ptlrpc] [<ffffffffc0de0744>] ptlrpc_main+0xbb4/0x1550 [ptlrpc] [<ffffffff998c6321>] kthread+0xd1/0xe0 [<ffffffff99f8ed37>] ret_from_fork_nospec_end+0x0/0x39 [<ffffffffffffffff>] 0xffffffffffffffff
This is result of inappropriate usage of mti_big_lmm buffer in various places. Originally it was introduced to be used for getting big LOV/LMV EA and passing them to reply buffers. Meanwhile it is widely used now for internal server needs. These cases should be distinguished and if there is no intention to return EA in reply then flag {mti_big_lmm_used}} should not be set. Maybe it is worth to rename it as mti_big_lmm_keep to mark that is to be kept until reply is packed.