]> git.kernelconcepts.de Git - mv-sheeva.git/blobdiff - block/ioctl.c
mm: remove unused GUP flags
[mv-sheeva.git] / block / ioctl.c
index 500e4c73cc52ba3a36b844c9e97404508ccf4b9b..d3e6b5827a3425de1871ec4dfa9f5ca04e8744f4 100644 (file)
@@ -112,22 +112,9 @@ static int blkdev_reread_part(struct block_device *bdev)
        return res;
 }
 
-static void blk_ioc_discard_endio(struct bio *bio, int err)
-{
-       if (err) {
-               if (err == -EOPNOTSUPP)
-                       set_bit(BIO_EOPNOTSUPP, &bio->bi_flags);
-               clear_bit(BIO_UPTODATE, &bio->bi_flags);
-       }
-       complete(bio->bi_private);
-}
-
 static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
                             uint64_t len)
 {
-       struct request_queue *q = bdev_get_queue(bdev);
-       int ret = 0;
-
        if (start & 511)
                return -EINVAL;
        if (len & 511)
@@ -137,40 +124,8 @@ static int blk_ioctl_discard(struct block_device *bdev, uint64_t start,
 
        if (start + len > (bdev->bd_inode->i_size >> 9))
                return -EINVAL;
-
-       if (!q->prepare_discard_fn)
-               return -EOPNOTSUPP;
-
-       while (len && !ret) {
-               DECLARE_COMPLETION_ONSTACK(wait);
-               struct bio *bio;
-
-               bio = bio_alloc(GFP_KERNEL, 0);
-
-               bio->bi_end_io = blk_ioc_discard_endio;
-               bio->bi_bdev = bdev;
-               bio->bi_private = &wait;
-               bio->bi_sector = start;
-
-               if (len > queue_max_hw_sectors(q)) {
-                       bio->bi_size = queue_max_hw_sectors(q) << 9;
-                       len -= queue_max_hw_sectors(q);
-                       start += queue_max_hw_sectors(q);
-               } else {
-                       bio->bi_size = len << 9;
-                       len = 0;
-               }
-               submit_bio(DISCARD_NOBARRIER, bio);
-
-               wait_for_completion(&wait);
-
-               if (bio_flagged(bio, BIO_EOPNOTSUPP))
-                       ret = -EOPNOTSUPP;
-               else if (!bio_flagged(bio, BIO_UPTODATE))
-                       ret = -EIO;
-               bio_put(bio);
-       }
-       return ret;
+       return blkdev_issue_discard(bdev, start, len, GFP_KERNEL,
+                                   DISCARD_FL_WAIT);
 }
 
 static int put_ushort(unsigned long arg, unsigned short val)