brd: remove support for BLKFLSBUF
authorMike Snitzer <snitzer@redhat.com>
Tue, 25 Oct 2016 14:46:23 +0000 (08:46 -0600)
committerJens Axboe <axboe@fb.com>
Tue, 25 Oct 2016 17:55:25 +0000 (11:55 -0600)
Discontinue having the brd driver destructively free all pages in the
ramdisk in response to the BLKFLSBUF ioctl.  Doing so allows a BLKFLSBUF
ioctl issued to a logical partition to destroy pages of the parent brd
device (and all other partitions of that brd device).

This change breaks compatibility - but in this case the compatibility
breaks more than it helps.

Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Suggested-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/brd.c

index 9d53358571916933ac5c7529a81a68ed86da26eb..ad793f35632c6f66815dff1944e57b02fc2d8301 100644 (file)
@@ -395,44 +395,9 @@ static long brd_direct_access(struct block_device *bdev, sector_t sector,
 #define brd_direct_access NULL
 #endif
 
-static int brd_ioctl(struct block_device *bdev, fmode_t mode,
-                       unsigned int cmd, unsigned long arg)
-{
-       int error;
-       struct brd_device *brd = bdev->bd_disk->private_data;
-
-       if (cmd != BLKFLSBUF)
-               return -ENOTTY;
-
-       /*
-        * ram device BLKFLSBUF has special semantics, we want to actually
-        * release and destroy the ramdisk data.
-        */
-       mutex_lock(&brd_mutex);
-       mutex_lock(&bdev->bd_mutex);
-       error = -EBUSY;
-       if (bdev->bd_openers <= 1) {
-               /*
-                * Kill the cache first, so it isn't written back to the
-                * device.
-                *
-                * Another thread might instantiate more buffercache here,
-                * but there is not much we can do to close that race.
-                */
-               kill_bdev(bdev);
-               brd_free_pages(brd);
-               error = 0;
-       }
-       mutex_unlock(&bdev->bd_mutex);
-       mutex_unlock(&brd_mutex);
-
-       return error;
-}
-
 static const struct block_device_operations brd_fops = {
        .owner =                THIS_MODULE,
        .rw_page =              brd_rw_page,
-       .ioctl =                brd_ioctl,
        .direct_access =        brd_direct_access,
 };