For zoned devices, f2fs forbids direct IO and forces buffered IO
to serialize write IOs. However, the constraint does not apply to
read IOs.
Signed-off-by: Eunhee Rho <[email protected]>
---
fs/f2fs/f2fs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index d0f428aef34b..f69731f17402 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -4471,7 +4471,7 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
* for blkzoned device, fallback direct IO to buffered IO, so
* all IOs can be serialized by log-structured write.
*/
- if (f2fs_sb_has_blkzoned(sbi))
+ if (f2fs_sb_has_blkzoned(sbi) && (rw == WRITE))
return true;
if (f2fs_lfs_mode(sbi) && (rw == WRITE)) {
if (block_unaligned_IO(inode, iocb, iter))
--
2.25.1
On Fri, Jul 29, 2022 at 09:25:17AM +0900, Eunhee Rho wrote:
> For zoned devices, f2fs forbids direct IO and forces buffered IO
> to serialize write IOs. However, the constraint does not apply to
> read IOs.
Asymetric capabilitis will cause a whole lot of problems for us. Can
we figure out why direct writes to zoned devices are not supported and
just fix that instead?
On 07/29, Eunhee Rho wrote:
> For zoned devices, f2fs forbids direct IO and forces buffered IO
> to serialize write IOs. However, the constraint does not apply to
> read IOs.
>
> Signed-off-by: Eunhee Rho <[email protected]>
> ---
> fs/f2fs/f2fs.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index d0f428aef34b..f69731f17402 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -4471,7 +4471,7 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
> * for blkzoned device, fallback direct IO to buffered IO, so
> * all IOs can be serialized by log-structured write.
> */
> - if (f2fs_sb_has_blkzoned(sbi))
> + if (f2fs_sb_has_blkzoned(sbi) && (rw == WRITE))
> return true;
Actually we don't need to check the device type, but rely on the
filesystem allocation policy like the below lfs mode. Can we remove this
line simply?
> if (f2fs_lfs_mode(sbi) && (rw == WRITE)) {
> if (block_unaligned_IO(inode, iocb, iter))
> --
> 2.25.1
>On 07/29, Eunhee Rho wrote:
>> For zoned devices, f2fs forbids direct IO and forces buffered IO
>> to serialize write IOs. However, the constraint does not apply to
>> read IOs.
>>
>> Signed-off-by: Eunhee Rho <[email protected]>
>> ---
>> fs/f2fs/f2fs.h | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>> index d0f428aef34b..f69731f17402 100644
>> --- a/fs/f2fs/f2fs.h
>> +++ b/fs/f2fs/f2fs.h
>> @@ -4471,7 +4471,7 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
>> * for blkzoned device, fallback direct IO to buffered IO, so
>> * all IOs can be serialized by log-structured write.
>> */
>> - if (f2fs_sb_has_blkzoned(sbi))
>> + if (f2fs_sb_has_blkzoned(sbi) && (rw == WRITE))
>> return true;
>
>Actually we don't need to check the device type, but rely on the
>filesystem allocation policy like the below lfs mode. Can we remove this
>line simply?
>
>> if (f2fs_lfs_mode(sbi) && (rw == WRITE)) {
>> if (block_unaligned_IO(inode, iocb, iter))
>> --
>> 2.25.1
>
Yes, I will reflect on the next patch.
Thanks.
To ensure serialized IOs, f2fs allows only LFS mode for zoned
device. Remove redundant check for direct IO.
Signed-off-by: Eunhee Rho <[email protected]>
---
fs/f2fs/f2fs.h | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index ecd870e5d6da..ca9354746eec 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -4496,12 +4496,7 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
/* disallow direct IO if any of devices has unaligned blksize */
if (f2fs_is_multi_device(sbi) && !sbi->aligned_blksize)
return true;
- /*
- * for blkzoned device, fallback direct IO to buffered IO, so
- * all IOs can be serialized by log-structured write.
- */
- if (f2fs_sb_has_blkzoned(sbi))
- return true;
+
if (f2fs_lfs_mode(sbi) && (rw == WRITE)) {
if (block_unaligned_IO(inode, iocb, iter))
return true;
--
2.25.1