Whamcloud - gitweb
LU-9839 clio: lov active ios accounting fix 38/51638/10
authorAlexander Zarochentsev <alexander.zarochentsev@hpe.com>
Tue, 21 Nov 2023 14:46:44 +0000 (09:46 -0500)
committerOleg Drokin <green@whamcloud.com>
Fri, 23 Feb 2024 06:59:52 +0000 (06:59 +0000)
commit5bc1dd825b700677b002a43463a463c3ccb665ec
treed793b88a7a7ecb5795f610d62014ea3db4dcab85
parentdc13a56187f6787c23e7ba66c6187a9a6220c5f6
LU-9839 clio: lov active ios accounting fix

ASSERT(atomic_read(&lov->lo_active_ios)==0) is triggered due to a
bug in active_ios accounting. For some cl_io_init(,CIT_MISC,,)
calls increment the lov_active_ios counter is not protected by the
layout lock. So the checks for active_ios != 0 are racy and not
preventing another thread from starting new cl_io and incrementing
the active_ios counter after any check but before the assertion.

The lov_active_ios counter increment should be done under the
same condition as taking the layout type lock.
The ci_type=CIT_MISC and ci_ignore_layout=1 should not be used
in ll_dom_finish_open() as the I/O doesn't come
"from the osc layer" and may race with a layout change.

HPE-bug-id: LUS-11628
Signed-off-by: Alexander Zarochentsev <alexander.zarochentsev@hpe.com>
Change-Id: I35fda85b968b847a87e73dd36bbb1648c744d62c
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/51638
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Mikhail Pershin <mpershin@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Vitaly Fertman <vitaly.fertman@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/llite/file.c
lustre/lov/lov_io.c