NFS: Avoid writeback threads getting stuck in mempool_alloc()
In a low memory situation, allow the NFS writeback code to fail without getting stuck in infinite loops in mempool_alloc(). Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
@@ -94,9 +94,15 @@ EXPORT_SYMBOL_GPL(nfs_commit_free);
|
||||
|
||||
static struct nfs_pgio_header *nfs_writehdr_alloc(void)
|
||||
{
|
||||
struct nfs_pgio_header *p = mempool_alloc(nfs_wdata_mempool, GFP_KERNEL);
|
||||
struct nfs_pgio_header *p;
|
||||
|
||||
memset(p, 0, sizeof(*p));
|
||||
p = kmem_cache_zalloc(nfs_wdata_cachep, nfs_io_gfp_mask());
|
||||
if (!p) {
|
||||
p = mempool_alloc(nfs_wdata_mempool, GFP_NOWAIT);
|
||||
if (!p)
|
||||
return NULL;
|
||||
memset(p, 0, sizeof(*p));
|
||||
}
|
||||
p->rw_mode = FMODE_WRITE;
|
||||
return p;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user