Details
-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Lustre 2.14.0, Lustre 2.16.1
-
None
-
3
-
9223372036854775807
Description
OSS IO pages that are allocated for readcache can deadlock under memory pressure. As the comment says, this should try less hard for page cache allocations to avoid the deadlock:
/* this could also try less hard for DT_BUFS_TYPE_READAHEAD pages */
gfp_mask = rw & DT_BUFS_TYPE_LOCAL ? (GFP_NOFS | __GFP_HIGHMEM) :
GFP_HIGHUSER;
lnb->lnb_page = osd_get_page(env, dt, lnb->lnb_file_offset,
gfp_mask, cache);
static struct page *osd_get_page(const struct lu_env *env, struct dt_object *dt, loff_t offset, gfp_t gfp_mask, bool cache) { if (cache) { page = find_or_create_page(inode->i_mapping, offset >> PAGE_SHIFT, gfp_mask);
Maybe __GFP_RETRY_MAYFAIL would be suitable to use in all cases, since the IO can always fall back to the per-thread buffer if the cache allocation fails.