|
@@ -61,7 +61,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
|
|
max_discard_sectors &= ~(disc_sects - 1);
|
|
max_discard_sectors &= ~(disc_sects - 1);
|
|
}
|
|
}
|
|
|
|
|
|
- if (flags & BLKDEV_IFL_SECURE) {
|
|
|
|
|
|
+ if (flags & BLKDEV_DISCARD_SECURE) {
|
|
if (!blk_queue_secdiscard(q))
|
|
if (!blk_queue_secdiscard(q))
|
|
return -EOPNOTSUPP;
|
|
return -EOPNOTSUPP;
|
|
type |= REQ_SECURE;
|
|
type |= REQ_SECURE;
|
|
@@ -77,8 +77,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
|
|
bio->bi_sector = sector;
|
|
bio->bi_sector = sector;
|
|
bio->bi_end_io = blkdev_discard_end_io;
|
|
bio->bi_end_io = blkdev_discard_end_io;
|
|
bio->bi_bdev = bdev;
|
|
bio->bi_bdev = bdev;
|
|
- if (flags & BLKDEV_IFL_WAIT)
|
|
|
|
- bio->bi_private = &wait;
|
|
|
|
|
|
+ bio->bi_private = &wait;
|
|
|
|
|
|
if (nr_sects > max_discard_sectors) {
|
|
if (nr_sects > max_discard_sectors) {
|
|
bio->bi_size = max_discard_sectors << 9;
|
|
bio->bi_size = max_discard_sectors << 9;
|
|
@@ -92,8 +91,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
|
|
bio_get(bio);
|
|
bio_get(bio);
|
|
submit_bio(type, bio);
|
|
submit_bio(type, bio);
|
|
|
|
|
|
- if (flags & BLKDEV_IFL_WAIT)
|
|
|
|
- wait_for_completion(&wait);
|
|
|
|
|
|
+ wait_for_completion(&wait);
|
|
|
|
|
|
if (bio_flagged(bio, BIO_EOPNOTSUPP))
|
|
if (bio_flagged(bio, BIO_EOPNOTSUPP))
|
|
ret = -EOPNOTSUPP;
|
|
ret = -EOPNOTSUPP;
|
|
@@ -139,7 +137,6 @@ static void bio_batch_end_io(struct bio *bio, int err)
|
|
* @sector: start sector
|
|
* @sector: start sector
|
|
* @nr_sects: number of sectors to write
|
|
* @nr_sects: number of sectors to write
|
|
* @gfp_mask: memory allocation flags (for bio_alloc)
|
|
* @gfp_mask: memory allocation flags (for bio_alloc)
|
|
- * @flags: BLKDEV_IFL_* flags to control behaviour
|
|
|
|
*
|
|
*
|
|
* Description:
|
|
* Description:
|
|
* Generate and issue number of bios with zerofiled pages.
|
|
* Generate and issue number of bios with zerofiled pages.
|
|
@@ -148,7 +145,7 @@ static void bio_batch_end_io(struct bio *bio, int err)
|
|
*/
|
|
*/
|
|
|
|
|
|
int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
|
|
int blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
|
|
- sector_t nr_sects, gfp_t gfp_mask, unsigned long flags)
|
|
|
|
|
|
+ sector_t nr_sects, gfp_t gfp_mask)
|
|
{
|
|
{
|
|
int ret;
|
|
int ret;
|
|
struct bio *bio;
|
|
struct bio *bio;
|
|
@@ -174,8 +171,7 @@ submit:
|
|
bio->bi_sector = sector;
|
|
bio->bi_sector = sector;
|
|
bio->bi_bdev = bdev;
|
|
bio->bi_bdev = bdev;
|
|
bio->bi_end_io = bio_batch_end_io;
|
|
bio->bi_end_io = bio_batch_end_io;
|
|
- if (flags & BLKDEV_IFL_WAIT)
|
|
|
|
- bio->bi_private = &bb;
|
|
|
|
|
|
+ bio->bi_private = &bb;
|
|
|
|
|
|
while (nr_sects != 0) {
|
|
while (nr_sects != 0) {
|
|
sz = min((sector_t) PAGE_SIZE >> 9 , nr_sects);
|
|
sz = min((sector_t) PAGE_SIZE >> 9 , nr_sects);
|
|
@@ -193,10 +189,9 @@ submit:
|
|
submit_bio(WRITE, bio);
|
|
submit_bio(WRITE, bio);
|
|
}
|
|
}
|
|
|
|
|
|
- if (flags & BLKDEV_IFL_WAIT)
|
|
|
|
- /* Wait for bios in-flight */
|
|
|
|
- while ( issued != atomic_read(&bb.done))
|
|
|
|
- wait_for_completion(&wait);
|
|
|
|
|
|
+ /* Wait for bios in-flight */
|
|
|
|
+ while (issued != atomic_read(&bb.done))
|
|
|
|
+ wait_for_completion(&wait);
|
|
|
|
|
|
if (!test_bit(BIO_UPTODATE, &bb.flags))
|
|
if (!test_bit(BIO_UPTODATE, &bb.flags))
|
|
/* One of bios in the batch was completed with error.*/
|
|
/* One of bios in the batch was completed with error.*/
|