2018-02-23 11:47:09

by Nikolay Borisov

[permalink] [raw]
Subject: [PATCH 1/2] direct-io: Remove unused DIO_ASYNC_EXTEND flag

This flag was added by 6039257378e4 ("direct-io: add flag to allow aio
writes beyond i_size") to support XFS. However, with the rework of
XFS' DIO's path to use iomap in acdda3aae146 ("xfs: use iomap_dio_rw")
it became redundant. So let's remove it.

Signed-off-by: Nikolay Borisov <[email protected]>
---
fs/direct-io.c | 3 +--
include/linux/fs.h | 3 ---
2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/fs/direct-io.c b/fs/direct-io.c
index a0ca9e48e993..99a81c49bce9 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -1252,8 +1252,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
*/
if (is_sync_kiocb(iocb))
dio->is_async = false;
- else if (!(dio->flags & DIO_ASYNC_EXTEND) &&
- iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
+ else if (iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
dio->is_async = false;
else
dio->is_async = true;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 2a815560fda0..260c233e7375 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2977,9 +2977,6 @@ enum {
/* filesystem does not support filling holes */
DIO_SKIP_HOLES = 0x02,

- /* filesystem can handle aio writes beyond i_size */
- DIO_ASYNC_EXTEND = 0x04,
-
/* inode/fs/bdev does not need truncate protection */
DIO_SKIP_DIO_COUNT = 0x08,
};
--
2.7.4



2018-02-23 11:47:04

by Nikolay Borisov

[permalink] [raw]
Subject: [PATCH 2/2] direct-io: Remove unused DIO_SKIP_DIO_COUNT logic

This flag was added by fe0f07d08ee3 ("direct-io: only inc/deci
inode->i_dio_count for file systems") as means to optimise the atomic
modificaiton of the variable for blockdevices. However with the advent
of 542ff7bf18c6 ("block: new direct I/O implementation") it became
unused. So let's remove it.

Signed-off-by: Nikolay Borisov <[email protected]>
---
fs/direct-io.c | 6 ++----
include/linux/fs.h | 3 ---
2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/fs/direct-io.c b/fs/direct-io.c
index 99a81c49bce9..a8131087aa1c 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -315,8 +315,7 @@ static ssize_t dio_complete(struct dio *dio, ssize_t ret, unsigned int flags)
dio_warn_stale_pagecache(dio->iocb->ki_filp);
}

- if (!(dio->flags & DIO_SKIP_DIO_COUNT))
- inode_dio_end(dio->inode);
+ inode_dio_end(dio->inode);

if (flags & DIO_COMPLETE_ASYNC) {
/*
@@ -1297,8 +1296,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
/*
* Will be decremented at I/O completion time.
*/
- if (!(dio->flags & DIO_SKIP_DIO_COUNT))
- inode_dio_begin(inode);
+ inode_dio_begin(inode);

retval = 0;
sdio.blkbits = blkbits;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 260c233e7375..9bee267209e5 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2976,9 +2976,6 @@ enum {

/* filesystem does not support filling holes */
DIO_SKIP_HOLES = 0x02,
-
- /* inode/fs/bdev does not need truncate protection */
- DIO_SKIP_DIO_COUNT = 0x08,
};

void dio_end_io(struct bio *bio);
--
2.7.4


2018-02-23 15:09:52

by Christoph Hellwig

[permalink] [raw]

2018-02-23 15:11:11

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [PATCH 1/2] direct-io: Remove unused DIO_ASYNC_EXTEND flag

Looks fine,

Reviewed-by: Christoph Hellwig <[email protected]>

2018-03-12 09:56:04

by Nikolay Borisov

[permalink] [raw]
Subject: Re: [PATCH 1/2] direct-io: Remove unused DIO_ASYNC_EXTEND flag



On 23.02.2018 13:45, Nikolay Borisov wrote:
> This flag was added by 6039257378e4 ("direct-io: add flag to allow aio
> writes beyond i_size") to support XFS. However, with the rework of
> XFS' DIO's path to use iomap in acdda3aae146 ("xfs: use iomap_dio_rw")
> it became redundant. So let's remove it.
>
> Signed-off-by: Nikolay Borisov <[email protected]>

Jens,

On a second look I think you are the more appropriate person to take
these patches. SO do you have any objections to merging those via the
block tree. ( I did CC you but didn't cc linux-block).

> ---
> fs/direct-io.c | 3 +--
> include/linux/fs.h | 3 ---
> 2 files changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/fs/direct-io.c b/fs/direct-io.c
> index a0ca9e48e993..99a81c49bce9 100644
> --- a/fs/direct-io.c
> +++ b/fs/direct-io.c
> @@ -1252,8 +1252,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
> */
> if (is_sync_kiocb(iocb))
> dio->is_async = false;
> - else if (!(dio->flags & DIO_ASYNC_EXTEND) &&
> - iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
> + else if (iov_iter_rw(iter) == WRITE && end > i_size_read(inode))
> dio->is_async = false;
> else
> dio->is_async = true;
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 2a815560fda0..260c233e7375 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -2977,9 +2977,6 @@ enum {
> /* filesystem does not support filling holes */
> DIO_SKIP_HOLES = 0x02,
>
> - /* filesystem can handle aio writes beyond i_size */
> - DIO_ASYNC_EXTEND = 0x04,
> -
> /* inode/fs/bdev does not need truncate protection */
> DIO_SKIP_DIO_COUNT = 0x08,
> };
>

2018-03-12 16:22:18

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH 1/2] direct-io: Remove unused DIO_ASYNC_EXTEND flag

On 3/12/18 2:54 AM, Nikolay Borisov wrote:
>
>
> On 23.02.2018 13:45, Nikolay Borisov wrote:
>> This flag was added by 6039257378e4 ("direct-io: add flag to allow aio
>> writes beyond i_size") to support XFS. However, with the rework of
>> XFS' DIO's path to use iomap in acdda3aae146 ("xfs: use iomap_dio_rw")
>> it became redundant. So let's remove it.
>>
>> Signed-off-by: Nikolay Borisov <[email protected]>
>
> Jens,
>
> On a second look I think you are the more appropriate person to take
> these patches. SO do you have any objections to merging those via the
> block tree. ( I did CC you but didn't cc linux-block).

Both look fine to me, I can add them for 4.17. Thanks.

--
Jens Axboe