| From a1b6585cd1aebddb23ef0eaf791740556030849b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 23 Oct 2019 18:17:36 +0100 |
| Subject: loop: Add LOOP_SET_DIRECT_IO to compat ioctl |
| |
| From: Alessio Balsini <balsini@android.com> |
| |
| [ Upstream commit fdbe4eeeb1aac219b14f10c0ed31ae5d1123e9b8 ] |
| |
| Enabling Direct I/O with loop devices helps reducing memory usage by |
| avoiding double caching. 32 bit applications running on 64 bits systems |
| are currently not able to request direct I/O because is missing from the |
| lo_compat_ioctl. |
| |
| This patch fixes the compatibility issue mentioned above by exporting |
| LOOP_SET_DIRECT_IO as additional lo_compat_ioctl() entry. |
| The input argument for this ioctl is a single long converted to a 1-bit |
| boolean, so compatibility is preserved. |
| |
| Cc: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Alessio Balsini <balsini@android.com> |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/block/loop.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/drivers/block/loop.c b/drivers/block/loop.c |
| index 87d7c42affbc4..ec61dd873c93d 100644 |
| --- a/drivers/block/loop.c |
| +++ b/drivers/block/loop.c |
| @@ -1605,6 +1605,7 @@ static int lo_compat_ioctl(struct block_device *bdev, fmode_t mode, |
| arg = (unsigned long) compat_ptr(arg); |
| case LOOP_SET_FD: |
| case LOOP_CHANGE_FD: |
| + case LOOP_SET_DIRECT_IO: |
| err = lo_ioctl(bdev, mode, cmd, arg); |
| break; |
| default: |
| -- |
| 2.20.1 |
| |