linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates
@ 2007-07-01  7:37 Mingming Cao
  2007-07-10 23:31 ` Andrew Morton
  0 siblings, 1 reply; 5+ messages in thread
From: Mingming Cao @ 2007-07-01  7:37 UTC (permalink / raw)
  To: linux-fsdevel, linux-kernel, linux-ext4

Add a "noversion" mount option to disable inode version updates.

Signed-off-by: Andreas Dilger <adilger@clusterfs.com>
Signed-off-by: Kalpak Shah <kalpak@clusterfs.com>

Index: linux-2.6.21/fs/ext4/super.c
===================================================================
--- linux-2.6.21.orig/fs/ext4/super.c
+++ linux-2.6.21/fs/ext4/super.c
@@ -725,7 +725,7 @@ enum {
 	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
 	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
 	Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
-	Opt_grpquota, Opt_extents, Opt_noextents,
+	Opt_grpquota, Opt_extents, Opt_noextents, Opt_noversion,
 };

 static match_table_t tokens = {
@@ -777,6 +777,7 @@ static match_table_t tokens = {
 	{Opt_barrier, "barrier=%u"},
 	{Opt_extents, "extents"},
 	{Opt_noextents, "noextents"},
+	{Opt_noversion, "noversion"},
 	{Opt_err, NULL},
 	{Opt_resize, "resize"},
 };
@@ -1115,6 +1116,9 @@ clear_qf_name:
 		case Opt_noextents:
 			clear_opt (sbi->s_mount_opt, EXTENTS);
 			break;
+		case Opt_noversion:
+			set_opt(sbi->s_mount_opt, NOVERSION);
+			break;
 		default:
 			printk (KERN_ERR
 				"EXT4-fs: Unrecognized mount option \"%s\" "
Index: linux-2.6.21/include/linux/ext4_fs.h
===================================================================
--- linux-2.6.21.orig/include/linux/ext4_fs.h
+++ linux-2.6.21/include/linux/ext4_fs.h
@@ -473,6 +473,7 @@ do {									       \
 #define EXT4_MOUNT_USRQUOTA		0x100000 /* "old" user quota */
 #define EXT4_MOUNT_GRPQUOTA		0x200000 /* "old" group quota */
 #define EXT4_MOUNT_EXTENTS		0x400000 /* Extents support */
+#define EXT4_MOUNT_NOVERSION		0x800000 /* No inode version updates */

 /* Compatibility, for having both ext2_fs.h and ext4_fs.h included at once */
 #ifndef _LINUX_EXT2_FS_H
Index: linux-2.6.21/fs/ext4/inode.c
===================================================================
--- linux-2.6.21.orig/fs/ext4/inode.c
+++ linux-2.6.21/fs/ext4/inode.c
@@ -3082,7 +3082,9 @@ int ext4_mark_iloc_dirty(handle_t *handl
 {
 	int err = 0;

-	inode->i_version++;
+	if (!test_opt(inode->i_sb, NOVERSION))
+		inode->i_version++;
+
 	/* the do_update_inode consumes one bh->b_count */
 	get_bh(iloc->bh);

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

* Re: [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates
  2007-07-01  7:37 [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates Mingming Cao
@ 2007-07-10 23:31 ` Andrew Morton
  2007-07-11 11:57   ` Andreas Dilger
  2007-07-11 15:48   ` Theodore Tso
  0 siblings, 2 replies; 5+ messages in thread
From: Andrew Morton @ 2007-07-10 23:31 UTC (permalink / raw)
  To: cmm; +Cc: linux-fsdevel, linux-kernel, linux-ext4

On Sun, 01 Jul 2007 03:37:53 -0400
Mingming Cao <cmm@us.ibm.com> wrote:

> Add a "noversion" mount option to disable inode version updates.

Why is this option being offered to our users?  To reduce disk traffic,
like noatime?

If so, what are the implications of this?  What would the user lose?

> Index: linux-2.6.21/fs/ext4/super.c
> ===================================================================
> --- linux-2.6.21.orig/fs/ext4/super.c
> +++ linux-2.6.21/fs/ext4/super.c
> @@ -725,7 +725,7 @@ enum {
>  	Opt_usrjquota, Opt_grpjquota, Opt_offusrjquota, Opt_offgrpjquota,
>  	Opt_jqfmt_vfsold, Opt_jqfmt_vfsv0, Opt_quota, Opt_noquota,
>  	Opt_ignore, Opt_barrier, Opt_err, Opt_resize, Opt_usrquota,
> -	Opt_grpquota, Opt_extents, Opt_noextents,
> +	Opt_grpquota, Opt_extents, Opt_noextents, Opt_noversion,
>  };
> 
>  static match_table_t tokens = {
> @@ -777,6 +777,7 @@ static match_table_t tokens = {
>  	{Opt_barrier, "barrier=%u"},
>  	{Opt_extents, "extents"},
>  	{Opt_noextents, "noextents"},
> +	{Opt_noversion, "noversion"},
>  	{Opt_err, NULL},
>  	{Opt_resize, "resize"},
>  };
> @@ -1115,6 +1116,9 @@ clear_qf_name:
>  		case Opt_noextents:
>  			clear_opt (sbi->s_mount_opt, EXTENTS);
>  			break;
> +		case Opt_noversion:
> +			set_opt(sbi->s_mount_opt, NOVERSION);
> +			break;
>  		default:
>  			printk (KERN_ERR
>  				"EXT4-fs: Unrecognized mount option \"%s\" "
> Index: linux-2.6.21/include/linux/ext4_fs.h
> ===================================================================
> --- linux-2.6.21.orig/include/linux/ext4_fs.h
> +++ linux-2.6.21/include/linux/ext4_fs.h
> @@ -473,6 +473,7 @@ do {									       \
>  #define EXT4_MOUNT_USRQUOTA		0x100000 /* "old" user quota */
>  #define EXT4_MOUNT_GRPQUOTA		0x200000 /* "old" group quota */
>  #define EXT4_MOUNT_EXTENTS		0x400000 /* Extents support */
> +#define EXT4_MOUNT_NOVERSION		0x800000 /* No inode version updates */
> 
>  /* Compatibility, for having both ext2_fs.h and ext4_fs.h included at once */
>  #ifndef _LINUX_EXT2_FS_H
> Index: linux-2.6.21/fs/ext4/inode.c
> ===================================================================
> --- linux-2.6.21.orig/fs/ext4/inode.c
> +++ linux-2.6.21/fs/ext4/inode.c
> @@ -3082,7 +3082,9 @@ int ext4_mark_iloc_dirty(handle_t *handl
>  {
>  	int err = 0;
> 
> -	inode->i_version++;
> +	if (!test_opt(inode->i_sb, NOVERSION))
> +		inode->i_version++;
> +
>  	/* the do_update_inode consumes one bh->b_count */
>  	get_bh(iloc->bh);

An update to Documentation/filesystems/ext4.txt would be an appropriate
way in which to address the above questions.


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

* Re: [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates
  2007-07-10 23:31 ` Andrew Morton
@ 2007-07-11 11:57   ` Andreas Dilger
  2007-07-11 12:03     ` Christoph Hellwig
  2007-07-11 15:48   ` Theodore Tso
  1 sibling, 1 reply; 5+ messages in thread
From: Andreas Dilger @ 2007-07-11 11:57 UTC (permalink / raw)
  To: Andrew Morton; +Cc: cmm, linux-fsdevel, linux-kernel, linux-ext4

On Jul 10, 2007  16:31 -0700, Andrew Morton wrote:
> On Sun, 01 Jul 2007 03:37:53 -0400
> Mingming Cao <cmm@us.ibm.com> wrote:
> > Add a "noversion" mount option to disable inode version updates.
> 
> Why is this option being offered to our users?  To reduce disk traffic,
> like noatime?
> 
> If so, what are the implications of this?  What would the user lose?

Ah, this is the patch to disable i_version updates for Lustre.  I don't
think any normal user would use this mount option, so I don't know if
there is a need to document it.  There are no performance implications,
unless we end up changing the mtime granularity JUST to update i_version,
in which case we can avoid some overhead if not exporting with NFSv4.

If we want to go in the direction of forcing extra inode updates just
for this, then we might even consider making i_version updates on disk
default to OFF unless NFSv4 has exported the filesystem at least once,
and then it should set a persistent flag in the superblock indicating
that i_version updates are needed.

Cheers, Andreas
--
Andreas Dilger
Principal Software Engineer
Cluster File Systems, Inc.

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

* Re: [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates
  2007-07-11 11:57   ` Andreas Dilger
@ 2007-07-11 12:03     ` Christoph Hellwig
  0 siblings, 0 replies; 5+ messages in thread
From: Christoph Hellwig @ 2007-07-11 12:03 UTC (permalink / raw)
  To: Andrew Morton, cmm, linux-fsdevel, linux-kernel, linux-ext4

On Wed, Jul 11, 2007 at 05:57:17AM -0600, Andreas Dilger wrote:
> Ah, this is the patch to disable i_version updates for Lustre.  I don't
> think any normal user would use this mount option, so I don't know if
> there is a need to document it.

This is a reason to not merge it at all.  If the only user of this is
the out of tree lustre code there is no need to put this in.  I should
rather stay in clusterfs' patchkit.


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

* Re: [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates
  2007-07-10 23:31 ` Andrew Morton
  2007-07-11 11:57   ` Andreas Dilger
@ 2007-07-11 15:48   ` Theodore Tso
  1 sibling, 0 replies; 5+ messages in thread
From: Theodore Tso @ 2007-07-11 15:48 UTC (permalink / raw)
  To: Andrew Morton; +Cc: cmm, linux-fsdevel, linux-kernel, linux-ext4

On Tue, Jul 10, 2007 at 04:31:44PM -0700, Andrew Morton wrote:
> On Sun, 01 Jul 2007 03:37:53 -0400
> Mingming Cao <cmm@us.ibm.com> wrote:
> 
> > Add a "noversion" mount option to disable inode version updates.
> 
> Why is this option being offered to our users?  To reduce disk traffic,
> like noatime?
> 
> If so, what are the implications of this?  What would the user lose?

This has been removed in the latest patch set; it's needed only for
Lustre, because they set the version field themselves.  Lustre needs
the inode version to be globally monotonically increasing, so it can
order updates between two different files, so it does this itself.
NFSv4 only uses i_version to detect changes, and so there's no need to
use a global atomic counter for i_version.  So the thinking was that
there was no point doing the global atomic counter if it was not necessary.

Since "noversion" is Lustre specific, we've dropped that from the list
of patches that we'll push, and so the inode version will only have
local per-inode significance, and not have any global ordering
properties.  

We have not actually benchmarked whether or not doing the global
ordering actually *matters* in terms of being actually noticeable.  If
it isn't noticeable, I wouldn't mind changing things so that we always
make i_version globally significant (without a mount option), and make
life a bit easier for the Lustre folks.  Or if someone other
distributed filesystem requests a globally significant i_version.  But
we can cross that bridge when we get to it....

						- Ted

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

end of thread, other threads:[~2007-07-11 15:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-01  7:37 [EXT4 set 4][PATCH 5/5] i_version: noversion mount option to disable inode version updates Mingming Cao
2007-07-10 23:31 ` Andrew Morton
2007-07-11 11:57   ` Andreas Dilger
2007-07-11 12:03     ` Christoph Hellwig
2007-07-11 15:48   ` Theodore Tso

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).