diff options
Diffstat (limited to 'drivers/md/dm-log-writes.c')
-rw-r--r-- | drivers/md/dm-log-writes.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/md/dm-log-writes.c b/drivers/md/dm-log-writes.c index 4ab68033f9d1..49e4d8d4558f 100644 --- a/drivers/md/dm-log-writes.c +++ b/drivers/md/dm-log-writes.c | |||
@@ -259,12 +259,12 @@ static int log_one_block(struct log_writes_c *lc, | |||
259 | goto out; | 259 | goto out; |
260 | sector++; | 260 | sector++; |
261 | 261 | ||
262 | bio = bio_alloc(GFP_KERNEL, block->vec_cnt); | 262 | atomic_inc(&lc->io_blocks); |
263 | bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt, BIO_MAX_PAGES)); | ||
263 | if (!bio) { | 264 | if (!bio) { |
264 | DMERR("Couldn't alloc log bio"); | 265 | DMERR("Couldn't alloc log bio"); |
265 | goto error; | 266 | goto error; |
266 | } | 267 | } |
267 | atomic_inc(&lc->io_blocks); | ||
268 | bio->bi_iter.bi_size = 0; | 268 | bio->bi_iter.bi_size = 0; |
269 | bio->bi_iter.bi_sector = sector; | 269 | bio->bi_iter.bi_sector = sector; |
270 | bio->bi_bdev = lc->logdev->bdev; | 270 | bio->bi_bdev = lc->logdev->bdev; |
@@ -282,7 +282,7 @@ static int log_one_block(struct log_writes_c *lc, | |||
282 | if (ret != block->vecs[i].bv_len) { | 282 | if (ret != block->vecs[i].bv_len) { |
283 | atomic_inc(&lc->io_blocks); | 283 | atomic_inc(&lc->io_blocks); |
284 | submit_bio(bio); | 284 | submit_bio(bio); |
285 | bio = bio_alloc(GFP_KERNEL, block->vec_cnt - i); | 285 | bio = bio_alloc(GFP_KERNEL, min(block->vec_cnt - i, BIO_MAX_PAGES)); |
286 | if (!bio) { | 286 | if (!bio) { |
287 | DMERR("Couldn't alloc log bio"); | 287 | DMERR("Couldn't alloc log bio"); |
288 | goto error; | 288 | goto error; |
@@ -459,9 +459,9 @@ static int log_writes_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
459 | goto bad; | 459 | goto bad; |
460 | } | 460 | } |
461 | 461 | ||
462 | ret = -EINVAL; | ||
463 | lc->log_kthread = kthread_run(log_writes_kthread, lc, "log-write"); | 462 | lc->log_kthread = kthread_run(log_writes_kthread, lc, "log-write"); |
464 | if (!lc->log_kthread) { | 463 | if (IS_ERR(lc->log_kthread)) { |
464 | ret = PTR_ERR(lc->log_kthread); | ||
465 | ti->error = "Couldn't alloc kthread"; | 465 | ti->error = "Couldn't alloc kthread"; |
466 | dm_put_device(ti, lc->dev); | 466 | dm_put_device(ti, lc->dev); |
467 | dm_put_device(ti, lc->logdev); | 467 | dm_put_device(ti, lc->logdev); |