All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] f2fs: enable inline data by default
@ 2015-03-22 23:43 ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-22 23:43 UTC (permalink / raw)
  To: Jaegeuk Kim
  Cc: Changman Lee, Chao Yu, linux-f2fs-devel, linux-fsdevel,
	linux-kernel, Wanpeng Li

Enable inline_data feature by default since it brings us better
performance and space utilization and now has already stable.
Add another option noinline_data to disable it during mount.

Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
Suggested-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
v1 -> v2:
 * retain inline_data option and enable it by default
 * add another noinline_data option

 Documentation/filesystems/f2fs.txt | 2 ++
 fs/f2fs/f2fs.h                     | 1 +
 fs/f2fs/inline.c                   | 2 +-
 fs/f2fs/super.c                    | 8 ++++++++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
index 48e2123..e9e750e 100644
--- a/Documentation/filesystems/f2fs.txt
+++ b/Documentation/filesystems/f2fs.txt
@@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can cache
                        as many as extent which map between contiguous logical
                        address and physical address per inode, resulting in
                        increasing the cache hit ratio.
+noinline_data          Disable the inline data feature, inline data feature is
+                       enabled by default.
 
 ================================================================================
 DEBUGFS ENTRIES
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index f2909c6..6d4ceb3 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -51,6 +51,7 @@
 #define F2FS_MOUNT_NOBARRIER		0x00000800
 #define F2FS_MOUNT_FASTBOOT		0x00001000
 #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
+#define F2FS_MOUNT_NOINLINE_DATA	0x00004000
 
 #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
 #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index d3e0599..0363b57 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -15,7 +15,7 @@
 
 bool f2fs_may_inline(struct inode *inode)
 {
-	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
+	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
 		return false;
 
 	if (f2fs_is_atomic_file(inode))
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index fc6857f..7b17795 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -58,6 +58,7 @@ enum {
 	Opt_nobarrier,
 	Opt_fastboot,
 	Opt_extent_cache,
+	Opt_noinline_data,
 	Opt_err,
 };
 
@@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
 	{Opt_nobarrier, "nobarrier"},
 	{Opt_fastboot, "fastboot"},
 	{Opt_extent_cache, "extent_cache"},
+	{Opt_noinline_data, "noinline_data"},
 	{Opt_err, NULL},
 };
 
@@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
 		case Opt_extent_cache:
 			set_opt(sbi, EXTENT_CACHE);
 			break;
+		case Opt_noinline_data:
+			set_opt(sbi, NOINLINE_DATA);
+			break;
 		default:
 			f2fs_msg(sb, KERN_ERR,
 				"Unrecognized mount option \"%s\" or missing value",
@@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 		seq_puts(seq, ",fastboot");
 	if (test_opt(sbi, EXTENT_CACHE))
 		seq_puts(seq, ",extent_cache");
+	if (test_opt(sbi, NOINLINE_DATA))
+		seq_puts(seq, ",noinline_data");
 	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
 
 	return 0;
@@ -991,6 +998,7 @@ try_onemore:
 	sbi->active_logs = NR_CURSEG_TYPE;
 
 	set_opt(sbi, BG_GC);
+	set_opt(sbi, INLINE_DATA);
 
 #ifdef CONFIG_F2FS_FS_XATTR
 	set_opt(sbi, XATTR_USER);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 1/2] f2fs: enable inline data by default
@ 2015-03-22 23:43 ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-22 23:43 UTC (permalink / raw)
  To: Jaegeuk Kim; +Cc: linux-kernel, linux-f2fs-devel, linux-fsdevel

Enable inline_data feature by default since it brings us better
performance and space utilization and now has already stable.
Add another option noinline_data to disable it during mount.

Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
Suggested-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
v1 -> v2:
 * retain inline_data option and enable it by default
 * add another noinline_data option

 Documentation/filesystems/f2fs.txt | 2 ++
 fs/f2fs/f2fs.h                     | 1 +
 fs/f2fs/inline.c                   | 2 +-
 fs/f2fs/super.c                    | 8 ++++++++
 4 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
index 48e2123..e9e750e 100644
--- a/Documentation/filesystems/f2fs.txt
+++ b/Documentation/filesystems/f2fs.txt
@@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can cache
                        as many as extent which map between contiguous logical
                        address and physical address per inode, resulting in
                        increasing the cache hit ratio.
+noinline_data          Disable the inline data feature, inline data feature is
+                       enabled by default.
 
 ================================================================================
 DEBUGFS ENTRIES
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index f2909c6..6d4ceb3 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -51,6 +51,7 @@
 #define F2FS_MOUNT_NOBARRIER		0x00000800
 #define F2FS_MOUNT_FASTBOOT		0x00001000
 #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
+#define F2FS_MOUNT_NOINLINE_DATA	0x00004000
 
 #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
 #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index d3e0599..0363b57 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -15,7 +15,7 @@
 
 bool f2fs_may_inline(struct inode *inode)
 {
-	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
+	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
 		return false;
 
 	if (f2fs_is_atomic_file(inode))
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index fc6857f..7b17795 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -58,6 +58,7 @@ enum {
 	Opt_nobarrier,
 	Opt_fastboot,
 	Opt_extent_cache,
+	Opt_noinline_data,
 	Opt_err,
 };
 
@@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
 	{Opt_nobarrier, "nobarrier"},
 	{Opt_fastboot, "fastboot"},
 	{Opt_extent_cache, "extent_cache"},
+	{Opt_noinline_data, "noinline_data"},
 	{Opt_err, NULL},
 };
 
@@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
 		case Opt_extent_cache:
 			set_opt(sbi, EXTENT_CACHE);
 			break;
+		case Opt_noinline_data:
+			set_opt(sbi, NOINLINE_DATA);
+			break;
 		default:
 			f2fs_msg(sb, KERN_ERR,
 				"Unrecognized mount option \"%s\" or missing value",
@@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
 		seq_puts(seq, ",fastboot");
 	if (test_opt(sbi, EXTENT_CACHE))
 		seq_puts(seq, ",extent_cache");
+	if (test_opt(sbi, NOINLINE_DATA))
+		seq_puts(seq, ",noinline_data");
 	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
 
 	return 0;
@@ -991,6 +998,7 @@ try_onemore:
 	sbi->active_logs = NR_CURSEG_TYPE;
 
 	set_opt(sbi, BG_GC);
+	set_opt(sbi, INLINE_DATA);
 
 #ifdef CONFIG_F2FS_FS_XATTR
 	set_opt(sbi, XATTR_USER);
-- 
1.9.1


------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/2] f2fs: enable fast symlink by utilizing inline data
  2015-03-22 23:43 ` Wanpeng Li
@ 2015-03-22 23:44   ` Wanpeng Li
  -1 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-22 23:44 UTC (permalink / raw)
  To: Jaegeuk Kim
  Cc: Changman Lee, Chao Yu, linux-f2fs-devel, linux-fsdevel,
	linux-kernel, Wanpeng Li

Fast symlink can utilize inline data flow to avoid using any
i_addr region, since we need to handle many cases such as
truncation, roll-forward recovery, and fsck/dump tools.

Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
 fs/f2fs/inline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 0363b57..b93d6a0 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -21,7 +21,7 @@ bool f2fs_may_inline(struct inode *inode)
 	if (f2fs_is_atomic_file(inode))
 		return false;
 
-	if (!S_ISREG(inode->i_mode))
+	if (!S_ISREG(inode->i_mode) && !S_ISLNK(inode->i_mode))
 		return false;
 
 	if (i_size_read(inode) > MAX_INLINE_DATA)
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/2] f2fs: enable fast symlink by utilizing inline data
@ 2015-03-22 23:44   ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-22 23:44 UTC (permalink / raw)
  To: Jaegeuk Kim; +Cc: linux-kernel, linux-f2fs-devel, linux-fsdevel

Fast symlink can utilize inline data flow to avoid using any
i_addr region, since we need to handle many cases such as
truncation, roll-forward recovery, and fsck/dump tools.

Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
---
 fs/f2fs/inline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 0363b57..b93d6a0 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -21,7 +21,7 @@ bool f2fs_may_inline(struct inode *inode)
 	if (f2fs_is_atomic_file(inode))
 		return false;
 
-	if (!S_ISREG(inode->i_mode))
+	if (!S_ISREG(inode->i_mode) && !S_ISLNK(inode->i_mode))
 		return false;
 
 	if (i_size_read(inode) > MAX_INLINE_DATA)
-- 
1.9.1


------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] f2fs: enable inline data by default
  2015-03-23  7:25 ` [PATCH v2 1/2] f2fs: enable inline data by default Chao Yu
@ 2015-03-23  7:15     ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-23  7:15 UTC (permalink / raw)
  To: Chao Yu
  Cc: 'Jaegeuk Kim', 'Changman Lee',
	linux-f2fs-devel, linux-fsdevel, linux-kernel, Wanpeng Li

Hi Chao,
On Mon, Mar 23, 2015 at 03:25:45PM +0800, Chao Yu wrote:
>Hi Wanpeng,
>
>> -----Original Message-----
>> From: Wanpeng Li [mailto:wanpeng.li@linux.intel.com]
>> Sent: Monday, March 23, 2015 7:44 AM
>> To: Jaegeuk Kim
>> Cc: Changman Lee; Chao Yu; linux-f2fs-devel@lists.sourceforge.net;
>> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; Wanpeng Li
>> Subject: [PATCH v2 1/2] f2fs: enable inline data by default
>> 
>> Enable inline_data feature by default since it brings us better
>> performance and space utilization and now has already stable.
>> Add another option noinline_data to disable it during mount.
>> 
>> Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
>> Suggested-by: Chao Yu <chao2.yu@samsung.com>
>> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
>> ---
>> v1 -> v2:
>>  * retain inline_data option and enable it by default
>>  * add another noinline_data option
>> 
>>  Documentation/filesystems/f2fs.txt | 2 ++
>>  fs/f2fs/f2fs.h                     | 1 +
>>  fs/f2fs/inline.c                   | 2 +-
>>  fs/f2fs/super.c                    | 8 ++++++++
>>  4 files changed, 12 insertions(+), 1 deletion(-)
>> 
>> diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
>> index 48e2123..e9e750e 100644
>> --- a/Documentation/filesystems/f2fs.txt
>> +++ b/Documentation/filesystems/f2fs.txt
>> @@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can cache
>>                         as many as extent which map between contiguous logical
>>                         address and physical address per inode, resulting in
>>                         increasing the cache hit ratio.
>> +noinline_data          Disable the inline data feature, inline data feature is
>> +                       enabled by default.
>> 
>>  ================================================================================
>>  DEBUGFS ENTRIES
>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>> index f2909c6..6d4ceb3 100644
>> --- a/fs/f2fs/f2fs.h
>> +++ b/fs/f2fs/f2fs.h
>> @@ -51,6 +51,7 @@
>>  #define F2FS_MOUNT_NOBARRIER		0x00000800
>>  #define F2FS_MOUNT_FASTBOOT		0x00001000
>>  #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
>> +#define F2FS_MOUNT_NOINLINE_DATA	0x00004000
>
>May be we could reuse F2FS_MOUNT_INLINE_DATA for saving inline/noinline status
>like F2FS_MOUNT_BG_GC.
>
>e.g.
>parse_options:
>	case Opt_noinline_data:
>		clear_opt(sbi, INLINE_DATA);
>		break;
>
>f2fs_show_options:
>	if (test_opt(sbi, INLINE_DATA))
>		seq_puts(seq, ",inline_data");
>	else
>		seq_puts(seq, ",noinline_data");
>
>So we can avoid to show both options "inline_data,noinline_data" in ->show_options
>if we mount with noinline_data, since this will make our user confused.

I didn't see "inline_data, noinline_data" w/ noinline_data mount option, just
"rw,noinline_data" dump out. 

Ping Jaegeuk!

Regards,
Wanpeng Li 

>
>How do you think?
>
>Thanks,
>
>> 
>>  #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
>>  #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
>> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
>> index d3e0599..0363b57 100644
>> --- a/fs/f2fs/inline.c
>> +++ b/fs/f2fs/inline.c
>> @@ -15,7 +15,7 @@
>> 
>>  bool f2fs_may_inline(struct inode *inode)
>>  {
>> -	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
>> +	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
>>  		return false;
>> 
>>  	if (f2fs_is_atomic_file(inode))
>> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> index fc6857f..7b17795 100644
>> --- a/fs/f2fs/super.c
>> +++ b/fs/f2fs/super.c
>> @@ -58,6 +58,7 @@ enum {
>>  	Opt_nobarrier,
>>  	Opt_fastboot,
>>  	Opt_extent_cache,
>> +	Opt_noinline_data,
>>  	Opt_err,
>>  };
>> 
>> @@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
>>  	{Opt_nobarrier, "nobarrier"},
>>  	{Opt_fastboot, "fastboot"},
>>  	{Opt_extent_cache, "extent_cache"},
>> +	{Opt_noinline_data, "noinline_data"},
>>  	{Opt_err, NULL},
>>  };
>> 
>> @@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
>>  		case Opt_extent_cache:
>>  			set_opt(sbi, EXTENT_CACHE);
>>  			break;
>> +		case Opt_noinline_data:
>> +			set_opt(sbi, NOINLINE_DATA);
>> +			break;
>>  		default:
>>  			f2fs_msg(sb, KERN_ERR,
>>  				"Unrecognized mount option \"%s\" or missing value",
>> @@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>>  		seq_puts(seq, ",fastboot");
>>  	if (test_opt(sbi, EXTENT_CACHE))
>>  		seq_puts(seq, ",extent_cache");
>> +	if (test_opt(sbi, NOINLINE_DATA))
>> +		seq_puts(seq, ",noinline_data");
>>  	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
>> 
>>  	return 0;
>> @@ -991,6 +998,7 @@ try_onemore:
>>  	sbi->active_logs = NR_CURSEG_TYPE;
>> 
>>  	set_opt(sbi, BG_GC);
>> +	set_opt(sbi, INLINE_DATA);
>> 
>>  #ifdef CONFIG_F2FS_FS_XATTR
>>  	set_opt(sbi, XATTR_USER);
>> --
>> 1.9.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] f2fs: enable inline data by default
@ 2015-03-23  7:15     ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-23  7:15 UTC (permalink / raw)
  To: Chao Yu
  Cc: linux-kernel, linux-f2fs-devel, linux-fsdevel, 'Jaegeuk Kim'

Hi Chao,
On Mon, Mar 23, 2015 at 03:25:45PM +0800, Chao Yu wrote:
>Hi Wanpeng,
>
>> -----Original Message-----
>> From: Wanpeng Li [mailto:wanpeng.li@linux.intel.com]
>> Sent: Monday, March 23, 2015 7:44 AM
>> To: Jaegeuk Kim
>> Cc: Changman Lee; Chao Yu; linux-f2fs-devel@lists.sourceforge.net;
>> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; Wanpeng Li
>> Subject: [PATCH v2 1/2] f2fs: enable inline data by default
>> 
>> Enable inline_data feature by default since it brings us better
>> performance and space utilization and now has already stable.
>> Add another option noinline_data to disable it during mount.
>> 
>> Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
>> Suggested-by: Chao Yu <chao2.yu@samsung.com>
>> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
>> ---
>> v1 -> v2:
>>  * retain inline_data option and enable it by default
>>  * add another noinline_data option
>> 
>>  Documentation/filesystems/f2fs.txt | 2 ++
>>  fs/f2fs/f2fs.h                     | 1 +
>>  fs/f2fs/inline.c                   | 2 +-
>>  fs/f2fs/super.c                    | 8 ++++++++
>>  4 files changed, 12 insertions(+), 1 deletion(-)
>> 
>> diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
>> index 48e2123..e9e750e 100644
>> --- a/Documentation/filesystems/f2fs.txt
>> +++ b/Documentation/filesystems/f2fs.txt
>> @@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can cache
>>                         as many as extent which map between contiguous logical
>>                         address and physical address per inode, resulting in
>>                         increasing the cache hit ratio.
>> +noinline_data          Disable the inline data feature, inline data feature is
>> +                       enabled by default.
>> 
>>  ================================================================================
>>  DEBUGFS ENTRIES
>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>> index f2909c6..6d4ceb3 100644
>> --- a/fs/f2fs/f2fs.h
>> +++ b/fs/f2fs/f2fs.h
>> @@ -51,6 +51,7 @@
>>  #define F2FS_MOUNT_NOBARRIER		0x00000800
>>  #define F2FS_MOUNT_FASTBOOT		0x00001000
>>  #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
>> +#define F2FS_MOUNT_NOINLINE_DATA	0x00004000
>
>May be we could reuse F2FS_MOUNT_INLINE_DATA for saving inline/noinline status
>like F2FS_MOUNT_BG_GC.
>
>e.g.
>parse_options:
>	case Opt_noinline_data:
>		clear_opt(sbi, INLINE_DATA);
>		break;
>
>f2fs_show_options:
>	if (test_opt(sbi, INLINE_DATA))
>		seq_puts(seq, ",inline_data");
>	else
>		seq_puts(seq, ",noinline_data");
>
>So we can avoid to show both options "inline_data,noinline_data" in ->show_options
>if we mount with noinline_data, since this will make our user confused.

I didn't see "inline_data, noinline_data" w/ noinline_data mount option, just
"rw,noinline_data" dump out. 

Ping Jaegeuk!

Regards,
Wanpeng Li 

>
>How do you think?
>
>Thanks,
>
>> 
>>  #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
>>  #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
>> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
>> index d3e0599..0363b57 100644
>> --- a/fs/f2fs/inline.c
>> +++ b/fs/f2fs/inline.c
>> @@ -15,7 +15,7 @@
>> 
>>  bool f2fs_may_inline(struct inode *inode)
>>  {
>> -	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
>> +	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
>>  		return false;
>> 
>>  	if (f2fs_is_atomic_file(inode))
>> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> index fc6857f..7b17795 100644
>> --- a/fs/f2fs/super.c
>> +++ b/fs/f2fs/super.c
>> @@ -58,6 +58,7 @@ enum {
>>  	Opt_nobarrier,
>>  	Opt_fastboot,
>>  	Opt_extent_cache,
>> +	Opt_noinline_data,
>>  	Opt_err,
>>  };
>> 
>> @@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
>>  	{Opt_nobarrier, "nobarrier"},
>>  	{Opt_fastboot, "fastboot"},
>>  	{Opt_extent_cache, "extent_cache"},
>> +	{Opt_noinline_data, "noinline_data"},
>>  	{Opt_err, NULL},
>>  };
>> 
>> @@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
>>  		case Opt_extent_cache:
>>  			set_opt(sbi, EXTENT_CACHE);
>>  			break;
>> +		case Opt_noinline_data:
>> +			set_opt(sbi, NOINLINE_DATA);
>> +			break;
>>  		default:
>>  			f2fs_msg(sb, KERN_ERR,
>>  				"Unrecognized mount option \"%s\" or missing value",
>> @@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>>  		seq_puts(seq, ",fastboot");
>>  	if (test_opt(sbi, EXTENT_CACHE))
>>  		seq_puts(seq, ",extent_cache");
>> +	if (test_opt(sbi, NOINLINE_DATA))
>> +		seq_puts(seq, ",noinline_data");
>>  	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
>> 
>>  	return 0;
>> @@ -991,6 +998,7 @@ try_onemore:
>>  	sbi->active_logs = NR_CURSEG_TYPE;
>> 
>>  	set_opt(sbi, BG_GC);
>> +	set_opt(sbi, INLINE_DATA);
>> 
>>  #ifdef CONFIG_F2FS_FS_XATTR
>>  	set_opt(sbi, XATTR_USER);
>> --
>> 1.9.1

------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH v2 1/2] f2fs: enable inline data by default
  2015-03-22 23:43 ` Wanpeng Li
  (?)
  (?)
@ 2015-03-23  7:25 ` Chao Yu
  2015-03-23  7:15     ` Wanpeng Li
  -1 siblings, 1 reply; 9+ messages in thread
From: Chao Yu @ 2015-03-23  7:25 UTC (permalink / raw)
  To: 'Wanpeng Li', 'Jaegeuk Kim'
  Cc: 'Changman Lee', linux-f2fs-devel, linux-fsdevel, linux-kernel

Hi Wanpeng,

> -----Original Message-----
> From: Wanpeng Li [mailto:wanpeng.li@linux.intel.com]
> Sent: Monday, March 23, 2015 7:44 AM
> To: Jaegeuk Kim
> Cc: Changman Lee; Chao Yu; linux-f2fs-devel@lists.sourceforge.net;
> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; Wanpeng Li
> Subject: [PATCH v2 1/2] f2fs: enable inline data by default
> 
> Enable inline_data feature by default since it brings us better
> performance and space utilization and now has already stable.
> Add another option noinline_data to disable it during mount.
> 
> Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
> Suggested-by: Chao Yu <chao2.yu@samsung.com>
> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
> ---
> v1 -> v2:
>  * retain inline_data option and enable it by default
>  * add another noinline_data option
> 
>  Documentation/filesystems/f2fs.txt | 2 ++
>  fs/f2fs/f2fs.h                     | 1 +
>  fs/f2fs/inline.c                   | 2 +-
>  fs/f2fs/super.c                    | 8 ++++++++
>  4 files changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
> index 48e2123..e9e750e 100644
> --- a/Documentation/filesystems/f2fs.txt
> +++ b/Documentation/filesystems/f2fs.txt
> @@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can cache
>                         as many as extent which map between contiguous logical
>                         address and physical address per inode, resulting in
>                         increasing the cache hit ratio.
> +noinline_data          Disable the inline data feature, inline data feature is
> +                       enabled by default.
> 
>  ================================================================================
>  DEBUGFS ENTRIES
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index f2909c6..6d4ceb3 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -51,6 +51,7 @@
>  #define F2FS_MOUNT_NOBARRIER		0x00000800
>  #define F2FS_MOUNT_FASTBOOT		0x00001000
>  #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
> +#define F2FS_MOUNT_NOINLINE_DATA	0x00004000

May be we could reuse F2FS_MOUNT_INLINE_DATA for saving inline/noinline status
like F2FS_MOUNT_BG_GC.

e.g.
parse_options:
	case Opt_noinline_data:
		clear_opt(sbi, INLINE_DATA);
		break;

f2fs_show_options:
	if (test_opt(sbi, INLINE_DATA))
		seq_puts(seq, ",inline_data");
	else
		seq_puts(seq, ",noinline_data");

So we can avoid to show both options "inline_data,noinline_data" in ->show_options
if we mount with noinline_data, since this will make our user confused.

How do you think?

Thanks,

> 
>  #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
>  #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
> index d3e0599..0363b57 100644
> --- a/fs/f2fs/inline.c
> +++ b/fs/f2fs/inline.c
> @@ -15,7 +15,7 @@
> 
>  bool f2fs_may_inline(struct inode *inode)
>  {
> -	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
> +	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
>  		return false;
> 
>  	if (f2fs_is_atomic_file(inode))
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index fc6857f..7b17795 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -58,6 +58,7 @@ enum {
>  	Opt_nobarrier,
>  	Opt_fastboot,
>  	Opt_extent_cache,
> +	Opt_noinline_data,
>  	Opt_err,
>  };
> 
> @@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
>  	{Opt_nobarrier, "nobarrier"},
>  	{Opt_fastboot, "fastboot"},
>  	{Opt_extent_cache, "extent_cache"},
> +	{Opt_noinline_data, "noinline_data"},
>  	{Opt_err, NULL},
>  };
> 
> @@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
>  		case Opt_extent_cache:
>  			set_opt(sbi, EXTENT_CACHE);
>  			break;
> +		case Opt_noinline_data:
> +			set_opt(sbi, NOINLINE_DATA);
> +			break;
>  		default:
>  			f2fs_msg(sb, KERN_ERR,
>  				"Unrecognized mount option \"%s\" or missing value",
> @@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>  		seq_puts(seq, ",fastboot");
>  	if (test_opt(sbi, EXTENT_CACHE))
>  		seq_puts(seq, ",extent_cache");
> +	if (test_opt(sbi, NOINLINE_DATA))
> +		seq_puts(seq, ",noinline_data");
>  	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
> 
>  	return 0;
> @@ -991,6 +998,7 @@ try_onemore:
>  	sbi->active_logs = NR_CURSEG_TYPE;
> 
>  	set_opt(sbi, BG_GC);
> +	set_opt(sbi, INLINE_DATA);
> 
>  #ifdef CONFIG_F2FS_FS_XATTR
>  	set_opt(sbi, XATTR_USER);
> --
> 1.9.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] f2fs: enable inline data by default
  2015-03-23  8:36     ` Chao Yu
@ 2015-03-23  8:22       ` Wanpeng Li
  0 siblings, 0 replies; 9+ messages in thread
From: Wanpeng Li @ 2015-03-23  8:22 UTC (permalink / raw)
  To: Chao Yu
  Cc: 'Jaegeuk Kim', 'Changman Lee',
	linux-f2fs-devel, linux-fsdevel, linux-kernel,
	'Wanpeng Li'

On Mon, Mar 23, 2015 at 04:36:18PM +0800, Chao Yu wrote:
>> >like F2FS_MOUNT_BG_GC.
>> >
>> >e.g.
>> >parse_options:
>> >	case Opt_noinline_data:
>> >		clear_opt(sbi, INLINE_DATA);
>> >		break;
>> >
>> >f2fs_show_options:
>> >	if (test_opt(sbi, INLINE_DATA))
>> >		seq_puts(seq, ",inline_data");
>> >	else
>> >		seq_puts(seq, ",noinline_data");
>> >
>> >So we can avoid to show both options "inline_data,noinline_data" in ->show_options
>
>Note "show content generated ->show_options", not content in /etc/mtab.
>
>> >if we mount with noinline_data, since this will make our user confused.
>> 
>> I didn't see "inline_data, noinline_data" w/ noinline_data mount option, just
>> "rw,noinline_data" dump out.
>
>Try 'cat /proc/mounts'?

Ah, I just try mount command, and "inline_data, noinline_data" dump out
when cat /proc/mounts, I will fix it soon. 

Regards,
Wanpeng Li

>
>Thanks,
>
>> 
>> Ping Jaegeuk!
>> 
>> Regards,
>> Wanpeng Li
>> 
>> >
>> >How do you think?
>> >
>> >Thanks,
>> >
>> >>
>> >>  #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
>> >>  #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
>> >> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
>> >> index d3e0599..0363b57 100644
>> >> --- a/fs/f2fs/inline.c
>> >> +++ b/fs/f2fs/inline.c
>> >> @@ -15,7 +15,7 @@
>> >>
>> >>  bool f2fs_may_inline(struct inode *inode)
>> >>  {
>> >> -	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
>> >> +	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
>> >>  		return false;
>> >>
>> >>  	if (f2fs_is_atomic_file(inode))
>> >> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> >> index fc6857f..7b17795 100644
>> >> --- a/fs/f2fs/super.c
>> >> +++ b/fs/f2fs/super.c
>> >> @@ -58,6 +58,7 @@ enum {
>> >>  	Opt_nobarrier,
>> >>  	Opt_fastboot,
>> >>  	Opt_extent_cache,
>> >> +	Opt_noinline_data,
>> >>  	Opt_err,
>> >>  };
>> >>
>> >> @@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
>> >>  	{Opt_nobarrier, "nobarrier"},
>> >>  	{Opt_fastboot, "fastboot"},
>> >>  	{Opt_extent_cache, "extent_cache"},
>> >> +	{Opt_noinline_data, "noinline_data"},
>> >>  	{Opt_err, NULL},
>> >>  };
>> >>
>> >> @@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
>> >>  		case Opt_extent_cache:
>> >>  			set_opt(sbi, EXTENT_CACHE);
>> >>  			break;
>> >> +		case Opt_noinline_data:
>> >> +			set_opt(sbi, NOINLINE_DATA);
>> >> +			break;
>> >>  		default:
>> >>  			f2fs_msg(sb, KERN_ERR,
>> >>  				"Unrecognized mount option \"%s\" or missing value",
>> >> @@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>> >>  		seq_puts(seq, ",fastboot");
>> >>  	if (test_opt(sbi, EXTENT_CACHE))
>> >>  		seq_puts(seq, ",extent_cache");
>> >> +	if (test_opt(sbi, NOINLINE_DATA))
>> >> +		seq_puts(seq, ",noinline_data");
>> >>  	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
>> >>
>> >>  	return 0;
>> >> @@ -991,6 +998,7 @@ try_onemore:
>> >>  	sbi->active_logs = NR_CURSEG_TYPE;
>> >>
>> >>  	set_opt(sbi, BG_GC);
>> >> +	set_opt(sbi, INLINE_DATA);
>> >>
>> >>  #ifdef CONFIG_F2FS_FS_XATTR
>> >>  	set_opt(sbi, XATTR_USER);
>> >> --
>> >> 1.9.1

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH v2 1/2] f2fs: enable inline data by default
  2015-03-23  7:15     ` Wanpeng Li
  (?)
@ 2015-03-23  8:36     ` Chao Yu
  2015-03-23  8:22       ` Wanpeng Li
  -1 siblings, 1 reply; 9+ messages in thread
From: Chao Yu @ 2015-03-23  8:36 UTC (permalink / raw)
  To: 'Wanpeng Li'
  Cc: 'Jaegeuk Kim', 'Changman Lee',
	linux-f2fs-devel, linux-fsdevel, linux-kernel

Hi Wanpeng,

> -----Original Message-----
> From: Wanpeng Li [mailto:wanpeng.li@linux.intel.com]
> Sent: Monday, March 23, 2015 3:15 PM
> To: Chao Yu
> Cc: 'Jaegeuk Kim'; 'Changman Lee'; linux-f2fs-devel@lists.sourceforge.net;
> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; Wanpeng Li
> Subject: Re: [PATCH v2 1/2] f2fs: enable inline data by default
> 
> Hi Chao,
> On Mon, Mar 23, 2015 at 03:25:45PM +0800, Chao Yu wrote:
> >Hi Wanpeng,
> >
> >> -----Original Message-----
> >> From: Wanpeng Li [mailto:wanpeng.li@linux.intel.com]
> >> Sent: Monday, March 23, 2015 7:44 AM
> >> To: Jaegeuk Kim
> >> Cc: Changman Lee; Chao Yu; linux-f2fs-devel@lists.sourceforge.net;
> >> linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; Wanpeng Li
> >> Subject: [PATCH v2 1/2] f2fs: enable inline data by default
> >>
> >> Enable inline_data feature by default since it brings us better
> >> performance and space utilization and now has already stable.
> >> Add another option noinline_data to disable it during mount.
> >>
> >> Suggested-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >> Suggested-by: Chao Yu <chao2.yu@samsung.com>
> >> Signed-off-by: Wanpeng Li <wanpeng.li@linux.intel.com>
> >> ---
> >> v1 -> v2:
> >>  * retain inline_data option and enable it by default
> >>  * add another noinline_data option
> >>
> >>  Documentation/filesystems/f2fs.txt | 2 ++
> >>  fs/f2fs/f2fs.h                     | 1 +
> >>  fs/f2fs/inline.c                   | 2 +-
> >>  fs/f2fs/super.c                    | 8 ++++++++
> >>  4 files changed, 12 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
> >> index 48e2123..e9e750e 100644
> >> --- a/Documentation/filesystems/f2fs.txt
> >> +++ b/Documentation/filesystems/f2fs.txt
> >> @@ -144,6 +144,8 @@ extent_cache           Enable an extent cache based on rb-tree, it can
> cache
> >>                         as many as extent which map between contiguous logical
> >>                         address and physical address per inode, resulting in
> >>                         increasing the cache hit ratio.
> >> +noinline_data          Disable the inline data feature, inline data feature is
> >> +                       enabled by default.
> >>
> >>  ================================================================================
> >>  DEBUGFS ENTRIES
> >> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> >> index f2909c6..6d4ceb3 100644
> >> --- a/fs/f2fs/f2fs.h
> >> +++ b/fs/f2fs/f2fs.h
> >> @@ -51,6 +51,7 @@
> >>  #define F2FS_MOUNT_NOBARRIER		0x00000800
> >>  #define F2FS_MOUNT_FASTBOOT		0x00001000
> >>  #define F2FS_MOUNT_EXTENT_CACHE		0x00002000
> >> +#define F2FS_MOUNT_NOINLINE_DATA	0x00004000
> >
> >May be we could reuse F2FS_MOUNT_INLINE_DATA for saving inline/noinline status
> >like F2FS_MOUNT_BG_GC.
> >
> >e.g.
> >parse_options:
> >	case Opt_noinline_data:
> >		clear_opt(sbi, INLINE_DATA);
> >		break;
> >
> >f2fs_show_options:
> >	if (test_opt(sbi, INLINE_DATA))
> >		seq_puts(seq, ",inline_data");
> >	else
> >		seq_puts(seq, ",noinline_data");
> >
> >So we can avoid to show both options "inline_data,noinline_data" in ->show_options

Note "show content generated ->show_options", not content in /etc/mtab.

> >if we mount with noinline_data, since this will make our user confused.
> 
> I didn't see "inline_data, noinline_data" w/ noinline_data mount option, just
> "rw,noinline_data" dump out.

Try 'cat /proc/mounts'?

Thanks,

> 
> Ping Jaegeuk!
> 
> Regards,
> Wanpeng Li
> 
> >
> >How do you think?
> >
> >Thanks,
> >
> >>
> >>  #define clear_opt(sbi, option)	(sbi->mount_opt.opt &= ~F2FS_MOUNT_##option)
> >>  #define set_opt(sbi, option)	(sbi->mount_opt.opt |= F2FS_MOUNT_##option)
> >> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
> >> index d3e0599..0363b57 100644
> >> --- a/fs/f2fs/inline.c
> >> +++ b/fs/f2fs/inline.c
> >> @@ -15,7 +15,7 @@
> >>
> >>  bool f2fs_may_inline(struct inode *inode)
> >>  {
> >> -	if (!test_opt(F2FS_I_SB(inode), INLINE_DATA))
> >> +	if (!test_opt(F2FS_I_SB(inode), NOINLINE_DATA))
> >>  		return false;
> >>
> >>  	if (f2fs_is_atomic_file(inode))
> >> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> >> index fc6857f..7b17795 100644
> >> --- a/fs/f2fs/super.c
> >> +++ b/fs/f2fs/super.c
> >> @@ -58,6 +58,7 @@ enum {
> >>  	Opt_nobarrier,
> >>  	Opt_fastboot,
> >>  	Opt_extent_cache,
> >> +	Opt_noinline_data,
> >>  	Opt_err,
> >>  };
> >>
> >> @@ -80,6 +81,7 @@ static match_table_t f2fs_tokens = {
> >>  	{Opt_nobarrier, "nobarrier"},
> >>  	{Opt_fastboot, "fastboot"},
> >>  	{Opt_extent_cache, "extent_cache"},
> >> +	{Opt_noinline_data, "noinline_data"},
> >>  	{Opt_err, NULL},
> >>  };
> >>
> >> @@ -372,6 +374,9 @@ static int parse_options(struct super_block *sb, char *options)
> >>  		case Opt_extent_cache:
> >>  			set_opt(sbi, EXTENT_CACHE);
> >>  			break;
> >> +		case Opt_noinline_data:
> >> +			set_opt(sbi, NOINLINE_DATA);
> >> +			break;
> >>  		default:
> >>  			f2fs_msg(sb, KERN_ERR,
> >>  				"Unrecognized mount option \"%s\" or missing value",
> >> @@ -606,6 +611,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
> >>  		seq_puts(seq, ",fastboot");
> >>  	if (test_opt(sbi, EXTENT_CACHE))
> >>  		seq_puts(seq, ",extent_cache");
> >> +	if (test_opt(sbi, NOINLINE_DATA))
> >> +		seq_puts(seq, ",noinline_data");
> >>  	seq_printf(seq, ",active_logs=%u", sbi->active_logs);
> >>
> >>  	return 0;
> >> @@ -991,6 +998,7 @@ try_onemore:
> >>  	sbi->active_logs = NR_CURSEG_TYPE;
> >>
> >>  	set_opt(sbi, BG_GC);
> >> +	set_opt(sbi, INLINE_DATA);
> >>
> >>  #ifdef CONFIG_F2FS_FS_XATTR
> >>  	set_opt(sbi, XATTR_USER);
> >> --
> >> 1.9.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-03-23  8:40 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-22 23:43 [PATCH v2 1/2] f2fs: enable inline data by default Wanpeng Li
2015-03-22 23:43 ` Wanpeng Li
2015-03-22 23:44 ` [PATCH v2 2/2] f2fs: enable fast symlink by utilizing inline data Wanpeng Li
2015-03-22 23:44   ` Wanpeng Li
2015-03-23  7:25 ` [PATCH v2 1/2] f2fs: enable inline data by default Chao Yu
2015-03-23  7:15   ` Wanpeng Li
2015-03-23  7:15     ` Wanpeng Li
2015-03-23  8:36     ` Chao Yu
2015-03-23  8:22       ` Wanpeng Li

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.