aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin K. Petersen <martin.petersen@oracle.com>2012-01-11 16:29:31 +0100
committerZiyan <jaraidaniel@gmail.com>2016-01-08 10:42:57 +0100
commit806e6596b906483c2f2f2c057908593ede5973f1 (patch)
tree2ce8507e8cc18dc985da1f2aec0fd5c4c48aea4e
parentf5316271c9a92ab48c762174c9e7fb82e5852dda (diff)
downloadkernel_samsung_tuna-806e6596b906483c2f2f2c057908593ede5973f1.zip
kernel_samsung_tuna-806e6596b906483c2f2f2c057908593ede5973f1.tar.gz
kernel_samsung_tuna-806e6596b906483c2f2f2c057908593ede5973f1.tar.bz2
block: Add BLKROTATIONAL ioctl
Introduce an ioctl which permits applications to query whether a block device is rotational. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
-rw-r--r--block/compat_ioctl.c3
-rw-r--r--block/ioctl.c2
-rw-r--r--include/linux/fs.h1
3 files changed, 6 insertions, 0 deletions
diff --git a/block/compat_ioctl.c b/block/compat_ioctl.c
index cc3eb78..f8fafc7 100644
--- a/block/compat_ioctl.c
+++ b/block/compat_ioctl.c
@@ -733,6 +733,9 @@ long compat_blkdev_ioctl(struct file *file, unsigned cmd, unsigned long arg)
case BLKSECTGET:
return compat_put_ushort(arg,
queue_max_sectors(bdev_get_queue(bdev)));
+ case BLKROTATIONAL:
+ return compat_put_ushort(arg,
+ !blk_queue_nonrot(bdev_get_queue(bdev)));
case BLKRASET: /* compatible, but no compat_ptr (!) */
case BLKFRASET:
if (!capable(CAP_SYS_ADMIN))
diff --git a/block/ioctl.c b/block/ioctl.c
index f082e04..fd129da 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -295,6 +295,8 @@ int blkdev_ioctl(struct block_device *bdev, fmode_t mode, unsigned cmd,
return put_uint(arg, bdev_discard_zeroes_data(bdev));
case BLKSECTGET:
return put_ushort(arg, queue_max_sectors(bdev_get_queue(bdev)));
+ case BLKROTATIONAL:
+ return put_ushort(arg, !blk_queue_nonrot(bdev_get_queue(bdev)));
case BLKRASET:
case BLKFRASET:
if(!capable(CAP_SYS_ADMIN))
diff --git a/include/linux/fs.h b/include/linux/fs.h
index a0034dd..0001946 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -315,6 +315,7 @@ struct inodes_stat_t {
#define BLKPBSZGET _IO(0x12,123)
#define BLKDISCARDZEROES _IO(0x12,124)
#define BLKSECDISCARD _IO(0x12,125)
+#define BLKROTATIONAL _IO(0x12,126)
#define BMAP_IOCTL 1 /* obsolete - kept for compatibility */
#define FIBMAP _IO(0x00,1) /* bmap access */