All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] e2fsprogs: update mkfs defaults
@ 2011-02-16 18:12 Eric Sandeen
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
                   ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 18:12 UTC (permalink / raw)
  To: ext4 development

Anaconda (the Fedora/RHEL installer) had been "fixing up" extN filesystems it created by setting the max mount count and check interval to 0, as well as adding user_xattr to filesystem mount options.

As part of their efforts to stop special-casing around upstream defaults, they've removed these changes upstream.

However, I'd like to at least propose that these changes be made default.

The forced fsck often comes at unexpected and inopportune moments, and even enterprise customers are often caught by surprise when this happens.  Because a filesystem with an error condition will be marked as requiring fsck anyway, I submit that the time-based and mount-based checks are not particularly useful, and that administrators can schedule fscks on their own time, or tune2fs the enforced intervals if they so choose.  Patch #1 disables the intervals by default, and I've added a new mkfs option (-C) to turn on the old behavior of random, unexpected, time-consuming fscks at boot time.  ;)

User namespace xattrs are generally useful, and I think extN is the only filesystem requiring a special mount option to enable them, when xattrs are otherwise available.  So patch #2 sets that mount option into the defaults.

Thanks,
-Eric

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

* [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default
  2011-02-16 18:12 [PATCH 0/2] e2fsprogs: update mkfs defaults Eric Sandeen
@ 2011-02-16 18:14 ` Eric Sandeen
  2011-02-16 18:24   ` Lukas Czerner
                     ` (2 more replies)
  2011-02-16 18:21 ` [PATCH 2/2] e2fsprogs: enable user namespace xattrs " Eric Sandeen
  2011-02-16 22:12 ` [PATCH 0/2] e2fsprogs: update mkfs defaults Andreas Dilger
  2 siblings, 3 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 18:14 UTC (permalink / raw)
  To: ext4 development

The forced fsck often comes at unexpected and inopportune moments,
and even enterprise customers are often caught by surprise when 
this happens.  Because a filesystem with an error condition will 
be marked as requiring fsck anyway, I submit that the time-based 
and mount-based checks are not particularly useful, and that 
administrators can schedule fscks on their own time, or tune2fs 
the enforced intervals if they so choose.  Patch #1 disables the 
intervals by default, and I've added a new mkfs option (-C) to 
turn on the old behavior of random, unexpected, time-consuming
fscks at boot time.  ;)

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index a204eb7..37584aa 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -184,6 +184,7 @@ typedef struct ext2_file *ext2_file_t;
 #define EXT2_FLAG_64BITS		0x20000
 #define EXT2_FLAG_PRINT_PROGRESS	0x40000
 #define EXT2_FLAG_DIRECT_IO		0x80000
+#define EXT2_FLAG_MOUNT_FSCK_CHECK	0x100000
 
 /*
  * Special flag in the ext2 inode i_flag field that means that this is
diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 7c38975..ff63a92 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -155,7 +155,6 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 	set_field(s_log_block_size, 0);	/* default blocksize: 1024 bytes */
 	set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
 	set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
-	set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
 	set_field(s_errors, EXT2_ERRORS_DEFAULT);
 	set_field(s_feature_compat, 0);
 	set_field(s_feature_incompat, 0);
@@ -189,7 +188,10 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 		super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
 	}
 
-	set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
+	if (flags & EXT2_FLAG_MOUNT_FSCK_CHECK) {
+		set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
+		set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
+	}
 	super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
 
 	super->s_creator_os = CREATOR_OS;
diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index 2eead17..758307f 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -18,6 +18,9 @@ mke2fs \- create an ext2/ext3/ext4 filesystem
 .I block-size
 ]
 [
+.B \-C
+]
+[
 .B \-f
 .I fragment-size
 ]
@@ -184,6 +187,10 @@ Check the device for bad blocks before creating the file system.  If
 this option is specified twice, then a slower read-write
 test is used instead of a fast read-only test.
 .TP
+.B \-C
+Set maximum mount count and interval between checks, so that a full fsck
+will be enforced when these counts are exceeded.
+.TP
 .BI \-E " extended-options"
 Set extended options for the filesystem.  Extended options are comma
 separated, and may take an argument using the equals ('=') sign.  The
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 0ba4a4c..fdeafe3 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -80,6 +80,7 @@ const char * device_name /* = NULL */;
 
 /* Command line options */
 int	cflag;
+int	Cflag;
 int	verbose;
 int	quiet;
 int	super_only;
@@ -1228,7 +1229,7 @@ profile_error:
 	}
 
 	while ((c = getopt (argc, argv,
-		    "b:cf:g:G:i:jl:m:no:qr:s:t:vE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
+		    "b:cf:g:G:i:jl:m:no:qr:s:t:vCE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
 		switch (c) {
 		case 'b':
 			blocksize = strtol(optarg, &tmp, 0);
@@ -1251,6 +1252,9 @@ profile_error:
 		case 'c':	/* Check for bad blocks */
 			cflag++;
 			break;
+		case 'C':	/* Set default check/fsck intervals */
+			Cflag++;
+			break;
 		case 'f':
 			size = strtoul(optarg, &tmp, 0);
 			if (size < EXT2_MIN_BLOCK_SIZE ||
@@ -2030,6 +2034,8 @@ int main (int argc, char *argv[])
 	 */
 	if (!quiet)
 		flags |= EXT2_FLAG_PRINT_PROGRESS;
+	if (Cflag)
+		flags |= EXT2_FLAG_MOUNT_FSCK_CHECK;
 	retval = ext2fs_initialize(device_name, flags, &fs_param, io_ptr, &fs);
 	if (retval) {
 		com_err(device_name, retval, _("while setting up superblock"));
@@ -2109,9 +2115,11 @@ int main (int argc, char *argv[])
 	 * don't check all the filesystems at the same time.  We use a
 	 * kludgy hack of using the UUID to derive a random jitter value.
 	 */
-	for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
-		val += fs->super->s_uuid[i];
-	fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+	if (Cflag) {
+		for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
+			val += fs->super->s_uuid[i];
+		fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+	}
 
 	/*
 	 * Override the creator OS, if applicable


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

* [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 18:12 [PATCH 0/2] e2fsprogs: update mkfs defaults Eric Sandeen
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
@ 2011-02-16 18:21 ` Eric Sandeen
  2011-02-16 19:15   ` Andreas Dilger
  2011-02-17 21:56   ` [PATCH 2/2 V2] " Eric Sandeen
  2011-02-16 22:12 ` [PATCH 0/2] e2fsprogs: update mkfs defaults Andreas Dilger
  2 siblings, 2 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 18:21 UTC (permalink / raw)
  To: ext4 development

User namespace xattrs are generally useful, and I think extN
is the only filesystem requiring a special mount option to
enable them, when xattrs are otherwise available.  So this
change sets that mount option into the defaults.

Note that if xattrs are config'd off, this will lead to a
mostly-harmless:

   EXT4-fs (sdc1): (no)user_xattr options not supported

message at mount time... 

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index ff63a92..12a9452 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -164,6 +164,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 	set_field(s_raid_stripe_width, 0);	/* default stripe width: 0 */
 	set_field(s_log_groups_per_flex, 0);
 	set_field(s_flags, 0);
+	set_field(s_default_mount_opts, EXT2_DEFM_XATTR_USER);
 	if (super->s_feature_incompat & ~EXT2_LIB_FEATURE_INCOMPAT_SUPP) {
 		retval = EXT2_ET_UNSUPP_FEATURE;
 		goto cleanup;


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

* Re: [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
@ 2011-02-16 18:24   ` Lukas Czerner
  2011-02-16 19:12     ` Amir Goldstein
  2011-02-16 22:55   ` Ted Ts'o
  2011-02-17 21:55   ` [PATCH 1/2 V2] " Eric Sandeen
  2 siblings, 1 reply; 19+ messages in thread
From: Lukas Czerner @ 2011-02-16 18:24 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: ext4 development

On Wed, 16 Feb 2011, Eric Sandeen wrote:

> The forced fsck often comes at unexpected and inopportune moments,
> and even enterprise customers are often caught by surprise when 
> this happens.  Because a filesystem with an error condition will 
> be marked as requiring fsck anyway, I submit that the time-based 
> and mount-based checks are not particularly useful, and that 
> administrators can schedule fscks on their own time, or tune2fs 
> the enforced intervals if they so choose.  Patch #1 disables the 
> intervals by default, and I've added a new mkfs option (-C) to 
> turn on the old behavior of random, unexpected, time-consuming
> fscks at boot time.  ;)

I completely agree with you and I like the idea.

> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> ---
> 
> diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
> index a204eb7..37584aa 100644
> --- a/lib/ext2fs/ext2fs.h
> +++ b/lib/ext2fs/ext2fs.h
> @@ -184,6 +184,7 @@ typedef struct ext2_file *ext2_file_t;
>  #define EXT2_FLAG_64BITS		0x20000
>  #define EXT2_FLAG_PRINT_PROGRESS	0x40000
>  #define EXT2_FLAG_DIRECT_IO		0x80000
> +#define EXT2_FLAG_MOUNT_FSCK_CHECK	0x100000
>  
>  /*
>   * Special flag in the ext2 inode i_flag field that means that this is
> diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
> index 7c38975..ff63a92 100644
> --- a/lib/ext2fs/initialize.c
> +++ b/lib/ext2fs/initialize.c
> @@ -155,7 +155,6 @@ errcode_t ext2fs_initialize(const char *name, int flags,
>  	set_field(s_log_block_size, 0);	/* default blocksize: 1024 bytes */
>  	set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
>  	set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
> -	set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
>  	set_field(s_errors, EXT2_ERRORS_DEFAULT);
>  	set_field(s_feature_compat, 0);
>  	set_field(s_feature_incompat, 0);
> @@ -189,7 +188,10 @@ errcode_t ext2fs_initialize(const char *name, int flags,
>  		super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
>  	}
>  
> -	set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
> +	if (flags & EXT2_FLAG_MOUNT_FSCK_CHECK) {
> +		set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
> +		set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
> +	}
>  	super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
>  
>  	super->s_creator_os = CREATOR_OS;
> diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
> index 2eead17..758307f 100644
> --- a/misc/mke2fs.8.in
> +++ b/misc/mke2fs.8.in
> @@ -18,6 +18,9 @@ mke2fs \- create an ext2/ext3/ext4 filesystem
>  .I block-size
>  ]
>  [
> +.B \-C
> +]
> +[
>  .B \-f
>  .I fragment-size
>  ]
> @@ -184,6 +187,10 @@ Check the device for bad blocks before creating the file system.  If
>  this option is specified twice, then a slower read-write
>  test is used instead of a fast read-only test.
>  .TP
> +.B \-C
> +Set maximum mount count and interval between checks, so that a full fsck
> +will be enforced when these counts are exceeded.
> +.TP
>  .BI \-E " extended-options"
>  Set extended options for the filesystem.  Extended options are comma
>  separated, and may take an argument using the equals ('=') sign.  The
> diff --git a/misc/mke2fs.c b/misc/mke2fs.c
> index 0ba4a4c..fdeafe3 100644
> --- a/misc/mke2fs.c
> +++ b/misc/mke2fs.c
> @@ -80,6 +80,7 @@ const char * device_name /* = NULL */;
>  
>  /* Command line options */
>  int	cflag;
> +int	Cflag;

Uff, this is not really an issue, however would it be possible to have
better name for Cflags :) ? it is just confusing.

>  int	verbose;
>  int	quiet;
>  int	super_only;
> @@ -1228,7 +1229,7 @@ profile_error:
>  	}
>  
>  	while ((c = getopt (argc, argv,
> -		    "b:cf:g:G:i:jl:m:no:qr:s:t:vE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
> +		    "b:cf:g:G:i:jl:m:no:qr:s:t:vCE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
>  		switch (c) {
>  		case 'b':
>  			blocksize = strtol(optarg, &tmp, 0);
> @@ -1251,6 +1252,9 @@ profile_error:
>  		case 'c':	/* Check for bad blocks */
>  			cflag++;
>  			break;
> +		case 'C':	/* Set default check/fsck intervals */
> +			Cflag++;
> +			break;
>  		case 'f':
>  			size = strtoul(optarg, &tmp, 0);
>  			if (size < EXT2_MIN_BLOCK_SIZE ||
> @@ -2030,6 +2034,8 @@ int main (int argc, char *argv[])
>  	 */
>  	if (!quiet)
>  		flags |= EXT2_FLAG_PRINT_PROGRESS;
> +	if (Cflag)
> +		flags |= EXT2_FLAG_MOUNT_FSCK_CHECK;
>  	retval = ext2fs_initialize(device_name, flags, &fs_param, io_ptr, &fs);
>  	if (retval) {
>  		com_err(device_name, retval, _("while setting up superblock"));
> @@ -2109,9 +2115,11 @@ int main (int argc, char *argv[])
>  	 * don't check all the filesystems at the same time.  We use a
>  	 * kludgy hack of using the UUID to derive a random jitter value.
>  	 */
> -	for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
> -		val += fs->super->s_uuid[i];
> -	fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
> +	if (Cflag) {
> +		for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
> +			val += fs->super->s_uuid[i];
> +		fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
> +	}
>  
>  	/*
>  	 * Override the creator OS, if applicable
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 

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

* Re: [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default
  2011-02-16 18:24   ` Lukas Czerner
@ 2011-02-16 19:12     ` Amir Goldstein
  0 siblings, 0 replies; 19+ messages in thread
From: Amir Goldstein @ 2011-02-16 19:12 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Lukas Czerner, ext4 development

On Wed, Feb 16, 2011 at 8:24 PM, Lukas Czerner <lczerner@redhat.com> wrote:
> On Wed, 16 Feb 2011, Eric Sandeen wrote:
>
>> The forced fsck often comes at unexpected and inopportune moments,
>> and even enterprise customers are often caught by surprise when
>> this happens.  Because a filesystem with an error condition will
>> be marked as requiring fsck anyway, I submit that the time-based
>> and mount-based checks are not particularly useful, and that
>> administrators can schedule fscks on their own time, or tune2fs
>> the enforced intervals if they so choose.  Patch #1 disables the
>> intervals by default, and I've added a new mkfs option (-C) to
>> turn on the old behavior of random, unexpected, time-consuming
>> fscks at boot time.  ;)
>
> I completely agree with you and I like the idea.

I second that, though I would change the mkfs option to -OCD ;-)

>
>>
>> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
>> ---
>>
>> diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
>> index a204eb7..37584aa 100644
>> --- a/lib/ext2fs/ext2fs.h
>> +++ b/lib/ext2fs/ext2fs.h
>> @@ -184,6 +184,7 @@ typedef struct ext2_file *ext2_file_t;
>>  #define EXT2_FLAG_64BITS             0x20000
>>  #define EXT2_FLAG_PRINT_PROGRESS     0x40000
>>  #define EXT2_FLAG_DIRECT_IO          0x80000
>> +#define EXT2_FLAG_MOUNT_FSCK_CHECK   0x100000
>>
>>  /*
>>   * Special flag in the ext2 inode i_flag field that means that this is
>> diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
>> index 7c38975..ff63a92 100644
>> --- a/lib/ext2fs/initialize.c
>> +++ b/lib/ext2fs/initialize.c
>> @@ -155,7 +155,6 @@ errcode_t ext2fs_initialize(const char *name, int flags,
>>       set_field(s_log_block_size, 0); /* default blocksize: 1024 bytes */
>>       set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
>>       set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
>> -     set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
>>       set_field(s_errors, EXT2_ERRORS_DEFAULT);
>>       set_field(s_feature_compat, 0);
>>       set_field(s_feature_incompat, 0);
>> @@ -189,7 +188,10 @@ errcode_t ext2fs_initialize(const char *name, int flags,
>>               super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
>>       }
>>
>> -     set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
>> +     if (flags & EXT2_FLAG_MOUNT_FSCK_CHECK) {
>> +             set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
>> +             set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
>> +     }
>>       super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
>>
>>       super->s_creator_os = CREATOR_OS;
>> diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
>> index 2eead17..758307f 100644
>> --- a/misc/mke2fs.8.in
>> +++ b/misc/mke2fs.8.in
>> @@ -18,6 +18,9 @@ mke2fs \- create an ext2/ext3/ext4 filesystem
>>  .I block-size
>>  ]
>>  [
>> +.B \-C
>> +]
>> +[
>>  .B \-f
>>  .I fragment-size
>>  ]
>> @@ -184,6 +187,10 @@ Check the device for bad blocks before creating the file system.  If
>>  this option is specified twice, then a slower read-write
>>  test is used instead of a fast read-only test.
>>  .TP
>> +.B \-C
>> +Set maximum mount count and interval between checks, so that a full fsck
>> +will be enforced when these counts are exceeded.
>> +.TP
>>  .BI \-E " extended-options"
>>  Set extended options for the filesystem.  Extended options are comma
>>  separated, and may take an argument using the equals ('=') sign.  The
>> diff --git a/misc/mke2fs.c b/misc/mke2fs.c
>> index 0ba4a4c..fdeafe3 100644
>> --- a/misc/mke2fs.c
>> +++ b/misc/mke2fs.c
>> @@ -80,6 +80,7 @@ const char * device_name /* = NULL */;
>>
>>  /* Command line options */
>>  int  cflag;
>> +int  Cflag;
>
> Uff, this is not really an issue, however would it be possible to have
> better name for Cflags :) ? it is just confusing.
>
>>  int  verbose;
>>  int  quiet;
>>  int  super_only;
>> @@ -1228,7 +1229,7 @@ profile_error:
>>       }
>>
>>       while ((c = getopt (argc, argv,
>> -                 "b:cf:g:G:i:jl:m:no:qr:s:t:vE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
>> +                 "b:cf:g:G:i:jl:m:no:qr:s:t:vCE:FI:J:KL:M:N:O:R:ST:U:V")) != EOF) {
>>               switch (c) {
>>               case 'b':
>>                       blocksize = strtol(optarg, &tmp, 0);
>> @@ -1251,6 +1252,9 @@ profile_error:
>>               case 'c':       /* Check for bad blocks */
>>                       cflag++;
>>                       break;
>> +             case 'C':       /* Set default check/fsck intervals */
>> +                     Cflag++;
>> +                     break;
>>               case 'f':
>>                       size = strtoul(optarg, &tmp, 0);
>>                       if (size < EXT2_MIN_BLOCK_SIZE ||
>> @@ -2030,6 +2034,8 @@ int main (int argc, char *argv[])
>>        */
>>       if (!quiet)
>>               flags |= EXT2_FLAG_PRINT_PROGRESS;
>> +     if (Cflag)
>> +             flags |= EXT2_FLAG_MOUNT_FSCK_CHECK;
>>       retval = ext2fs_initialize(device_name, flags, &fs_param, io_ptr, &fs);
>>       if (retval) {
>>               com_err(device_name, retval, _("while setting up superblock"));
>> @@ -2109,9 +2115,11 @@ int main (int argc, char *argv[])
>>        * don't check all the filesystems at the same time.  We use a
>>        * kludgy hack of using the UUID to derive a random jitter value.
>>        */
>> -     for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
>> -             val += fs->super->s_uuid[i];
>> -     fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
>> +     if (Cflag) {
>> +             for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
>> +                     val += fs->super->s_uuid[i];
>> +             fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
>> +     }
>>
>>       /*
>>        * Override the creator OS, if applicable
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
> --
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 18:21 ` [PATCH 2/2] e2fsprogs: enable user namespace xattrs " Eric Sandeen
@ 2011-02-16 19:15   ` Andreas Dilger
  2011-02-16 19:27     ` Eric Sandeen
  2011-02-17 21:56   ` [PATCH 2/2 V2] " Eric Sandeen
  1 sibling, 1 reply; 19+ messages in thread
From: Andreas Dilger @ 2011-02-16 19:15 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: ext4 development

On 2011-02-16, at 11:21, Eric Sandeen wrote:
> User namespace xattrs are generally useful, and I think extN
> is the only filesystem requiring a special mount option to
> enable them, when xattrs are otherwise available.  So this
> change sets that mount option into the defaults.
> 
> Note that if xattrs are config'd off, this will lead to a
> mostly-harmless:
> 
>   EXT4-fs (sdc1): (no)user_xattr options not supported
> 
> message at mount time... 

Wouldn't it be more useful to change this in the kernel, instead of only changing it in the superblock for new filesystems?

Cheers, Andreas






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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 19:15   ` Andreas Dilger
@ 2011-02-16 19:27     ` Eric Sandeen
  2011-02-16 21:49       ` Ted Ts'o
  0 siblings, 1 reply; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 19:27 UTC (permalink / raw)
  To: Andreas Dilger; +Cc: ext4 development

On 2/16/11 1:15 PM, Andreas Dilger wrote:
> On 2011-02-16, at 11:21, Eric Sandeen wrote:
>> User namespace xattrs are generally useful, and I think extN
>> is the only filesystem requiring a special mount option to
>> enable them, when xattrs are otherwise available.  So this
>> change sets that mount option into the defaults.
>>
>> Note that if xattrs are config'd off, this will lead to a
>> mostly-harmless:
>>
>>   EXT4-fs (sdc1): (no)user_xattr options not supported
>>
>> message at mount time... 
> 
> Wouldn't it be more useful to change this in the kernel, instead of only changing it in the superblock for new filesystems?
> 
> Cheers, Andreas

I thought about that; maybe it should happen in both places?

-Eric

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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 19:27     ` Eric Sandeen
@ 2011-02-16 21:49       ` Ted Ts'o
  2011-02-16 21:53         ` Eric Sandeen
  0 siblings, 1 reply; 19+ messages in thread
From: Ted Ts'o @ 2011-02-16 21:49 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Andreas Dilger, ext4 development

On Wed, Feb 16, 2011 at 01:27:39PM -0600, Eric Sandeen wrote:
> On 2/16/11 1:15 PM, Andreas Dilger wrote:
> > On 2011-02-16, at 11:21, Eric Sandeen wrote:
> >> User namespace xattrs are generally useful, and I think extN
> >> is the only filesystem requiring a special mount option to
> >> enable them, when xattrs are otherwise available.  So this
> >> change sets that mount option into the defaults.
> >>
> > 
> > Wouldn't it be more useful to change this in the kernel, instead of only changing it in the superblock for new filesystems?
> > 
> 
> I thought about that; maybe it should happen in both places?

Yes, agreed.  Maybe we should do the same thing with posix ACL's as
well?  ACL's can only take away access as compared to the unix
permission bits, so it's safe to enable ACL's.

	   	    	      	 	- Ted



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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 21:49       ` Ted Ts'o
@ 2011-02-16 21:53         ` Eric Sandeen
  2011-02-16 22:56           ` Ted Ts'o
  0 siblings, 1 reply; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 21:53 UTC (permalink / raw)
  To: Ted Ts'o; +Cc: Andreas Dilger, ext4 development

On 2/16/11 3:49 PM, Ted Ts'o wrote:
> On Wed, Feb 16, 2011 at 01:27:39PM -0600, Eric Sandeen wrote:
>> On 2/16/11 1:15 PM, Andreas Dilger wrote:
>>> On 2011-02-16, at 11:21, Eric Sandeen wrote:
>>>> User namespace xattrs are generally useful, and I think extN
>>>> is the only filesystem requiring a special mount option to
>>>> enable them, when xattrs are otherwise available.  So this
>>>> change sets that mount option into the defaults.
>>>>
>>>
>>> Wouldn't it be more useful to change this in the kernel, instead of only changing it in the superblock for new filesystems?
>>>
>>
>> I thought about that; maybe it should happen in both places?
> 
> Yes, agreed.  Maybe we should do the same thing with posix ACL's as
> well?  ACL's can only take away access as compared to the unix
> permission bits, so it's safe to enable ACL's.
> 
> 	   	    	      	 	- Ted
> 

Whoops, I didn't realize that acls were in the same boat, of "config on and then turn on with a mount option"

Ok, sure, adding that makes sense to me too...

Is sticking it in the _initialize() function ok with you?  It's a little odd, but ...

-Eric

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

* Re: [PATCH 0/2] e2fsprogs: update mkfs defaults
  2011-02-16 18:12 [PATCH 0/2] e2fsprogs: update mkfs defaults Eric Sandeen
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
  2011-02-16 18:21 ` [PATCH 2/2] e2fsprogs: enable user namespace xattrs " Eric Sandeen
@ 2011-02-16 22:12 ` Andreas Dilger
  2011-02-16 22:37   ` Eric Sandeen
  2 siblings, 1 reply; 19+ messages in thread
From: Andreas Dilger @ 2011-02-16 22:12 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: ext4 development

[-- Attachment #1: Type: text/plain, Size: 2590 bytes --]

On 2011-02-16, at 11:12, Eric Sandeen wrote:
> Anaconda (the Fedora/RHEL installer) had been "fixing up" extN filesystems it created by setting the max mount count and check interval to 0, as well as adding user_xattr to filesystem mount options.
> 
> As part of their efforts to stop special-casing around upstream defaults, they've removed these changes upstream.
> 
> However, I'd like to at least propose that these changes be made default.

I'd really prefer instead that the "lvcheck" script be included into the distro, instead of changing mke2fs.  That achieves the same end result (periodic scrubbing of the filesystem to look for hidden errors), without introducing boot-time delays.  Given the size of disks today and the undetected bit-error-rate (somewhere around 1/10^15 bits or 12TB), I think it is important that there be automated scrubbing of the filesystem.

I think the best place to put that script would be in the lvm tools (since it is applicable to multiple filesystems), which I think Eric has the most leverage in getting accepted (I've been but I'd be OK including it with e2fsprogs if there is pushback on that.

> The forced fsck often comes at unexpected and inopportune moments, and even enterprise customers are often caught by surprise when this happens.  Because a filesystem with an error condition will be marked as requiring fsck anyway,

Any decent RAID array does background scrubbing for integrity verification, it doesn't just wait until there is an uncorrectable error detected in the block device.  If we can do something proactive to prevent this (i.e. lvcheck run by cron.weekly), it is worthwhile.

I think customers are equally surprised when their server fails (remount-ro/panic) due to the kernel detecting an error that might have been on disk for weeks or months.

> I submit that the time-based and mount-based checks are not particularly useful, and that administrators can schedule fscks on their own time, or tune2fs the enforced intervals if they so choose.

I think you are projecting your own self-enlightenment onto users ;-).  As we see on this list, there are many users that don't even back up their critical data, so IMHO taking out "safe by default" options is a step in the wrong direction.

Attached is my latest version of the lvcheck script, and a default /etc/lvcheck.conf script.  It's been enhanced to include a usage message, command-line option parsing to override default parameters, and the ability to check snapshots of ext3/4 filesystems with an external journal.


Cheers, Andreas




[-- Attachment #2: lvcheck --]
[-- Type: application/octet-stream, Size: 12575 bytes --]

#!/bin/bash
# lvcheck, version 1.1
# Maintainer: Bryan Kadzban <bryan.kadzban@is-a-geek.net>

# Other credits:
# Concept and original script by Theodore Tso <tyt...@mit.edu>
# on_ac_power is mostly from Debian's powermgmt-base package
# Lots of help (ideas, initial XFS/JFS support, etc.) from
# Andreas Dilger <adilger@sun.com>
# Better XFS support from Eric Sandeen <sandeen@redhat.com>

# Released under the GNU General Public License, either version 2 or
# (at your option) any later version.

# Overview:
# Run this from cron periodically (e.g. once per week). If the machine
# is on AC power, it will run the checks; otherwise they will all be
# skipped. (If the script can't tell whether the machine is on AC power,
# it will use a setting in the configuration file (/etc/lvcheck.conf) to
# decide whether to continue with the checks, or abort.)
#
# The script will then decide which logical volumes are active, and can
# therefore be checked via an LVM snapshot. Each of these LVs will be
# queried to find its last-check day, and if that was more than $INTERVAL
# days ago (where INTERVAL is set in the configuration file as well), or
# if the last-check day can't be determined, then the script will take an
# LVM snapshot of that LV and run fsck on the snapshot. The snapshot will
# be set to use 1/500 the space of the source LV. After fsck finishes,
# the snapshot is destroyed. (Snapshots are checked serially.)
#
# Any LV that passes fsck should have its last-check time updated (in
# the real superblock, not the snapshot's superblock); any LV whose
# fsck fails will send an email notification to a configurable user
# ($EMAIL). This $EMAIL setting is optional, but its use is highly
# recommended, since if any LV fails, it will need to be checked
# manually, offline. Relevant messages are also sent to syslog.

# Set default values for configuration params. Changes to these values will
# be overwritten on an upgrade! To change these values, edit /etc/lvcheck.conf.
EMAIL='root'
INTERVAL=30
AC_UNKNOWN="CONTINUE"
LOGDIR="/var/log/lvcheck"
MINSNAP=256
MINFREE=0

usage() {
	cat <<- USAGE
usage: lvcheck [-hn] [-e:email] [-i interval] [-l logdir]
               [-m minfree] [device ...]
Check integrity of filesystems using temporary snapshots of logical volumes.
Defaults can be set in /etc/lvcheck.conf, or overridden on command line.

	-e: email address to send error messages to (default $EMAIL)
	-h: print this help message
	-i: interval after which a check is done (default $INTERVAL days)
	-l: directory in which logs should be stored (default $LOGDIR)
	-m: minimum free space to leave in volume group (default $MINFREE MB)
	-n: do not actually perform a check, just print what would be done 
	device: one or more LVs to check (default: all LVs with filesystems)
USAGE
}

while getopts "e:hi:l:m:n" opt $*; do
	case $opt in
		e) EMAIL=$OPTARG;;
		h) usage; exit 0;;
		i) INTERVAL=$OPTARG;;
		l) LOGDIR=$OPTARG;;
		m) MINFREE=$OPTARG;;
		n) NOCHECK="echo";;
		\?) usage; exit 1;;
	esac
done
shift $((OPTIND - 1))

# pull in configuration -- overwrite the defaults above if the file exists
[ -r /etc/lvcheck.conf ] && . /etc/lvcheck.conf
CHECKPATH=$(dirname "$0" | sed -e 's:/s*bin::')
[ -r $CHECKPATH/etc/lvcheck.conf ] && . $CHECKPATH/etc/lvcheck.conf

[ -d "$LOGDIR" ] || mkdir -p "$LOGDIR"
if [ ! -d "$LOGDIR" ]; then
	LOGDIR=${tmp:-/tmp}
	log err "$LOGDIR: no such directory, logging to $LOGDIR"
fi

# send $2 to syslog, with severity $1
# severities are emerg/alert/crit/err/warning/notice/info/debug
function log() {
	local sev="$1"
	local msg="$2"
	local arg=

	# log warning-or-higher messages to stderr as well
	case $sev in
	emerg|alert|crit|err|warning)
		arg=-s
		;;
	info|debug)
		:
		;;
	*)
		echo "error: unknown log severity '$sev'"
		;;
	esac

	[ "$NOCHECK" ] || logger -t lvcheck $arg -p user."$sev" -- "$msg"
}

# determine whether the machine is on AC power
function on_ac_power() {
	local any_known=no

	# try sysfs power class first
	if [ -d /sys/class/power_supply ]; then
		for psu in /sys/class/power_supply/*; do
			if [ -r "$psu/type" ]; then
		       		type=$(cat "$psu/type")

				# ignore batteries
				[ "$type" = "Battery" ] && continue

				online=$(cat "$psu/online")

				[ "$online" = 1 ] && return 0
				[ "$online" = 0 ] && any_known=yes
			fi
		done

		[ "$any_known" = "yes" ] && return 1
	fi

	# else fall back to AC adapters in /proc
	if [ -d /proc/acpi/ac_adapter ]; then
		for ac in /proc/acpi/ac_adapter/*; do
			if [ -r "$ac/state" ]; then
				grep -q on-line "$ac/state" && return 0
				grep -q off-line "$ac/state" && any_known=yes
			elif [ -r "$ac/status" ]; then
				grep -q on-line "$ac/status" && return 0
				grep -q off-line "$ac/status" && any_known=yes
			fi
		done

		[ "$any_known" = "yes" ] && return 1
	fi

	if [ "$AC_UNKNOWN" == "CONTINUE" ]; then
		return 0	# assume on AC power
	elif [ "$AC_UNKNOWN" == "ABORT" ]; then
		return 1	# assume on battery
	else
		log err "Invalid value for AC_UNKNOWN in the config file"
		exit 1
	fi
}

# attempt to force a check of $1 on the next reboot
function try_force_check() {
	local dev="$1"
	local fstype="$2"

	case "$fstype" in
	ext2|ext3|ext4)
		MAX=$(dumpe2fs -h 2>&1 "$dev"|grep "Maximum mount"|cut -d: -f2)
		# If the user has mount-count dependent checking disabled,
		# we have to overwrite the last checked time.  Otherwise,
		# it is preferable to preserve this for debugging and we
		# force the mount count high to force the check.
		if [ $MAX -lt 1 ]; then
			$NOCHECK tune2fs -T 19700201 "$dev"
		else
			$NOCHECK tune2fs -C 16000 "$dev"
		fi
		;;
	xfs)
		# XFS does not enforce check intervals; let email suffice.
		;;
	*)
		log warning "$dev: don't know how to force a check on $fstype."
		;;
	esac
}

# attempt to set the last-check time on $1 to now, and the mount count to 0.
function try_delay_checks() {
	local dev="$1"
	local fstype="$2"

	case "$fstype" in
	ext2|ext3|ext4)
		$NOCHECK tune2fs -C 0 -T now "$dev"
		;;
	xfs)
		# XFS does not enforce check intervals; nothing to delay
		;;
	*)
		log info "$dev: don't know how to delay check on $fstype."
		;;
	esac
}

# print the date that $1 was last checked, in a format that date(1) will
# accept, or "Unknown" if we don't know how to find that date.
function try_get_check_date() {
	local dev="$1"
	local fstype="$2"

	case "$fstype" in
	ext2|ext3|ext4)
		dumpe2fs -h "$dev" 2>&1 | grep 'Last checked:' |
			sed -e 's/Last checked:[[:space:]]*//'
		;;
	*)
		# XFS does not save the last-checked date 
		# TODO: add support for various other FSes
		echo "Unknown"
		;;
	esac
}

# do any extra checks for filesystem type $2, on device $1
function should_still_check() {
	local dev="$1"
	local fstype="$2"

	case "$fstype" in
	ext*)	;;
	jbd*)
		log debug "skip $dev: is an external journal."
		return 1
		;;
	swap)
		log debug "skip $dev: is a swap device."
		return 1
		;;
	*)
		log warning "skip $dev: can't check $fstype passively: assuming OK."
		;;
	esac

	return 0
}

# check the FS on $1 passively, saving output to $3.
function perform_check() {
	local dev="$1"
	local fstype="$2"
	local errlog="$3"

	case "$fstype" in
	ext2|ext3|ext4)
		if dumpe2fs -h "$dev" 2>&1| grep -q "Journal device"; then
			log debug "$dev: removing external journal"
			$NOCHECK tune2fs -U time $dev 2>&1 | tail -n +2
			$NOCHECK tune2fs -O has_journal $dev 2>&1 | tail -n +2
		fi

		# first clear the orphaned-inode list, to avoid unnecessary FS
		# changes in the next step (which would cause an "error" exit
		# from e2fsck). -C 0 is present for cases where the script is
		# run interactively (logsave -s strips out the progress bar).
		# ignore the return status of this e2fsck, as it doesn't matter.
		$NOCHECK nice logsave -as "$errlog" e2fsck -p -C 0 "$dev"

		# then do the real check; -y is here to give more info on any
		# errors that may be present on the FS, in the log file. the
		# snapshot is writable, so it shouldn't break anything if
		# e2fsck changes it.
		$NOCHECK nice logsave -as "$errlog" e2fsck -fy -C 0 "$dev"
		return $?
		;;
	reiserfs)
		echo Yes | $NOCHECK nice logsave -as "$errlog" fsck.reiserfs --check "$dev"
		# apparently can't fail? let's hope not...
		return 0
		;;
	xfs)
		$NOCHECK nice logsave -as "$errlog" xfs_repair -n "$dev"
		return $?
		;;
	jfs)
		$NOCHECK nice logsave -as "$errlog" fsck.jfs -fn "$dev"
		return $?
		;;
	esac
}

# do everything needed to check and reset dates and counters on /dev/$1/$2.
function check_fs() {
	local vg="$1"
	local lv="$2"
	local fstype="$3"
	local snapsize="$4" # in units of MB

	local lvdev="/dev/$vg/$lv"
	local errlog="$LOGDIR/$vg-$lv-$(date +%Y%m%d)"
	local snaplvbase="$lv-lvcheck-temp"
	local snaplv="$snaplvbase-$(date +'%Y%m%d')"

	# clean up any left-over snapshot LVs
	for lvtemp in /dev/$vg/$snaplvbase*; do
		if [ -e "$lvtemp" ]; then
			# Assume script won't run more than one at a time?
			log warning "stale $lvtemp: trying to remove old snapshot."

			if ! lvremove "$lvtemp"; then
				log err "error $lvtemp: could not delete."
				return 1
			fi
		fi
	done

	# see whether FS needs any extra checks that might disqualify it
	should_still_check "$lvdev" "$fstype" || return 0

	# get the last check time
	check_date=$(try_get_check_date "$lvdev" "$fstype")

	# if the date is unknown, run fsck every time the script runs. sigh.
	if [ "$check_date" != "Unknown" ]; then
		# add $INTERVAL days, and throw away the time portion
		check_day=$(date --date="$check_date $INTERVAL days" +'%Y%m%d')

		# get today's date, and skip the check if it's not within the interval
		today=$(date +'%Y%m%d')
		if [ $check_day -gt $today ]; then
			log debug "skip $lvdev: just checked on $check_date."
			return 0
		fi
	fi

	# create new snapshot LV
	modprobe -q dm-snapshot
	$NOCHECK lvcreate -s -L "$snapsize"M -n "$snaplv" "$vg/$lv"
	if [ $? -ne 0 ]; then
		log err "error $lvdev: unable to create snapshot for check"
		continue
	fi

	if perform_check "/dev/$vg/$snaplv" "$fstype" "$errlog"; then
		log info "$lvdev: Background check succeeded."
		try_delay_checks "$lvdev" "$fstype"
		rm -f "$errlog"
	else
		log err "error $lvdev: Background check failed! Run offline!"
		try_force_check "$lvdev" "$fstype"

		if [ "$EMAIL" ]; then
			(
			cat <<- EMAIL
			The filesystem on $lvdev failed its periodic
			check (done on a filesystem snapshot, not the actual
			filesystem), and should be taken offline as soon as
			possible to be repaired.  Otherwise, the kernel may
			remount the filesystem read-only, or reboot, if it hits
			the detected corruption.
			
			A log of the failed check is shown below.

			EMAIL
			cat "$errlog"
			) | $NOCHECK mail -s "Fsck $lvdev failed" $EMAIL
		fi
	fi

	[ -z "$NOCHECK" ] && sync && sleep 5 && sync
	$NOCHECK lvremove -f "/dev/$vg/$snaplv"
}

# check whether the machine is on AC power: if not, skip fsck
on_ac_power || exit 0

# parse lvscan output, removing single quotes around  LV names
([ -n "$*" ] && echo "$@" || ( lvscan 2>&1 | awk -F "'" '/ACTIVE/ { print $2 }' )) | while read DEV; do
	if [ ! -b "$DEV" ]; then
		if [ ! -e "$DEV" ]; then
			log info "skip $DEV: no longer exists."
		else
			log info "skip $DEV: not a block device."
		fi
		continue
	fi

	# get the FS type: blkid prints TYPE="blah"
	FSTYPE=$(blkid -s TYPE "$DEV" | cut -d'=' -f2 | tr -d \"\ )
	if [ -z "$FSTYPE" ]; then
		log info "skip $DEV: can't determine device type."
		continue
	fi

	# get the volume group and logical volume names
	VG=$(echo $(lvs --noheadings -o vg_name "$DEV"))
	LV=$(echo $(lvs --noheadings -o lv_name "$DEV"))

	# get the free space and LV size (in megs), guess at the snapshot size,
	# and see how much the admin will let us use (keeping MINFREE available)
	SPACE=$(lvs --noheadings --units M -o vg_free "$DEV"|cut -d. -f1)
	SIZE=$(lvs --noheadings --units M -o lv_size "$DEV"|cut -d.  -f1)
	SNAPSIZE=$(($SIZE / 500))
	AVAIL=$(($SPACE - $MINFREE))

	# if we don't even have MINSNAP space available, skip the LV
	if [ "$MINSNAP" -gt "$AVAIL" -o "$AVAIL" -le 0 ]; then
		log warning "skip $DEV: need ${MINSNAP}MB free in volume group."
		continue
	fi

	# make snapshot large enough to handle e.g. journal and other updates
	[ "$SNAPSIZE" -lt "$MINSNAP" ] && SNAPSIZE="$MINSNAP"

	# limit snapshot to available space (VG space minus min-free)
	[ "$SNAPSIZE" -gt "$AVAIL" ] && SNAPSIZE="$AVAIL"

	# don't need to check SNAPSIZE again: MINSNAP <= AVAIL, MINSNAP <= SNAPSIZE,
	# and SNAPSIZE <= AVAIL, combined, means SNAPSIZE must be between MINSNAP
	# and AVAIL, which is what we need -- assuming AVAIL > 0

	check_fs "$VG" "$LV" "$FSTYPE" "$SNAPSIZE"
done 

[-- Attachment #3: lvcheck.conf --]
[-- Type: application/octet-stream, Size: 1212 bytes --]

#!/bin/sh
# lvcheck configuration file

# This file follows the pattern of sshd_config:
# default values are shown here, commented-out.

# EMAIL: Address to send failure notifications to. If empty, failure
# notifications will not be sent.
#EMAIL='root'

# INTERVAL: Days to wait between checks. All LVs use the same INTERVAL,
# but the "days since last check" value can be different per LV, since
# that value is stored in the filesystem superblock.
#INTERVAL=30

# AC_UNKNOWN: Whether to run the fsck.* checks if the script can't determine
# whether the machine is on AC power. Laptop users will want to set this to
# ABORT, while server and desktop users will probably want to set this to
# CONTINUE.  Those are the only two valid values.
#AC_UNKNOWN="CONTINUE"

# MINSNAP: Minimum snapshot size to take, in megabytes. The default size is
# 1/500 the size of the logical volume, but if that is less than MINSNAP, the
# script will use MINSNAP instead. This should be large enough to handle e.g.
# journal updates, and other disk changes that require (semi-)constant space.
#MINSNAP=256

# MINFREE: Minimum amount of space (in megabytes) to keep free in each volume
# group when creating snapshots.
#MINFREE=0

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

* Re: [PATCH 0/2] e2fsprogs: update mkfs defaults
  2011-02-16 22:12 ` [PATCH 0/2] e2fsprogs: update mkfs defaults Andreas Dilger
@ 2011-02-16 22:37   ` Eric Sandeen
  0 siblings, 0 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 22:37 UTC (permalink / raw)
  To: Andreas Dilger; +Cc: ext4 development

On 2/16/11 4:12 PM, Andreas Dilger wrote:
> On 2011-02-16, at 11:12, Eric Sandeen wrote:
>> Anaconda (the Fedora/RHEL installer) had been "fixing up" extN
>> filesystems it created by setting the max mount count and check
>> interval to 0, as well as adding user_xattr to filesystem mount
>> options.
>> 
>> As part of their efforts to stop special-casing around upstream
>> defaults, they've removed these changes upstream.
>> 
>> However, I'd like to at least propose that these changes be made
>> default.
> 
> I'd really prefer instead that the "lvcheck" script be included into
> the distro, instead of changing mke2fs.  That achieves the same end
> result (periodic scrubbing of the filesystem to look for hidden
> errors), without introducing boot-time delays.  Given the size of
> disks today and the undetected bit-error-rate (somewhere around
> 1/10^15 bits or 12TB), I think it is important that there be
> automated scrubbing of the filesystem.

lvcheck is well and good, but is not a panacea; it is useful only
for snapshottable volumes.... and only lvm for now?

> I think the best place to put that script would be in the lvm tools
> (since it is applicable to multiple filesystems), which I think Eric
> has the most leverage in getting accepted (I've been but I'd be OK
> including it with e2fsprogs if there is pushback on that.

device-mapper utilities ended up being a black hole... combination
of "the scripts don't conform to our style" or somesuch, but no real
interest in adopting & fixing them to do so, IIRC.

>> The forced fsck often comes at unexpected and inopportune moments,
>> and even enterprise customers are often caught by surprise when
>> this happens.  Because a filesystem with an error condition will be
>> marked as requiring fsck anyway,
> 
> Any decent RAID array does background scrubbing for integrity
> verification, it doesn't just wait until there is an uncorrectable
> error detected in the block device.  If we can do something proactive
> to prevent this (i.e. lvcheck run by cron.weekly), it is worthwhile.

If the raid went offline for a couple hours at random times to do this,
users would scream too.  This is essentially what the forced fsck does
today.

> I think customers are equally surprised when their server fails
> (remount-ro/panic) due to the kernel detecting an error that might
> have been on disk for weeks or months.

If I were an administrator, I would schedule fscks to avoid this, rather
than rely on a "kludgy hack of using the UUID to derive a random" time
for this to hit...

>> I submit that the time-based and mount-based checks are not
>> particularly useful, and that administrators can schedule fscks on
>> their own time, or tune2fs the enforced intervals if they so
>> choose.
> 
> I think you are projecting your own self-enlightenment onto users
> ;-).  As we see on this list, there are many users that don't even
> back up their critical data, so IMHO taking out "safe by default"
> options is a step in the wrong direction.

Perhaps I'll whip up a s_last_backup_time patch, and refuse to mount if
the user hasn't conformed to our enlightened notions of how often is often
enough, as well.  I could integrate it with dumpe2fs.  ;)

There is "safe by default" and then there is "assuming administrator
responsibilities," IMHO.  I just personally think it's too much.

> Attached is my latest version of the lvcheck script, and a default
> /etc/lvcheck.conf script.  It's been enhanced to include a usage
> message, command-line option parsing to override default parameters,
> and the ability to check snapshots of ext3/4 filesystems with an
> external journal.
> 

The script is great, but has limited application.

Well, anyway, I knew this wouldn't be super popular with everyone,
but figured I'd put it out there for discussion.

-Eric
 
> Cheers, Andreas
> 
> 
> 


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

* Re: [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
  2011-02-16 18:24   ` Lukas Czerner
@ 2011-02-16 22:55   ` Ted Ts'o
  2011-02-17 21:55   ` [PATCH 1/2 V2] " Eric Sandeen
  2 siblings, 0 replies; 19+ messages in thread
From: Ted Ts'o @ 2011-02-16 22:55 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: ext4 development

On Wed, Feb 16, 2011 at 12:14:33PM -0600, Eric Sandeen wrote:
> The forced fsck often comes at unexpected and inopportune moments,
> and even enterprise customers are often caught by surprise when 
> this happens.  Because a filesystem with an error condition will 
> be marked as requiring fsck anyway, I submit that the time-based 
> and mount-based checks are not particularly useful, and that 
> administrators can schedule fscks on their own time, or tune2fs 
> the enforced intervals if they so choose.  Patch #1 disables the 
> intervals by default, and I've added a new mkfs option (-C) to 
> turn on the old behavior of random, unexpected, time-consuming
> fscks at boot time.  ;)
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>

How about just making it be an /etc/mke2fs.conf profile.  Just use
something like this:

    get_bool_from_profile(fs_types, "enable_periodic_fsck", 0)

... and I don't think we need to have a new command-line option.
People who want old behaviour can do

[defaults]
    enable_period_fsck = true

						- Ted

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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 21:53         ` Eric Sandeen
@ 2011-02-16 22:56           ` Ted Ts'o
  2011-02-16 22:58             ` Eric Sandeen
  0 siblings, 1 reply; 19+ messages in thread
From: Ted Ts'o @ 2011-02-16 22:56 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Andreas Dilger, ext4 development

On Wed, Feb 16, 2011 at 03:53:01PM -0600, Eric Sandeen wrote:
> Whoops, I didn't realize that acls were in the same boat, of "config
> on and then turn on with a mount option"
> 
> Ok, sure, adding that makes sense to me too...
> 
> Is sticking it in the _initialize() function ok with you?  It's a
> little odd, but ...

I think it's probably better to put it in the misc/mke2fs.c; we set a
number of superblock options there already.  But either place is fine...

						- Ted

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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 22:56           ` Ted Ts'o
@ 2011-02-16 22:58             ` Eric Sandeen
  2011-02-16 23:01               ` Ted Ts'o
  0 siblings, 1 reply; 19+ messages in thread
From: Eric Sandeen @ 2011-02-16 22:58 UTC (permalink / raw)
  To: Ted Ts'o; +Cc: Andreas Dilger, ext4 development

On 2/16/11 4:56 PM, Ted Ts'o wrote:
> On Wed, Feb 16, 2011 at 03:53:01PM -0600, Eric Sandeen wrote:
>> Whoops, I didn't realize that acls were in the same boat, of "config
>> on and then turn on with a mount option"
>>
>> Ok, sure, adding that makes sense to me too...
>>
>> Is sticking it in the _initialize() function ok with you?  It's a
>> little odd, but ...
> 
> I think it's probably better to put it in the misc/mke2fs.c; we set a
> number of superblock options there already.  But either place is fine...
> 
> 						- Ted

Ok, if we do it in mke2fs.c that's probably better.

Or - I wonder how hard it'd be to make this into a mke2fs.conf
option instead?  I always forget about that route.

get_string_from_profile(... "default_mount_opts" ....) ?

-Eric

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

* Re: [PATCH 2/2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 22:58             ` Eric Sandeen
@ 2011-02-16 23:01               ` Ted Ts'o
  0 siblings, 0 replies; 19+ messages in thread
From: Ted Ts'o @ 2011-02-16 23:01 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: Andreas Dilger, ext4 development

On Wed, Feb 16, 2011 at 04:58:35PM -0600, Eric Sandeen wrote:
> 
> Ok, if we do it in mke2fs.c that's probably better.
> 
> Or - I wonder how hard it'd be to make this into a mke2fs.conf
> option instead?  I always forget about that route.
> 
> get_string_from_profile(... "default_mount_opts" ....) ?

That would certainly be more general.  I don't really think it matters
for acl and xattr, since I think it's better to make them be the
default in the kernel, and then long term make noacl and noxattr
disappear as mount options altogether.

One reason for doing this is just to make the output of /proc/mounts
look nicer.  :-)

					- Ted

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

* [PATCH 1/2 V2] e2fsprogs: turn off enforced fsck intervals by default
  2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
  2011-02-16 18:24   ` Lukas Czerner
  2011-02-16 22:55   ` Ted Ts'o
@ 2011-02-17 21:55   ` Eric Sandeen
  2 siblings, 0 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-17 21:55 UTC (permalink / raw)
  To: ext4 development

The forced fsck often comes at unexpected and inopportune moments,
and even enterprise customers are often caught by surprise when 
this happens.  Because a filesystem with an error condition will 
be marked as requiring fsck anyway, I submit that the time-based 
and mount-based checks are not particularly useful, and that 
administrators can schedule fscks on their own time, or tune2fs 
the enforced intervals if they so choose.  This patch disables the 
intervals by default, and I've added a new mkfs.conf option to 
turn on the old behavior of random, unexpected, time-consuming
fscks at boot time.  ;)

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---

diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 7c38975..1d2927c 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -46,19 +46,6 @@
 #endif /* defined(__linux__)   && defined(EXT2_OS_LINUX) */
 
 /*
- * Note we override the kernel include file's idea of what the default
- * check interval (never) should be.  It's a good idea to check at
- * least *occasionally*, specially since servers will never rarely get
- * to reboot, since Linux is so robust these days.  :-)
- *
- * 180 days (six months) seems like a good value.
- */
-#ifdef EXT2_DFL_CHECKINTERVAL
-#undef EXT2_DFL_CHECKINTERVAL
-#endif
-#define EXT2_DFL_CHECKINTERVAL (86400L * 180L)
-
-/*
  * Calculate the number of GDT blocks to reserve for online filesystem growth.
  * The absolute maximum number of GDT blocks we can reserve is determined by
  * the number of block pointers that can fit into a single block.
@@ -155,7 +142,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 	set_field(s_log_block_size, 0);	/* default blocksize: 1024 bytes */
 	set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
 	set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
-	set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
+	set_field(s_max_mnt_count, 0);
 	set_field(s_errors, EXT2_ERRORS_DEFAULT);
 	set_field(s_feature_compat, 0);
 	set_field(s_feature_incompat, 0);
@@ -189,7 +176,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 		super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
 	}
 
-	set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
+	set_field(s_checkinterval, 0);
 	super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
 
 	super->s_creator_os = CREATOR_OS;
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 0ba4a4c..2910e6e 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -2105,13 +2105,31 @@ int main (int argc, char *argv[])
 	uuid_generate((unsigned char *) fs->super->s_hash_seed);
 
 	/*
-	 * Add "jitter" to the superblock's check interval so that we
-	 * don't check all the filesystems at the same time.  We use a
-	 * kludgy hack of using the UUID to derive a random jitter value.
+	 * Periodic checks can be enabled/disabled via config file.
+	 * Note we override the kernel include file's idea of what the default
+	 * check interval (never) should be.  It's a good idea to check at
+	 * least *occasionally*, specially since servers will never rarely get
+	 * to reboot, since Linux is so robust these days.  :-)
+	 *
+	 * 180 days (six months) seems like a good value.
 	 */
-	for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
-		val += fs->super->s_uuid[i];
-	fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+#ifdef EXT2_DFL_CHECKINTERVAL
+#undef EXT2_DFL_CHECKINTERVAL
+#endif
+#define EXT2_DFL_CHECKINTERVAL (86400L * 180L)
+
+	if (get_bool_from_profile(fs_types, "enable_periodic_fsck", 0)) {
+		fs->super->s_checkinterval = EXT2_DFL_CHECKINTERVAL;
+		fs->super->s_max_mnt_count = EXT2_DFL_MAX_MNT_COUNT;
+		/*
+		 * Add "jitter" to the superblock's check interval so that we
+		 * don't check all the filesystems at the same time.  We use a
+		 * kludgy hack of using the UUID to derive a random jitter value
+		 */
+		for (i = 0, val = 0 ; i < sizeof(fs->super->s_uuid); i++)
+			val += fs->super->s_uuid[i];
+		fs->super->s_max_mnt_count += val % EXT2_DFL_MAX_MNT_COUNT;
+	}
 
 	/*
 	 * Override the creator OS, if applicable
diff --git a/misc/mke2fs.conf b/misc/mke2fs.conf
index a7dd1c7..a96251e 100644
--- a/misc/mke2fs.conf
+++ b/misc/mke2fs.conf
@@ -1,5 +1,6 @@
 [defaults]
 	base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
+	enable_periodic_fsck = 0
 	blocksize = 4096
 	inode_size = 256
 	inode_ratio = 16384
diff --git a/misc/mke2fs.conf.5.in b/misc/mke2fs.conf.5.in
index e9913cb..1e777cd 100644
--- a/misc/mke2fs.conf.5.in
+++ b/misc/mke2fs.conf.5.in
@@ -107,6 +107,17 @@ command-line option
 to 
 .BR mke2fs (8).
 .TP
+.I enable_periodic_fsck
+This relation specifies whether periodic filesystem checks should be
+enforced at boot time.  If enabled, checks will be forced every
+180 days, or after a random number of mounts.  These values may
+be changed later via the
+.B -i
+and
+.B -c
+command-line options to
+.BR tune2fs (8).
+.TP
 .I force_undo
 This relation, if set to a boolean value of true, forces
 .B mke2fs


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

* [PATCH 2/2 V2] e2fsprogs: enable user namespace xattrs by default
  2011-02-16 18:21 ` [PATCH 2/2] e2fsprogs: enable user namespace xattrs " Eric Sandeen
  2011-02-16 19:15   ` Andreas Dilger
@ 2011-02-17 21:56   ` Eric Sandeen
  2011-02-20 23:31     ` Ted Ts'o
  1 sibling, 1 reply; 19+ messages in thread
From: Eric Sandeen @ 2011-02-17 21:56 UTC (permalink / raw)
  To: ext4 development

User namespace xattrs are generally useful, and I think extN
is the only filesystem requiring a special mount option to
enable them, when xattrs are otherwise available.  So this
change sets that mount option into the defaults, via a
mke2fs.conf option.

Note that if xattrs are config'd off, this will lead to a
mostly-harmless:

   EXT4-fs (sdc1): (no)user_xattr options not supported

message at mount time... 

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
---


diff --git a/lib/ext2fs/initialize.c b/lib/ext2fs/initialize.c
index 1d2927c..4cf0863 100644
--- a/lib/ext2fs/initialize.c
+++ b/lib/ext2fs/initialize.c
@@ -147,6 +147,7 @@ errcode_t ext2fs_initialize(const char *name, int flags,
 	set_field(s_feature_compat, 0);
 	set_field(s_feature_incompat, 0);
 	set_field(s_feature_ro_compat, 0);
+	set_field(s_default_mount_opts, 0);
 	set_field(s_first_meta_bg, 0);
 	set_field(s_raid_stride, 0);		/* default stride size: 0 */
 	set_field(s_raid_stripe_width, 0);	/* default stripe width: 0 */
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index 2910e6e..e9e3129 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -829,6 +829,18 @@ static void edit_feature(const char *str, __u32 *compat_array)
 	}
 }
 
+static void edit_mntopts(const char *str, __u32 *mntopts)
+{
+	if (!str)
+		return;
+
+	if (e2p_edit_mntopts(str, mntopts, ~0)) {
+		fprintf(stderr, _("Invalid mount option set: %s\n"),
+			str);
+		exit(1);
+	}
+}
+
 struct str_list {
 	char **list;
 	int num;
@@ -1576,6 +1588,16 @@ profile_error:
 	}
 	edit_feature(fs_features ? fs_features : tmp,
 		     &fs_param.s_feature_compat);
+
+	if (tmp)
+		free(tmp);
+
+	/* And which mount options as well */
+	tmp = NULL;
+	tmp = get_string_from_profile(fs_types, "default_mntopts",
+		"acl,user_xattr");
+	edit_mntopts(tmp, &fs_param.s_default_mount_opts);
+
 	if (tmp)
 		free(tmp);
 
diff --git a/misc/mke2fs.conf b/misc/mke2fs.conf
index a96251e..775e046 100644
--- a/misc/mke2fs.conf
+++ b/misc/mke2fs.conf
@@ -1,5 +1,6 @@
 [defaults]
 	base_features = sparse_super,filetype,resize_inode,dir_index,ext_attr
+	default_mntopts = acl,user_xattr
 	enable_periodic_fsck = 0
 	blocksize = 4096
 	inode_size = 256
diff --git a/misc/mke2fs.conf.5.in b/misc/mke2fs.conf.5.in
index 1e777cd..791cf7e 100644
--- a/misc/mke2fs.conf.5.in
+++ b/misc/mke2fs.conf.5.in
@@ -314,6 +314,13 @@ relations.  It may be overridden by the
 command-line option to
 .BR mke2fs (8).
 .TP
+.I default_mntopts
+This relation specifies the set of mount options which should be enabled
+by default.  These may be changed at a later time with the
+.B -o
+command-line option to
+.BR tune2fs (8).
+.TP
 .I auto_64-bit_support
 This relation is a boolean which specifies whether
 .BR mke2fs (8)


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

* Re: [PATCH 2/2 V2] e2fsprogs: enable user namespace xattrs by default
  2011-02-17 21:56   ` [PATCH 2/2 V2] " Eric Sandeen
@ 2011-02-20 23:31     ` Ted Ts'o
  2011-02-21 17:00       ` Eric Sandeen
  0 siblings, 1 reply; 19+ messages in thread
From: Ted Ts'o @ 2011-02-20 23:31 UTC (permalink / raw)
  To: Eric Sandeen; +Cc: ext4 development

On Thu, Feb 17, 2011 at 03:56:17PM -0600, Eric Sandeen wrote:
> User namespace xattrs are generally useful, and I think extN
> is the only filesystem requiring a special mount option to
> enable them, when xattrs are otherwise available.  So this
> change sets that mount option into the defaults, via a
> mke2fs.conf option.
> 
> Note that if xattrs are config'd off, this will lead to a
> mostly-harmless:
> 
>    EXT4-fs (sdc1): (no)user_xattr options not supported
> 
> message at mount time... 
> 
> Signed-off-by: Eric Sandeen <sandeen@redhat.com>

You didn't run "make check" before submitting these patches.  Please
do so in the future!  :-)

I'll fix up the expected test commit results for these two commits.

     	    		      	     	     - Ted

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

* Re: [PATCH 2/2 V2] e2fsprogs: enable user namespace xattrs by default
  2011-02-20 23:31     ` Ted Ts'o
@ 2011-02-21 17:00       ` Eric Sandeen
  0 siblings, 0 replies; 19+ messages in thread
From: Eric Sandeen @ 2011-02-21 17:00 UTC (permalink / raw)
  To: Ted Ts'o; +Cc: ext4 development

On 2/20/11 5:31 PM, Ted Ts'o wrote:
> On Thu, Feb 17, 2011 at 03:56:17PM -0600, Eric Sandeen wrote:
>> User namespace xattrs are generally useful, and I think extN
>> is the only filesystem requiring a special mount option to
>> enable them, when xattrs are otherwise available.  So this
>> change sets that mount option into the defaults, via a
>> mke2fs.conf option.
>>
>> Note that if xattrs are config'd off, this will lead to a
>> mostly-harmless:
>>
>>    EXT4-fs (sdc1): (no)user_xattr options not supported
>>
>> message at mount time... 
>>
>> Signed-off-by: Eric Sandeen <sandeen@redhat.com>
> 
> You didn't run "make check" before submitting these patches.  Please
> do so in the future!  :-)
> 
> I'll fix up the expected test commit results for these two commits.
> 
>      	    		      	     	     - Ted

Argh sorry.  Out of practice I guess.

Thanks,
-Eric

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

end of thread, other threads:[~2011-02-21 17:00 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-16 18:12 [PATCH 0/2] e2fsprogs: update mkfs defaults Eric Sandeen
2011-02-16 18:14 ` [PATCH 1/2] e2fsprogs: turn off enforced fsck intervals by default Eric Sandeen
2011-02-16 18:24   ` Lukas Czerner
2011-02-16 19:12     ` Amir Goldstein
2011-02-16 22:55   ` Ted Ts'o
2011-02-17 21:55   ` [PATCH 1/2 V2] " Eric Sandeen
2011-02-16 18:21 ` [PATCH 2/2] e2fsprogs: enable user namespace xattrs " Eric Sandeen
2011-02-16 19:15   ` Andreas Dilger
2011-02-16 19:27     ` Eric Sandeen
2011-02-16 21:49       ` Ted Ts'o
2011-02-16 21:53         ` Eric Sandeen
2011-02-16 22:56           ` Ted Ts'o
2011-02-16 22:58             ` Eric Sandeen
2011-02-16 23:01               ` Ted Ts'o
2011-02-17 21:56   ` [PATCH 2/2 V2] " Eric Sandeen
2011-02-20 23:31     ` Ted Ts'o
2011-02-21 17:00       ` Eric Sandeen
2011-02-16 22:12 ` [PATCH 0/2] e2fsprogs: update mkfs defaults Andreas Dilger
2011-02-16 22:37   ` Eric Sandeen

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.