Details
-
Bug
-
Resolution: Unresolved
-
Medium
-
None
-
None
-
None
-
3
-
9223372036854775807
Description
"LU-16043 osc: allow error for write on CL_FSYNC_DISCARD" makes osc_io_fsync_start() to not error in case of CL_FSYNC_DISCARD:
@@ -967,6 +967,13 @@ int osc_io_fsync_start(const struct lu_env *env, result = osc_cache_writeback_range(env, osc, start, end, 0, fio->fi_mode == CL_FSYNC_DISCARD); + if (result < 0 && fio->fi_mode == CL_FSYNC_DISCARD) { + CDEBUG(D_CACHE, + "%s: ignore error %d on discarding "DFID":[%lu-%lu]\n", + cli_name(osc_cli(osc)), result, PFID(fio->fi_fid), + start, end); + result = 0; + } if (result > 0) { fio->fi_nr_written += result; result = 0;
The same should be done in mdc_io_fsync_start():
static int mdc_io_fsync_start(const struct lu_env *env, const struct cl_io_slice *slice) .. result = osc_cache_writeback_range(env, osc, 0, CL_PAGE_EOF, 0, fio->fi_mode == CL_FSYNC_DISCARD); if (result > 0) { fio->fi_nr_written += result; result = 0; }
If mdc_io_fsync_start() returned an error running for ll_delete_inode()->cl_sync_file_range(), that would cause the LBUG in osc_page_delete():
[ 1647.787680] LustreError: lustre-MDT0000-mdc-ffff97980c315800: operation ost_write to node 192.168.176.171@tcp failed: rc = -3 .. [ 1647.831003] LustreError: 14269:0:(osc_page.c:144:osc_page_delete()) Trying to teardown failed: -16 [ 1647.834241] LustreError: 14269:0:(osc_page.c:146:osc_page_delete()) ASSERTION( 0 ) failed: