Message ID | 20231210113547.3412782-4-chao@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [f2fs-dev,1/6] f2fs: fix to tag gcing flag on page during block migration | expand |
On 12/10, Chao Yu wrote: > In f2fs_preallocate_blocks(), if it is partial write in 4KB, it's not > necessary to call f2fs_map_blocks() and set FI_PREALLOCATED_ALL flag. > > Cc: Eric Biggers <ebiggers@google.com> > Signed-off-by: Chao Yu <chao@kernel.org> > --- > fs/f2fs/file.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c > index 5c2f99ada6be..1a3c29a9a6a0 100644 > --- a/fs/f2fs/file.c > +++ b/fs/f2fs/file.c > @@ -4561,13 +4561,14 @@ static int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *iter, > return ret; > } > > - /* Do not preallocate blocks that will be written partially in 4KB. */ > map.m_lblk = F2FS_BLK_ALIGN(pos); > map.m_len = F2FS_BYTES_TO_BLK(pos + count); > - if (map.m_len > map.m_lblk) > - map.m_len -= map.m_lblk; > - else return 0; We just need the above? > - map.m_len = 0; > + > + /* Do not preallocate blocks that will be written partially in 4KB. */ > + if (map.m_len <= map.m_lblk) > + return 0; > + > + map.m_len -= map.m_lblk; > map.m_may_create = true; > if (dio) { > map.m_seg_type = f2fs_rw_hint_to_seg_type(inode->i_write_hint); > -- > 2.40.1
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 5c2f99ada6be..1a3c29a9a6a0 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -4561,13 +4561,14 @@ static int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *iter, return ret; } - /* Do not preallocate blocks that will be written partially in 4KB. */ map.m_lblk = F2FS_BLK_ALIGN(pos); map.m_len = F2FS_BYTES_TO_BLK(pos + count); - if (map.m_len > map.m_lblk) - map.m_len -= map.m_lblk; - else - map.m_len = 0; + + /* Do not preallocate blocks that will be written partially in 4KB. */ + if (map.m_len <= map.m_lblk) + return 0; + + map.m_len -= map.m_lblk; map.m_may_create = true; if (dio) { map.m_seg_type = f2fs_rw_hint_to_seg_type(inode->i_write_hint);
In f2fs_preallocate_blocks(), if it is partial write in 4KB, it's not necessary to call f2fs_map_blocks() and set FI_PREALLOCATED_ALL flag. Cc: Eric Biggers <ebiggers@google.com> Signed-off-by: Chao Yu <chao@kernel.org> --- fs/f2fs/file.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)