xprtrdma: Ensure creating an MR does not trigger FS writeback
Probably would be good to also pass GFP flags to ib_alloc_mr. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
3b39f52a02
commit
805a1f620b
|
@ -147,11 +147,14 @@ int frwr_init_mr(struct rpcrdma_ia *ia, struct rpcrdma_mr *mr)
|
||||||
struct ib_mr *frmr;
|
struct ib_mr *frmr;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
/* NB: ib_alloc_mr and device drivers typically allocate
|
||||||
|
* memory with GFP_KERNEL.
|
||||||
|
*/
|
||||||
frmr = ib_alloc_mr(ia->ri_pd, ia->ri_mrtype, depth);
|
frmr = ib_alloc_mr(ia->ri_pd, ia->ri_mrtype, depth);
|
||||||
if (IS_ERR(frmr))
|
if (IS_ERR(frmr))
|
||||||
goto out_mr_err;
|
goto out_mr_err;
|
||||||
|
|
||||||
sg = kcalloc(depth, sizeof(*sg), GFP_KERNEL);
|
sg = kcalloc(depth, sizeof(*sg), GFP_NOFS);
|
||||||
if (!sg)
|
if (!sg)
|
||||||
goto out_list_err;
|
goto out_list_err;
|
||||||
|
|
||||||
|
@ -171,8 +174,6 @@ out_mr_err:
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
out_list_err:
|
out_list_err:
|
||||||
dprintk("RPC: %s: sg allocation failure\n",
|
|
||||||
__func__);
|
|
||||||
ib_dereg_mr(frmr);
|
ib_dereg_mr(frmr);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
|
@ -949,7 +949,7 @@ rpcrdma_mrs_create(struct rpcrdma_xprt *r_xprt)
|
||||||
struct rpcrdma_mr *mr;
|
struct rpcrdma_mr *mr;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
mr = kzalloc(sizeof(*mr), GFP_KERNEL);
|
mr = kzalloc(sizeof(*mr), GFP_NOFS);
|
||||||
if (!mr)
|
if (!mr)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue