diff options
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/dm.c b/drivers/md/dm.c index cf0b455b21ef..a42dfb7a718e 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c | |||
@@ -432,9 +432,10 @@ static void free_tio(struct mapped_device *md, struct dm_target_io *tio) | |||
432 | mempool_free(tio, md->tio_pool); | 432 | mempool_free(tio, md->tio_pool); |
433 | } | 433 | } |
434 | 434 | ||
435 | static struct dm_rq_target_io *alloc_rq_tio(struct mapped_device *md) | 435 | static struct dm_rq_target_io *alloc_rq_tio(struct mapped_device *md, |
436 | gfp_t gfp_mask) | ||
436 | { | 437 | { |
437 | return mempool_alloc(md->tio_pool, GFP_ATOMIC); | 438 | return mempool_alloc(md->tio_pool, gfp_mask); |
438 | } | 439 | } |
439 | 440 | ||
440 | static void free_rq_tio(struct dm_rq_target_io *tio) | 441 | static void free_rq_tio(struct dm_rq_target_io *tio) |
@@ -1471,7 +1472,7 @@ static int dm_prep_fn(struct request_queue *q, struct request *rq) | |||
1471 | return BLKPREP_KILL; | 1472 | return BLKPREP_KILL; |
1472 | } | 1473 | } |
1473 | 1474 | ||
1474 | tio = alloc_rq_tio(md); /* Only one for each original request */ | 1475 | tio = alloc_rq_tio(md, GFP_ATOMIC); |
1475 | if (!tio) | 1476 | if (!tio) |
1476 | /* -ENOMEM */ | 1477 | /* -ENOMEM */ |
1477 | return BLKPREP_DEFER; | 1478 | return BLKPREP_DEFER; |