[f2fs-dev] [PATCH] f2fs: fix wrong layout information on 16KB page

2025-09-08 Thread Jaegeuk Kim via Linux-f2fs-devel
This patch fixes to support different block size. Signed-off-by: Jaegeuk Kim --- fs/f2fs/sysfs.c | 9 ++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index 081b5df0e664..7992386fb9e6 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c

[f2fs-dev] [PATCH] f2fs: merge FUA command with the existing writes

2025-09-04 Thread Jaegeuk Kim via Linux-f2fs-devel
FUA writes can be merged to the existing write IOs. Signed-off-by: Jaegeuk Kim --- fs/f2fs/data.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 7961e0ddfca3..30cb2f230690 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -733,9

Re: [f2fs-dev] [PATCH 0/6] f2fs: documentation formatting cleanup and improvements

2025-08-30 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/29, Jonathan Corbet wrote: > Bagas Sanjaya writes: > > > Hi, > > > > Here are documentation formatting cleanup for f2fs. This also includes > > docs retitle at the end of series ([6/6]) as a bonus. > > > > This series is based on docs-next tree. > > > > Enjoy! > > > > Bagas Sanjaya (6): > >

Re: [f2fs-dev] [PATCH] f2fs: allocate HOT_DATA for IPU writes

2025-08-30 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/30, Chao Yu wrote: > On 8/30/2025 4:47 AM, Jaegeuk Kim wrote: > > On 08/29, Chao Yu wrote: > > > On 8/28/2025 11:23 PM, Jaegeuk Kim wrote: > > > > On 08/28, Chao Yu wrote: > > > > > On 8/28/25 05:52, Jaegeuk Kim via Linux-f2fs-devel wrote: > &

Re: [f2fs-dev] [PATCH] f2fs: allocate HOT_DATA for IPU writes

2025-08-29 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/29, Chao Yu wrote: > On 8/28/2025 11:23 PM, Jaegeuk Kim wrote: > > On 08/28, Chao Yu wrote: > > > On 8/28/25 05:52, Jaegeuk Kim via Linux-f2fs-devel wrote: > > > > Let's split IPU writes in hot data area to improve the GC efficiency. > > > > &

Re: [f2fs-dev] [PATCH] f2fs: allocate HOT_DATA for IPU writes

2025-08-28 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/28, Chao Yu wrote: > On 8/28/25 05:52, Jaegeuk Kim via Linux-f2fs-devel wrote: > > Let's split IPU writes in hot data area to improve the GC efficiency. > > I didn't get it, IPU may be not friendly for migrating data along w/ write in > hot area? This de

[f2fs-dev] [PATCH] f2fs: allocate HOT_DATA for IPU writes

2025-08-27 Thread Jaegeuk Kim via Linux-f2fs-devel
Let's split IPU writes in hot data area to improve the GC efficiency. Signed-off-by: Jaegeuk Kim --- fs/f2fs/segment.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index e0f6589c6a1c..bb79dad55ac9 100644 --- a/fs/f2fs/segm

Re: [f2fs-dev] [PATCH v3] f2fs: fix CURSEG_HOT_DATA left space check

2025-08-20 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/20, Chao Yu wrote: > On 8/6/25 20:32, mason.zhang wrote: > > This fix combines the space check for data_blocks and dent_blocks when > > verifying HOT_DATA segment capacity, preventing potential insufficient > > space issues during checkpoint. > > > > Fixes: bf34c93d2645 ("f2fs: check curseg

Re: [f2fs-dev] [PATCH v4] f2fs: show the list of donation files

2025-08-19 Thread Jaegeuk Kim via Linux-f2fs-devel
1048576 1048576 Reviewed-by: Chao Yu Signed-off-by: Jaegeuk Kim --- v4: - change the entry names clearly fs/f2fs/sysfs.c | 64 + 1 file changed, 64 insertions(+) diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index 1ffaf9e74ce9

Re: [f2fs-dev] [PATCH] f2fs: Use device_alloc_policy to control write priority in multi-device setups

2025-08-19 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/15, Liao Yuanhong wrote: > Introduces two new sys nodes: device_border_line and device_alloc_policy. > The device_border_line identifies the boundary between devices, measured > in sections; it defaults to the end of the device for single storage > setups, and the end of the first device for

Re: [f2fs-dev] [PATCH v3] f2fs: show the list of donation files

2025-08-15 Thread Jaegeuk Kim via Linux-f2fs-devel
Status Offset (kb) Length (kb)Cached pages (kb) --- /local/tmp/test2 Donated 0 1048576 2097152 /local/tmp/test Evicted 0 1048576

Re: [f2fs-dev] [PATCH v2] f2fs: show the list of donation files

2025-08-13 Thread Jaegeuk Kim via Linux-f2fs-devel
Status Offset (kb) Length (kb)Cached pages (kb) --- /local/tmp/test2 Donated 0 1048576 2097152 /local/tmp/test Evicted 0 1048576

[f2fs-dev] [PATCH] f2fs: show the list of donation files

2025-08-12 Thread Jaegeuk Kim via Linux-f2fs-devel
Status Offset (kb) Length (kb)Cached pages (kb) --- /local/tmp/test2 Donated 0 1048576 2097152 /local/tmp/test Evicted 0 1048576

Re: [f2fs-dev] [PATCH v3] f2fs:fix missing space reclamation during the recovery process

2025-08-08 Thread Jaegeuk Kim via Linux-f2fs-devel
On 08/08, 王晓珺 wrote: > 在 2025/8/8 12:16, Chao Yu 写道: > > Xiaojun, > > > > I just notice generic/483 will fail w/ this change, can you please take a > > look? > > > > Thanks, > > Hi Chao, > > OK, Thanks for pointing out the issue. Yeah, I'm also hitting several failures in xfstests. Hence, I drop

Re: [f2fs-dev] [PATCH v6] f2fs: add reserved nodes for privileged users

2025-08-07 Thread Jaegeuk Kim via Linux-f2fs-devel
By the way, can we also add some testcases in xfstests to check all this works as intended? On 08/07, Chunhai Guo wrote: > This patch allows privileged users to reserve nodes via the > 'reserve_node' mount option, which is similar to the existing > 'reserve_root' option. > > "-o reserve_node=" me

Re: [f2fs-dev] [PATCH v2 3/3] f2fs: fix to zero data after EOF for compressed file correctly

2025-08-04 Thread Jaegeuk Kim via Linux-f2fs-devel
Chao, it seems you made a clean up before this? Can you post it first? On 08/04, Chao Yu wrote: > generic/091 may fail, then it bisects to the bad commit ba8dac350faf > ("f2fs: fix to zero post-eof page"). > > What will cause generic/091 to fail is something like below Testcase #1: > 1. write 16k

Re: [f2fs-dev] [PATCH v4] f2fs: add reserved nodes for privileged users

2025-08-04 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/31, Chunhai Guo wrote: > 在 7/31/2025 4:46 PM, Chao Yu 写道: > > On 7/31/25 15:57, Chunhai Guo wrote: > >> This patch allows privileged users to reserve nodes via the > >> 'reserve_node' mount option, which is similar to the existing > >> 'reserve_root' option. > >> > >> "-o reserve_node=" means

[f2fs-dev] [GIT PULL] f2fs for 6.17-rc1

2025-08-04 Thread Jaegeuk Kim via Linux-f2fs-devel
duce fs_context_operation structure f2fs: switch to the new mount api Jaegeuk Kim (2): f2fs: check the generic conditions first f2fs: drop inode from the donation list when the last file is closed Jan Prusakowski (1): f2fs: vm_unmap_ram() may be called from an invalid

[f2fs-dev] [PATCH] Fix build error in Android

2025-08-01 Thread Jaegeuk Kim via Linux-f2fs-devel
~~~ 404 | get_sb(segment0_blkaddr), c.zone_blocks); | ~~^~ external/f2fs-tools/include/f2fs_fs.h:289:18: note: expanded from macro 'MSG' 289 | pr

[f2fs-dev] [PATCH] f2fs: drop inode from the donation list when the last file is closed

2025-07-29 Thread Jaegeuk Kim via Linux-f2fs-devel
Let's drop the inode from the donation list when there is no other open file. Signed-off-by: Jaegeuk Kim --- fs/f2fs/f2fs.h | 2 ++ fs/f2fs/file.c | 8 +++- fs/f2fs/inode.c | 2 +- fs/f2fs/super.c | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fs/f2fs/f2fs.h

Re: [f2fs-dev] [PATCH] f2fs: dump more information when checkpoint was blocked for long time

2025-07-29 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/29, Chao Yu wrote: > generic/299 w/ mode=lfs will cause long time latency, let's dump more > information once we hit case. > > CP merge: > - Queued :0 > - Issued :1 > - Total :1 > - Cur time : 7565(ms) > - Peak time : 7565(ms) > > F2FS-fs (vdc): checkpoint was blocked

Re: [f2fs-dev] [PATCH 1/1] f2fs-tools: increase overprovision finding speed

2025-07-29 Thread Jaegeuk Kim via Linux-f2fs-devel
Applied with limiting 80 columns. On 05/16, Cherniaev Andrei wrote: > I think my optimization makes mkfs.f2fs faster in case of invalid volume > size. So with the commit user will get err faster. > Before start I suggest add debug printf() to `f2fs_fs.h` like this: > ``` > for (; candidate <= end

Re: [f2fs-dev] [PATCH v3] f2fs: add gc_boost_gc_multiple sysfs node

2025-07-28 Thread Jaegeuk Kim via Linux-f2fs-devel
Please check https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/log/?h=dev-test On 07/28, Daeho Jeong wrote: > From: Daeho Jeong > > Add a sysfs knob to set a multiplier for the background GC migration > window when F2FS Garbage Collection is boosted. > > Signed-off-by: Daeho Jeo

Re: [f2fs-dev] [PATCH v2] f2fs: add gc_boost_gc_greedy sysfs node

2025-07-28 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/22, Chao Yu wrote: > On 7/19/25 05:50, Daeho Jeong wrote: > > From: Daeho Jeong > > > > Add this to control GC algorithm for boost GC. > > > > Signed-off-by: Daeho Jeong > > --- > > v2: use GC_GREEDY instead of 1 > > --- > > Documentation/ABI/testing/sysfs-fs-f2fs | 8 +++- > > fs/f

Re: [f2fs-dev] [PATCH] f2fs:Add adjustable write endpoints for multiple devices

2025-07-28 Thread Jaegeuk Kim via Linux-f2fs-devel
I think this is a simple hack, so NAK. It seems the ask is to support storage tiering, and we need to design a better approach. Something like allocating a section per defined device priority. On 07/23, Liao Yuanhong wrote: > During the development process, we encounter the following two issues:

Re: [f2fs-dev] [PATCH] mkfs.f2fs: support -C [no]hashonly to control linear lookup fallback

2025-07-24 Thread Jaegeuk Kim via Linux-f2fs-devel
Can we disable linear lookup by default, but add an option to enable it? On 07/24, Chao Yu wrote: > It provides a way to disable linear lookup fallback during mkfs. > > Usage: > > 1. Disable linear lookup: > mkfs.f2fs -f -O casefold -C utf8:hashonly /dev/vdb > dump.f2fs -d3 /dev/vdb |grep s_enco

Re: [f2fs-dev] [PATCH 1/2] f2fs: avoid redundant clean nat entry move in lru list

2025-07-21 Thread Jaegeuk Kim via Linux-f2fs-devel
I think it'd be better to add a parameter like __lookup_nat_cache(for_dirty). On 07/18, wangzijie wrote: > __lookup_nat_cache follows LRU manner to move clean nat entry, when nat > entries are going to be dirty, no need to move them to tail of lru list. > > Signed-off-by: wangzijie > --- > fs/f

Re: [f2fs-dev] [PATCH v3] f2fs_io: add test_create_perf command

2025-07-14 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/14, Chao Yu wrote: > Daniel, > > It missed to add doc entry, just found the issue. Can you post another patch to update the doc? > > Thanks, > > On 6/17/25 22:04, Daniel Lee wrote: > > A new command 'test_create_perf', has been introduced to measure > > the performance of creating and de

Re: [f2fs-dev] [PATCH v3] f2fs_io: measure readdir/stat performance

2025-07-14 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/14, Chao Yu wrote: > - mkdir dir > - f2fs_io test_lookup_perf -i /mnt/f2fs/dir 5 > - sync > - echo 3 > /proc/sys/vm/drop_caches > - f2fs_io test_lookup_perf /mnt/f2fs/dir > > Output: > Measure readdir performance > Measure stat performance > Operation: total_files, total_time_s, throughp

Re: [f2fs-dev] [jaegeuk-f2fs:dev-test 65/93] fs/f2fs/data.c:58:56: error: passing 'const struct folio *' to parameter of type 'struct folio *' discards qualifiers

2025-07-10 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/10, Matthew Wilcox wrote: > On Thu, Jul 10, 2025 at 02:26:38PM +0000, Jaegeuk Kim wrote: > > On 07/10, Matthew Wilcox wrote: > > > On Thu, Jul 10, 2025 at 03:17:28PM +0800, kernel test robot wrote: > > > > >> fs/f2fs/data.c:58:56: erro

Re: [f2fs-dev] [jaegeuk-f2fs:dev-test 65/93] fs/f2fs/data.c:58:56: error: passing 'const struct folio *' to parameter of type 'struct folio *' discards qualifiers

2025-07-10 Thread Jaegeuk Kim via Linux-f2fs-devel
On 07/10, Matthew Wilcox wrote: > On Thu, Jul 10, 2025 at 03:17:28PM +0800, kernel test robot wrote: > > >> fs/f2fs/data.c:58:56: error: passing 'const struct folio *' to parameter > > >> of type 'struct folio *' discards qualifiers > > >> [-Werror,-Wincompatible-pointer-types-discards-qualifiers

Re: [f2fs-dev] [PATCH 11/60] f2fs: Pass a folio to nid_of_node()

2025-07-09 Thread Jaegeuk Kim via Linux-f2fs-devel
Queued with this for testing. --- a/fs/f2fs/recovery.c +++ b/fs/f2fs/recovery.c @@ -767,7 +767,7 @@ static int do_recover_data(struct f2fs_sb_info *sbi, struct inode *inode, out: f2fs_notice(sbi, "recover_data: ino = %lx, nid = %x (i_size: %s), " "range (%u, %u), reco

Re: [f2fs-dev] [PATCH v4 2/7] f2fs: move the option parser into handle_mount_opt

2025-07-09 Thread Jaegeuk Kim via Linux-f2fs-devel
Hongbo, Could you please post v5? Thanks, On 07/07, Hongbo Li wrote: > > > On 2025/7/4 11:27, Chao Yu wrote: > > On 6/2/25 17:02, Hongbo Li wrote: > > > In handle_mount_opt, we use fs_parameter to parse each option. > > > However we're still using the old API to get the options string. > > > U

Re: [f2fs-dev] [PATCH v5 2/2] f2fs: don't allow unaligned truncation to smaller/equal size on pinned file

2025-06-30 Thread Jaegeuk Kim via Linux-f2fs-devel
I think we can clean up more like this? https://lore.kernel.org/linux-f2fs-devel/20250630160839.1142073-1-jaeg...@kernel.org/T/#u On 06/30, wangzijie wrote: > To prevent scattered pin block generation, don't allow non-section aligned > truncation > to smaller or equal size on pinned file. But fo

[f2fs-dev] [PATCH] f2fs: check the generic conditions first

2025-06-30 Thread Jaegeuk Kim via Linux-f2fs-devel
Let's return errors caught by the generic checks. This fixes generic/494 where it expects to see EBUSY by setattr_prepare instead of EINVAL by f2fs for active swapfile. Signed-off-by: Jaegeuk Kim --- fs/f2fs/file.c | 24 1 file changed, 12 insertions(+), 12 dele

[f2fs-dev] [GIT PULL] f2fs fixes for 6.16-rc4

2025-06-23 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi Linus, Could you please help mergint this bug fix series? Thanks, The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494: Linux 6.16-rc1 (2025-06-08 13:44:43 -0700) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.g

Re: [f2fs-dev] [PATCH v3 1/2] f2fs: don't allow unaligned truncation to smaller/equal size on pinned file

2025-06-23 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi, Please do sbi conversion first, and apply this change. On 06/18, wangzijie wrote: > To prevent scattered pin block generation, don't allow non-section aligned > truncation > to smaller or equal size on pinned file. But for truncation to larger size, > after > commit 3fdd89b452c2("f2fs: prev

Re: [f2fs-dev] [PATCH v3] f2fs: compress: fix UAF of f2fs_inode_info in f2fs_free_dic

2025-06-10 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi Zhiguo, This patch causes CPU hang when running fsstress on compressed/non-compressed files. Please check. On 06/05, Zhiguo Niu wrote: > The decompress_io_ctx may be released asynchronously after > I/O completion. If this file is deleted immediately after read, > and the kworker of processing

Re: [f2fs-dev] [PATCH v4 0/7] f2fs: new mount API conversion

2025-06-02 Thread Jaegeuk Kim via Linux-f2fs-devel
Thanks you, Hongbo. I just applied this series to the dev-test branch as below, and will keep testing with incoming patches together. Let's see. :) https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/log/?h=dev-test On 06/02, Hongbo Li wrote: > In this version, we have finished the

[f2fs-dev] [GIT PULL] f2fs update for 6.16-rc1

2025-05-29 Thread Jaegeuk Kim via Linux-f2fs-devel
es f2fs: return bool from __write_node_folio Colin Ian King (1): f2fs: remove redundant assignment to variable err Daeho Jeong (1): f2fs: handle error cases of memory donation Eric Biggers (1): f2fs: remove unused sbi argument from checksum functions Jaegeuk Kim (2):

Re: [f2fs-dev] [PATCH] f2fs: fix to zero post-eof page

2025-05-28 Thread Jaegeuk Kim via Linux-f2fs-devel
Chao, Can we add the similar path that other filesystems have? On 05/21, Chao Yu wrote: > fstest reports a f2fs bug: > > generic/363 42s ... [failed, exit status 1]- output mismatch (see > /share/git/fstests/results//generic/363.out.bad) > --- tests/generic/363.out 2025-01-12 21:57:40.271

Re: [f2fs-dev] [PATCH] f2fs: fix to do sanity check on section ckpt_valid_blocks correctly

2025-05-28 Thread Jaegeuk Kim via Linux-f2fs-devel
Thanks, I added the patches back with this fix applied to the original patch. :) On 05/28, Chao Yu wrote: > syzbot report a f2fs bug as below: > > CPU: 0 UID: 0 PID: 5840 Comm: syz-executor138 Not tainted > 6.15.0-rc7-next-20250523-syzkaller #0 PREEMPT(full) > Call Trace: > > dump_stack_lvl+0x

Re: [f2fs-dev] [PATCH V3 7/7] f2fs: switch to the new mount api

2025-05-16 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/16, Hongbo Li wrote: > > > On 2025/5/14 23:30, Jaegeuk Kim wrote: > > Hi, Hongbo, > > > > It seems we're getting more issues in the patch set. May I ask for some > > help sending the new patch series having all the fixes that I made as well > >

Re: [f2fs-dev] [PATCH V3 7/7] f2fs: switch to the new mount api

2025-05-14 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi, Hongbo, It seems we're getting more issues in the patch set. May I ask for some help sending the new patch series having all the fixes that I made as well as addressing the concerns? You can get the patches from [1]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/log/?h

Re: [f2fs-dev] [PATCH v2 2/2] f2fs: add f2fs_bug_on() in f2fs_quota_read()

2025-05-13 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/13, Chao Yu wrote: > mapping_read_folio_gfp() will return a folio, it should always be > uptodate, let's check folio uptodate status to detect any potenial > bug. > > Signed-off-by: Chao Yu > --- > v2: > - just add f2fs_bug_on(), get rid of error handling. > fs/f2fs/super.c | 6 ++ > 1

Re: [f2fs-dev] [PATCH V3 7/7] f2fs: switch to the new mount api

2025-05-13 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/23, Eric Sandeen wrote: > From: Hongbo Li > > The new mount api will execute .parse_param, .init_fs_context, .get_tree > and will call .remount if remount happened. So we add the necessary > functions for the fs_context_operations. If .init_fs_context is added, > the old .mount should remov

Re: [f2fs-dev] [PATCH V3 7/7] f2fs: switch to the new mount api

2025-05-13 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/13, Chao Yu wrote: > On 5/13/25 10:19, Eric Sandeen wrote: > > On 5/11/25 10:43 PM, Chao Yu wrote: > >> On 5/8/25 23:59, Eric Sandeen wrote: > >>> On 5/8/25 4:19 AM, Chao Yu wrote: > > @@ -2645,21 +2603,11 @@ static int f2fs_remount(struct > > super_block *sb, int *flags, char *data)

Re: [f2fs-dev] [PATCH V3 5/7] f2fs: separate the options parsing and options checking

2025-05-12 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/23, Eric Sandeen wrote: > From: Hongbo Li > > The new mount api separates option parsing and super block setup > into two distinct steps and so we need to separate the options > parsing out of the parse_options(). > > In order to achieve this, here we handle the mount options with > three

Re: [f2fs-dev] [PATCH 2/2] f2fs: add f2fs_bug_on() in f2fs_quota_read()

2025-05-12 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/12, Chao Yu wrote: > mapping_read_folio_gfp() will return a folio, it should always be > uptodate, let's check folio uptodate status to detect any potenial > bug. If it's supposed to be uptodate, can you add f2fs_bug_on() only? > > Signed-off-by: Chao Yu > --- > fs/f2fs/super.c | 11

Re: [f2fs-dev] [PATCH 1/2] f2fs: add f2fs_bug_on() to detect potential bug

2025-05-12 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/12, Chao Yu wrote: > Add f2fs_bug_on() to check whether memory preallocation will fail or > not after radix_tree_preload(GFP_NOFS | __GFP_NOFAIL). Are we getting a bug? > > Signed-off-by: Chao Yu > --- > fs/f2fs/checkpoint.c | 4 +++- > fs/f2fs/node.c | 7 +-- > 2 files changed

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/07, Eric Sandeen wrote: > On 5/7/25 2:48 PM, Jaegeuk Kim wrote: > > On 05/07, Eric Sandeen wrote: > >> On 5/7/25 9:46 AM, Jaegeuk Kim wrote: > >> > >>> I meant: > >>> > >>> # mkfs/mkfs.f2fs -c /dev/v...@vdc.file /dev/vdb > &

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/07, Eric Sandeen wrote: > On 5/7/25 3:28 PM, Jaegeuk Kim wrote: > >> But as far as I can tell, at least for the extent cache, remount is handled > >> properly already (with the hunk above): > >> > >> # mkfs/mkfs.f2fs -c /dev/v...@vdc.file /dev/vdb &g

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/07, Eric Sandeen wrote: > On 5/7/25 9:46 AM, Jaegeuk Kim wrote: > > > I meant: > > > > # mkfs/mkfs.f2fs -c /dev/v...@vdc.file /dev/vdb > > # mount /dev/vdb mnt > > > > It's supposed to be successful, since extent_cache is enabled by default

Re: [f2fs-dev] [PATCH 2/7] f2fs: move the option parser into handle_mount_opt

2025-05-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/07, Eric Sandeen wrote: > On 5/7/25 6:26 AM, Chao Yu wrote: > > On 4/20/25 23:25, Eric Sandeen wrote: > >> From: Hongbo Li > >> > >> In handle_mount_opt, we use fs_parameter to parse each option. > >> However we're still using the old API to get the options string. > >> Using fsparams parse_

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/06, Eric Sandeen wrote: > On 5/6/25 9:56 PM, Eric Sandeen wrote: > > On 5/6/25 8:23 PM, Jaegeuk Kim wrote: > > ... > > >> What about: > >> # mount -o loop,noextent_cache f2fsfile.img mnt > >> > >> In this case, 1) ctx_clear_opt(), 2)

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/06, Eric Sandeen wrote: > On 5/6/25 7:35 PM, Jaegeuk Kim wrote: > > Hmm, I had to drop the series at the moment, since it seems needing more > > work to deal with default_options(), which breaks my device setup. > > For example, set_opt(sbi, READ_EXTENT_CACHE) in d

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
Hmm, I had to drop the series at the moment, since it seems needing more work to deal with default_options(), which breaks my device setup. For example, set_opt(sbi, READ_EXTENT_CACHE) in default_options is not propagating to the below logics. In this case, do we need ctx_set_opt() if user doesn't

Re: [f2fs-dev] [PATCH V3 5/7] f2fs: separate the options parsing and options checking

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/06, Eric Sandeen wrote: > On 5/6/25 5:01 PM, Jaegeuk Kim wrote: > > > > >> +static int f2fs_check_opt_consistency(struct fs_context *fc, > >> +struct super_block *sb) > >> +{ > >> + struct f2fs_fs_context *c

Re: [f2fs-dev] [PATCH V3 5/7] f2fs: separate the options parsing and options checking

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/23, Eric Sandeen wrote: > From: Hongbo Li > > The new mount api separates option parsing and super block setup > into two distinct steps and so we need to separate the options > parsing out of the parse_options(). > > In order to achieve this, here we handle the mount options with > three

Re: [f2fs-dev] [PATCH V3 2/7] f2fs: move the option parser into handle_mount_opt

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/23, Eric Sandeen wrote: > From: Hongbo Li > > In handle_mount_opt, we use fs_parameter to parse each option. > However we're still using the old API to get the options string. > Using fsparams parse_options allows us to remove many of the Opt_ > enums, so remove them. > > The checkpoint di

Re: [f2fs-dev] [PATCH V3 0/7] f2fs: new mount API conversion

2025-05-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 05/05, Eric Sandeen wrote: > Hi all - it would be nice to get some review or feedback on this; > seems that these patches tend to go stale fairly quickly as f2fs > evolves. :) Thank you so much for the work! Let me queue this series into dev-test for tests. If I find any issue, let me ping to t

Re: [f2fs-dev] [PATCH 009/153] f2fs: Use a folio in f2fs_quota_read()

2025-04-28 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/27, Chao Yu wrote: > On 4/1/25 04:10, Matthew Wilcox (Oracle) wrote: > > Support arbitrary size folios and remove a few hidden calls to > > compound_head(). Also remove an unnecessary test of the uptodaate flag; > > if mapping_read_folio_gfp() cannot bring the folio uptodate, it will > > ret

Re: [f2fs-dev] [PATCH 000/153] f2fs folio conversions for 6.16

2025-04-28 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/28, Chao Yu wrote: > On 4/1/25 04:10, Matthew Wilcox (Oracle) wrote: > > Sorry for the length of this series. Each patch in this series builds, > > but obviously I haven't done any testing. It should be easy to bisect > > to any mistakes I've made. This conversion isn't complete; I estimat

[f2fs-dev] [PATCH] f2fs-tools: enable write hint by default

2025-04-21 Thread Jaegeuk Kim via Linux-f2fs-devel
If the device support write hints, let's assign it in Android devices. Signed-off-by: Jaegeuk Kim --- fsck/main.c | 4 mkfs/f2fs_format_main.c | 4 2 files changed, 8 insertions(+) diff --git a/fsck/main.c b/fsck/main.c index 423a9a63782c..cb51673aeda8 100644 --- a

Re: [f2fs-dev] [PATCH 003/153] f2fs: Introduce fio_inode()

2025-04-15 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi Matthew, I had to apply this in this patch, since fio can be reassigned after checking fio->in_list check. --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -946,7 +946,6 @@ static bool is_end_zone_blkaddr(struct f2fs_sb_info *sbi, block_t blkaddr) void f2fs_submit_page_write(struct f2fs_io_info

Re: [f2fs-dev] [PATCH] dump.f2fs: support dump version_bitmap and chksum in checkpoint

2025-04-14 Thread Jaegeuk Kim via Linux-f2fs-devel
external/f2fs-tools/fsck/mount.c:584:4: error: 'snprintf' will always overflow; destination buffer has size 30, but size argument is 31 [-Werror,-Wbuiltin-memcpy-chk-size] 584 | snprintf(str, 31, "%s[%d]", i == NAT_BITMAP ? On 04/14, Chao Yu wrote: > dump.f2fs -d 1 img

[f2fs-dev] [PATCH] f2fs: prevent kernel warning due to negative i_nlink from corrupted image

2025-04-12 Thread Jaegeuk Kim via Linux-f2fs-devel
0206 R12: 7ffdc232eaf0 R13: 5d0cebb0 R14: 7ffdc232d958 R15: 0001 Cc: sta...@vger.kernel.org Signed-off-by: Jaegeuk Kim --- fs/f2fs/namei.c | 9 + 1 file changed, 9 insertions(+) diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c index 8f8b9b843bdf..f17cb24

Re: [f2fs-dev] [PATCH v5] f2fs: prevent the current section from being selected as a victim during GC

2025-04-09 Thread Jaegeuk Kim via Linux-f2fs-devel
On 04/07, Chao Yu wrote: > On 4/7/25 10:08, Chao Yu wrote: > > On 4/5/25 03:55, Jaegeuk Kim wrote: > >> Hi Yohan, > >> > >> I modified this patch after applying the clean up by > >> > >> https://lore.kernel.org/linux-f2fs-devel/202504041954

Re: [f2fs-dev] [PATCH][next] f2fs: remove redundant assignment to variable err

2025-04-05 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/19, Dan Carpenter wrote: > On Wed, Mar 19, 2025 at 11:30:10AM +, Colin Ian King wrote: > > The variable err is being assigned a value zero and then the following > > goto page_hit reassigns err a new value. The zero assignment is redundant > > and can be removed. > > > > Signed-off-by: C

Re: [f2fs-dev] [PATCH v5] f2fs: prevent the current section from being selected as a victim during GC

2025-04-04 Thread Jaegeuk Kim via Linux-f2fs-devel
Hi Yohan, I modified this patch after applying the clean up by https://lore.kernel.org/linux-f2fs-devel/20250404195442.413945-1-jaeg...@kernel.org/T/#u --- a/fs/f2fs/segment.h +++ b/fs/f2fs/segment.h @@ -486,6 +486,11 @@ static inline void __set_test_and_free(struct f2fs_sb_info *sbi,

[f2fs-dev] [PATCH] f2fs: clean up unnecessary indentation

2025-04-04 Thread Jaegeuk Kim via Linux-f2fs-devel
No functional change. Signed-off-by: Jaegeuk Kim --- fs/f2fs/segment.h | 40 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h index 0465dc00b349..5fcb1f92d506 100644 --- a/fs/f2fs/segment.h +++ b/fs

Re: [f2fs-dev] [PATCH 3/3] fsck.f2fs: support to tune linear lookup feature

2025-04-04 Thread Jaegeuk Kim via Linux-f2fs-devel
Can we also update man page? On 03/31, Chao Yu wrote: > Support a new option --nolinear-lookup=X for fsck.f2fs to tune > linear lookup fallback conditionally, X=1: disable linear lookup, > X=0: enable linear lookup. > > This can help to 1) add a regression testcase to check kernel > whether linea

Re: [f2fs-dev] [PATCH v2 1/2] f2fs: zone: fix to calculate first_zoned_segno correctly

2025-03-27 Thread Jaegeuk Kim via Linux-f2fs-devel
It seems this patch breaks the multi-partition cases. On 03/25, Chao Yu wrote: > A zoned device can has both conventional zones and sequential zones, > so we should not treat first segment of zoned device as first_zoned_segno, > instead, we need to check zone type for each zone during traversing z

Re: [f2fs-dev] [PATCH 0/4] f2fs: Remove uses of writepage

2025-03-27 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/26, Matthew Wilcox wrote: > On Fri, Mar 14, 2025 at 09:38:15PM +0000, Jaegeuk Kim wrote: > > On 03/14, Matthew Wilcox wrote: > > > Unfortunately, I thnk I have to abandon this effort. It's only going > > > to make supporting large folios harder (ie ther

[f2fs-dev] [GIT PULL] f2fs update for 6.15-rc1

2025-03-24 Thread Jaegeuk Kim via Linux-f2fs-devel
ather than sb to quota qf_name helpers f2fs: pass sbi rather than sb to parse_options() Jaegeuk Kim (6): f2fs: introduce f2fs_base_attr for global sysfs entries f2fs: add ioctl to get IO priority hint f2fs: keep POSIX_FADV_NOREUSE ranges f2fs: add a sysfs entry to re

Re: [f2fs-dev] [PATCH v2] f2fs: support zero sized file truncate for device aliasing files

2025-03-24 Thread Jaegeuk Kim via Linux-f2fs-devel
Do we still need this patch? On 03/21, Daeho Jeong wrote: > From: Daeho Jeong > > support a file truncation to zero size for device aliasing files. > > Signed-off-by: Daeho Jeong > --- > v2: make the extent length zero > --- > fs/f2fs/file.c | 7 ++- > 1 file changed, 6 insertions(+), 1 d

Re: [f2fs-dev] [f2fs-dev v2] [PATCH] f2fs_io: add fragread command to evaluate fragmented buffer for reads

2025-03-18 Thread Jaegeuk Kim via Linux-f2fs-devel
Ping. On 03/17, Jaegeuk Kim via Linux-f2fs-devel wrote: > This adds a fragread command in f2fs_io, which is able to measure the > read performance on fragmented data buffer. > > Signed-off-by: Jaegeuk Kim > --- > > Change log from v1: > - add mlock > >

[f2fs-dev] [PATCH] f2fs_io: add fragread command to evaluate fragmented buffer for reads

2025-03-17 Thread Jaegeuk Kim via Linux-f2fs-devel
This adds a fragread command in f2fs_io, which is able to measure the read performance on fragmented data buffer. Signed-off-by: Jaegeuk Kim --- tools/f2fs_io/f2fs_io.c | 114 1 file changed, 114 insertions(+) diff --git a/tools/f2fs_io/f2fs_io.c b

Re: [f2fs-dev] [f2fs-dev v2] [PATCH] f2fs_io: add fragread command to evaluate fragmented buffer for reads

2025-03-17 Thread Jaegeuk Kim via Linux-f2fs-devel
This adds a fragread command in f2fs_io, which is able to measure the read performance on fragmented data buffer. Signed-off-by: Jaegeuk Kim --- Change log from v1: - add mlock tools/f2fs_io/f2fs_io.c | 114 1 file changed, 114 insertions(+) diff

Re: [f2fs-dev] [PATCH v3] f2fs: fix missing discard candidates in fstrim

2025-03-15 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/12, Chunhai Guo wrote: > fstrim may miss candidates that need to be discarded, as shown in the > examples below. > > The root cause is that when cpc->reason is set with CP_DISCARD, > add_discard_addrs() expects that ckpt_valid_map and cur_valid_map have > been synced by seg_info_to_raw_sit()

Re: [f2fs-dev] [PATCH] f2fs: fix to avoid atomicity corruption of atomic file

2025-03-14 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/14, Jaegeuk Kim wrote: > On 03/14, Yeongjin Gil wrote: > > In the case of the following call stack for an atomic file, > > FI_DIRTY_INODE is set, but FI_ATOMIC_DIRTIED is not subsequently set. > > > > f2fs_file_write_iter > > f2fs_map_block

Re: [f2fs-dev] [PATCH 0/4] f2fs: Remove uses of writepage

2025-03-14 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/14, Matthew Wilcox wrote: > On Wed, Mar 12, 2025 at 01:22:41AM +0000, Jaegeuk Kim wrote: > > On 03/12, Matthew Wilcox wrote: > > > On Tue, Mar 11, 2025 at 07:50:38PM +, patchwork-bot+f...@kernel.org > > > wrote: > > > > Hello: > > > >

Re: [f2fs-dev] [PATCH] f2fs: fix to avoid atomicity corruption of atomic file

2025-03-14 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/14, Yeongjin Gil wrote: > In the case of the following call stack for an atomic file, > FI_DIRTY_INODE is set, but FI_ATOMIC_DIRTIED is not subsequently set. > > f2fs_file_write_iter > f2fs_map_blocks > f2fs_reserve_new_blocks > inc_valid_block_count > __mark_inode_dirty(

Re: [f2fs-dev] [PATCH 0/4] f2fs: Remove uses of writepage

2025-03-11 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/12, Matthew Wilcox wrote: > On Tue, Mar 11, 2025 at 07:50:38PM +, patchwork-bot+f...@kernel.org wrote: > > Hello: > > > > This series was applied to jaegeuk/f2fs.git (dev) > > by Jaegeuk Kim : > > Thanks! > > FWIW, I have a tree with 75 pa

Re: [f2fs-dev] [PATCH] Revert "f2fs: rebuild nat_bits during umount"

2025-03-11 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/06, Chao Yu wrote: > On 3/5/25 22:33, Jaegeuk Kim wrote: > > Chao, > > > > How about disabling nat_bits during mount and removing all the relevant > > codes > > together? > > Jaegeuk, let me do this in separated patches: > - remove recovery code &

Re: [f2fs-dev] [PATCH] f2fs_io: add fragread command to evaluate fragmented buffer for reads

2025-03-11 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/11, Chao Yu wrote: > On 3/4/25 09:10, Jaegeuk Kim via Linux-f2fs-devel wrote: > > From: Jaegeuk Kim > > > > This adds a fragread command in f2fs_io, which is able to measure the > > read performance on fragmented data buffer. > > > > Signed-off-by:

Re: [f2fs-dev] [PATCH 0/4] f2fs: Remove uses of writepage

2025-03-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/07, Matthew Wilcox wrote: > On Fri, Mar 07, 2025 at 08:39:56PM +0000, Jaegeuk Kim wrote: > > On 03/07, Matthew Wilcox (Oracle) wrote: > > > I was planning on sending this next cycle, but maybe there's time to > > > squeeze these patches into the upcoming

[f2fs-dev] [PATCH] f2fs_io: fix wrong ioctl

2025-03-07 Thread Jaegeuk Kim via Linux-f2fs-devel
Signed-off-by: Jaegeuk Kim --- tools/f2fs_io/f2fs_io.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/f2fs_io/f2fs_io.h b/tools/f2fs_io/f2fs_io.h index f2d0a0827ca5..21fd3864a20d 100644 --- a/tools/f2fs_io/f2fs_io.h +++ b/tools/f2fs_io/f2fs_io.h @@ -95,7 +95,7

Re: [f2fs-dev] [PATCH 0/4] f2fs: Remove uses of writepage

2025-03-07 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/07, Matthew Wilcox (Oracle) wrote: > I was planning on sending this next cycle, but maybe there's time to > squeeze these patches into the upcoming merge window? > > f2fs already implements writepages and migrate_folio for all three > address_space_operations, so either ->writepage will neve

Re: [f2fs-dev] [PATCH] f2fs: disalbe nat_bits by default

2025-03-07 Thread Jaegeuk Kim via Linux-f2fs-devel
I meant let's support it conservatively if someone needs to enable in other platform. On 03/07, Chao Yu wrote: > Let's disable nat_bits by default. > > Signed-off-by: Chao Yu > --- > fs/f2fs/node.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c > in

Re: [f2fs-dev] [PATCH] f2fs-tools: disable nat_bits by default in Android

2025-03-06 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/05, Chao Yu wrote: > This patch turns off nat_bits feature by default in Android, > for other scenario, keep it on and keep an eye on it. > > Signed-off-by: Chao Yu > --- > fsck/mount.c| 3 ++- > include/f2fs_fs.h | 6 ++ > mkfs/f2fs_format.c | 3 ++- > mkfs/f2fs

Re: [f2fs-dev] [PATCH] f2fs: subtract current_reserved_blocks from total

2025-03-05 Thread Jaegeuk Kim via Linux-f2fs-devel
On 03/05, Chao Yu wrote: > On 3/5/25 03:20, Daeho Jeong wrote: > > From: Daeho Jeong > > > > current_reserved_blocks is not allowed to utilize. For some zoned > > storage devices, vendors will provide extra space which was used for > > device level GC than specs and we will use this space for fil

Re: [f2fs-dev] [PATCH] Revert "f2fs: rebuild nat_bits during umount"

2025-03-05 Thread Jaegeuk Kim via Linux-f2fs-devel
Chao, How about disabling nat_bits during mount and removing all the relevant codes together? On 03/05, Chao Yu wrote: > It reports that there is potential corruption in node footer, > the most suspious feature is nat_bits, let's revert recovery > related code. > > Signed-off-by: Chao Yu > ---

[f2fs-dev] [PATCH] f2fs_io: add fragread command to evaluate fragmented buffer for reads

2025-03-03 Thread Jaegeuk Kim via Linux-f2fs-devel
From: Jaegeuk Kim This adds a fragread command in f2fs_io, which is able to measure the read performance on fragmented data buffer. Signed-off-by: Jaegeuk Kim --- tools/f2fs_io/f2fs_io.c | 110 1 file changed, 110 insertions(+) diff --git a/tools

[f2fs-dev] [PATCH] f2fs: set highest IO priority for checkpoint thread

2025-03-03 Thread Jaegeuk Kim via Linux-f2fs-devel
The checkpoint is the top priority thread which can stop all the filesystem operations. Let's make it RT priority. Signed-off-by: Jaegeuk Kim --- fs/f2fs/checkpoint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c

[f2fs-dev] [PATCH 2/2] f2fs_io: add ioprio command to give a io priority hint

2025-02-28 Thread Jaegeuk Kim via Linux-f2fs-devel
This adds a command to call ioctl(F2FS_IOC_IO_PRIO). Signed-off-by: Jaegeuk Kim --- man/f2fs_io.8 | 3 +++ tools/f2fs_io/f2fs_io.c | 35 +++ tools/f2fs_io/f2fs_io.h | 7 +++ 3 files changed, 45 insertions(+) diff --git a/man/f2fs_io.8 b/man

[f2fs-dev] [PATCH 1/2] f2fs_io: support fadvise dontneed, random, and noreuse

2025-02-28 Thread Jaegeuk Kim via Linux-f2fs-devel
Signed-off-by: Jaegeuk Kim --- man/f2fs_io.8 | 3 ++- tools/f2fs_io/f2fs_io.c | 9 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/man/f2fs_io.8 b/man/f2fs_io.8 index 97a893b26114..5def508e494f 100644 --- a/man/f2fs_io.8 +++ b/man/f2fs_io.8 @@ -54,7 +54,8

Re: [f2fs-dev] [PATCH 03/27] f2fs: Add f2fs_folio_put()

2025-02-27 Thread Jaegeuk Kim via Linux-f2fs-devel
On 02/24, Jaegeuk Kim wrote: > Hi Matthew, > > On 02/21, Jaegeuk Kim wrote: > > On 02/18, Matthew Wilcox (Oracle) wrote: > > > Convert f2fs_put_page() to f2fs_folio_put() and add a wrapper. > > > Replaces three calls to compound_head() with one. > > > &

[f2fs-dev] [PATCH] f2fs: fix the missing write pointer correction

2025-02-27 Thread Jaegeuk Kim via Linux-f2fs-devel
If checkpoint was disabled, we missed to fix the write pointers. Cc: Fixes: 1015035609e4 ("f2fs: fix changing cursegs if recovery fails on zoned device") Signed-off-by: Jaegeuk Kim --- fs/f2fs/super.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/f2fs/su

Re: [f2fs-dev] [PATCH v4] f2fs: add check for deleted inode

2025-02-26 Thread Jaegeuk Kim via Linux-f2fs-devel
On 02/26, Chao Yu wrote: > On 2/26/25 11:28, Jaegeuk Kim wrote: > > On 02/24, Chao Yu wrote: > >> On 2/14/25 09:44, Chao Yu wrote: > >>> On 2/14/25 01:38, Jaegeuk Kim wrote: > >>>> On 02/13, Chao Yu wrote: > >>>>> On 2/1

  1   2   3   4   5   6   7   8   9   10   >