Whamcloud - gitweb
EX-3636 pcc: reset file mmaping for the file once mmaped
For a file once mmaped and cached on PCC, a new open will set the
mapping for the file handle of PCC copy (@file->f_mapping) with
the one of the Lustre file handle. When the file is detached from
PCC due to manual detach or layout lock shrinking, the normal I/O
(read/write) will auto-attach the file into PCC again during I/O
as the layout version is unchanged. However, it still needs to
reset the file mapping (@pcc_file->f_mapping) with the mapping of
the PCC copy. Otherwise it will cause panic as follows:
[ 935.516823] RIP: 0010:_raw_read_lock+0xa/0x20
[ 935.517077] ll_cl_find+0x19/0x60 [lustre]
[ 935.517098] ll_readpage+0x51/0x820 [lustre]
[ 935.517110] read_pages+0x122/0x190
[ 935.517119] __do_page_cache_readahead+0x1c1/0x1e0
[ 935.517131] ondemand_readahead+0x1f9/0x2c0
[ 935.517142] pagecache_get_page+0x30/0x2c0
[ 935.517165] generic_file_buffered_read+0x556/0xa00
[ 935.517189] pcc_try_auto_attach+0x3ac/0x400 [lustre]
[ 935.517552] pcc_io_init+0x146/0x560 [lustre]
[ 935.517906] pcc_file_read_iter+0x24d/0x2b0 [lustre]
[ 935.518259] ll_file_read_iter+0x74/0x2e0 [lustre]
[ 935.518604] new_sync_read+0x121/0x170
[ 935.518937] vfs_read+0x8a/0x140
This patch adds sanity-pcc test_98 to verify it.
I/O for a file previously opened before attach into PCC or once
opened while in ATTACHING state will fallback to Lustre OSTs.
For the later mmap() on the file, the mmap() I/O also needs to
fallback to Lustre OSTs and cannot read directly from local valid
cached PCC copy until all fallback file handles are closed as the
mapping of the PCC copy is replaced with the one of Lustre file
when mmapped a file.
Add sanity-pcc test_97 to verify it.
And we also forbid to auto attach the file which is still in
mmapped I/O.
This patch disables "mmap_conv" by default.
Test-Parameters: testlist=sanity-pcc,sanity-pcc,sanity-pcc
Signed-off-by: Qian Yingjin <qian@ddn.com>
Change-Id: I11195b0bdb6fb1d0d68d0b0cd02a0af8ee1fc297
Reviewed-on: https://review.whamcloud.com/44592
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>