-
Bug
-
Resolution: Unresolved
-
Medium
-
None
-
3
-
9223372036854775807
lseek(fd, off, SEEK_DATA) and SEEK_HOLE on an EC file in RDONLY state with a data stripe on an unavailable (unmounted, failing over) OST block in ll_lseek() (CIT_LSEEK) until the OST returns, even though reads of the same file are rebuilt from parity without delay. See the LU-20212 test results.
osc_lock_enqueue < cl_lock_enqueue < lov_lock_enqueue < cl_lock_enqueue < cl_lock_request < cl_io_lock < cl_io_loop < ll_lseek < ll_file_seek
64086 (LU-12668) handles an OST that is deactivated (-ESHUTDOWN) but not one that is down and still active, which waits in the enqueue.
Reporting the whole extent of an unavailable stripe as data is always correct for SEEK_DATA/SEEK_HOLE, so the lseek could use a no-delay enqueue and treat an unavailable stripe that way (or use the parity stripes' extents) instead of waiting for the OST.