2015-08-11 01:23:30

by Jaegeuk Kim

[permalink] [raw]
Subject: [PATCH 1/2] f2fs: increase the number of max hard links

This patch increases the number of maximum hard links for one file.

Signed-off-by: Jaegeuk Kim <[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 3884794..f18d31e 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -321,7 +321,7 @@ enum {
*/
};

-#define F2FS_LINK_MAX 32000 /* maximum link count per file */
+#define F2FS_LINK_MAX 65536 /* maximum link count per file */

#define MAX_DIR_RA_PAGES 4 /* maximum ra pages of dir */

--
2.1.1


2015-08-11 01:23:34

by Jaegeuk Kim

[permalink] [raw]
Subject: [PATCH 2/2] f2fs: skip checkpoint if there is no dirty segments

We should avoid wrong checkpoints when there is no dirty segments.

Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/gc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index fcb263a..c4ed116 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -809,13 +809,14 @@ gc_more:
if (unlikely(f2fs_cp_error(sbi)))
goto stop;

+ if (!__get_victim(sbi, &segno, gc_type))
+ goto stop;
+
if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) {
gc_type = FG_GC;
write_checkpoint(sbi, &cpc);
}

- if (!__get_victim(sbi, &segno, gc_type))
- goto stop;
ret = 0;

/* readahead multi ssa blocks those have contiguous address */
--
2.1.1

2015-08-12 05:09:20

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [PATCH 2/2 v2] f2fs: skip checkpoint if there is no dirty segments

Change log from v1:
- fix skipping gc incorrectly

>From 06f90d3757a6b7ff524cc112168488f31bbf830f Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <[email protected]>
Date: Tue, 11 Aug 2015 21:59:49 -0700
Subject: [PATCH] f2fs: skip checkpoint if there is no dirty and prefree
segments

We should avoid needless checkpoints when there is no dirty and prefree segment.

Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/gc.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index fcb263a..98bf538 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -811,7 +811,8 @@ gc_more:

if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) {
gc_type = FG_GC;
- write_checkpoint(sbi, &cpc);
+ if (dirty_segments(sbi) || prefree_segments(sbi))
+ write_checkpoint(sbi, &cpc);
}

if (!__get_victim(sbi, &segno, gc_type))
--
2.1.1

2015-08-12 09:43:17

by Chao Yu

[permalink] [raw]
Subject: RE: [f2fs-dev] [PATCH 1/2] f2fs: increase the number of max hard links

> -----Original Message-----
> From: Jaegeuk Kim [mailto:[email protected]]
> Sent: Tuesday, August 11, 2015 9:23 AM
> To: [email protected]; [email protected];
> [email protected]
> Cc: Jaegeuk Kim
> Subject: [f2fs-dev] [PATCH 1/2] f2fs: increase the number of max hard links
>
> This patch increases the number of maximum hard links for one file.
>
> Signed-off-by: Jaegeuk Kim <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

2015-08-12 09:44:20

by Chao Yu

[permalink] [raw]
Subject: RE: [f2fs-dev] [PATCH 2/2 v2] f2fs: skip checkpoint if there is no dirty segments

> -----Original Message-----
> From: Jaegeuk Kim [mailto:[email protected]]
> Sent: Wednesday, August 12, 2015 1:09 PM
> To: [email protected]; [email protected];
> [email protected]
> Subject: Re: [f2fs-dev] [PATCH 2/2 v2] f2fs: skip checkpoint if there is no dirty segments
>
> Change log from v1:
> - fix skipping gc incorrectly
>
> >From 06f90d3757a6b7ff524cc112168488f31bbf830f Mon Sep 17 00:00:00 2001
> From: Jaegeuk Kim <[email protected]>
> Date: Tue, 11 Aug 2015 21:59:49 -0700
> Subject: [PATCH] f2fs: skip checkpoint if there is no dirty and prefree
> segments
>
> We should avoid needless checkpoints when there is no dirty and prefree segment.
>
> Signed-off-by: Jaegeuk Kim <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

2015-08-13 01:26:54

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH 2/2 v3] f2fs: skip checkpoint if there is no dirty segments

Change log from v2:
- consider omitting current dirty segments

>From 181cb245f6a406e89c00976f65a5727956a72942 Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <[email protected]>
Date: Tue, 11 Aug 2015 21:59:49 -0700
Subject: [PATCH] f2fs: skip checkpoint if there is no dirty and prefree
segments

We should avoid needless checkpoints when there is no dirty and prefree segment.

eviewed-by: Chao Yu <[email protected]>
Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/gc.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index fcb263a..81de28d8 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -792,7 +792,8 @@ static void do_garbage_collect(struct f2fs_sb_info *sbi, unsigned int segno,

int f2fs_gc(struct f2fs_sb_info *sbi)
{
- unsigned int segno, i;
+ unsigned int segno = NULL_SEGNO;
+ unsigned int i;
int gc_type = BG_GC;
int nfree = 0;
int ret = -1;
@@ -811,10 +812,11 @@ gc_more:

if (gc_type == BG_GC && has_not_enough_free_secs(sbi, nfree)) {
gc_type = FG_GC;
- write_checkpoint(sbi, &cpc);
+ if (__get_victim(sbi, &segno, gc_type) || prefree_segments(sbi))
+ write_checkpoint(sbi, &cpc);
}

- if (!__get_victim(sbi, &segno, gc_type))
+ if (segno == NULL_SEGNO && !__get_victim(sbi, &segno, gc_type))
goto stop;
ret = 0;

--
2.1.1

2015-08-14 23:24:02

by Jaegeuk Kim

[permalink] [raw]
Subject: Re: [f2fs-dev] [PATCH 1/2] f2fs: increase the number of max hard links

Change log from v1:
o increase to the maximum since we have 32 bit structure

>From 448ffa6a623cae1c3537114b9d10f92d1ddf03f5 Mon Sep 17 00:00:00 2001
From: Jaegeuk Kim <[email protected]>
Date: Mon, 10 Aug 2015 15:01:12 -0700
Subject: [PATCH] f2fs: increase the number of max hard links

This patch increases the number of maximum hard links for one file.

Reviewed-by: Chao Yu <[email protected]>
Signed-off-by: Jaegeuk Kim <[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 a55169a..00591f7 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -322,7 +322,7 @@ enum {
*/
};

-#define F2FS_LINK_MAX 32000 /* maximum link count per file */
+#define F2FS_LINK_MAX 0xffffffff /* maximum link count per file */

#define MAX_DIR_RA_PAGES 4 /* maximum ra pages of dir */

--
2.1.1