diff options
author | Paul Moore <pmoore@redhat.com> | 2014-03-31 09:49:07 -0400 |
---|---|---|
committer | Paul Moore <pmoore@redhat.com> | 2014-03-31 09:49:07 -0400 |
commit | 6d32c850621b0be75777b9102b14f6268bbd9f0f (patch) | |
tree | fec325f5c1ae763f5eccb3ca1254ab9d9d164b05 /block/blk-lib.c | |
parent | selinux: correctly label /proc inodes in use before the policy is loaded (diff) | |
parent | Linux 3.14 (diff) | |
download | linux-dev-6d32c850621b0be75777b9102b14f6268bbd9f0f.tar.xz linux-dev-6d32c850621b0be75777b9102b14f6268bbd9f0f.zip |
Merge tag 'v3.14' into next
Linux 3.14
Diffstat (limited to 'block/blk-lib.c')
-rw-r--r-- | block/blk-lib.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/block/blk-lib.c b/block/blk-lib.c index 9b5b561cb928..97a733cf3d5f 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -108,17 +108,25 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector, req_sects = end_sect - sector; } - bio->bi_sector = sector; + bio->bi_iter.bi_sector = sector; bio->bi_end_io = bio_batch_end_io; bio->bi_bdev = bdev; bio->bi_private = &bb; - bio->bi_size = req_sects << 9; + bio->bi_iter.bi_size = req_sects << 9; nr_sects -= req_sects; sector = end_sect; atomic_inc(&bb.done); submit_bio(type, bio); + + /* + * We can loop for a long time in here, if someone does + * full device discards (like mkfs). Be nice and allow + * us to schedule out to avoid softlocking if preempt + * is disabled. + */ + cond_resched(); } blk_finish_plug(&plug); @@ -174,7 +182,7 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, break; } - bio->bi_sector = sector; + bio->bi_iter.bi_sector = sector; bio->bi_end_io = bio_batch_end_io; bio->bi_bdev = bdev; bio->bi_private = &bb; @@ -184,11 +192,11 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, bio->bi_io_vec->bv_len = bdev_logical_block_size(bdev); if (nr_sects > max_write_same_sectors) { - bio->bi_size = max_write_same_sectors << 9; + bio->bi_iter.bi_size = max_write_same_sectors << 9; nr_sects -= max_write_same_sectors; sector += max_write_same_sectors; } else { - bio->bi_size = nr_sects << 9; + bio->bi_iter.bi_size = nr_sects << 9; nr_sects = 0; } @@ -240,7 +248,7 @@ int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, break; } - bio->bi_sector = sector; + bio->bi_iter.bi_sector = sector; bio->bi_bdev = bdev; bio->bi_end_io = bio_batch_end_io; bio->bi_private = &bb; |