2006-10-18 06:24:05

by Theodore Ts'o

[permalink] [raw]
Subject: [PATCH, E2FSPROGS] On-disk format for large number of subdirectors


Comments?

- Ted


On-disk format for large number of subdirectories

- EXT4_FEATURE_RO_COMPAT_DIR_NLINK (0x0020?) - allow directories to have
> 65000 subdirectories (i_nlinks) by setting i_nlinks = 1 for such
directories. RO_COMPAT protects old filesystems from unlinking such
directories incorrectly and losing all files therein.

Signed-off-by: "Theodore Ts'o" <[email protected]>

Index: e2fsprogs/lib/ext2fs/ext2_fs.h
===================================================================
--- e2fsprogs.orig/lib/ext2fs/ext2_fs.h 2006-10-18 01:42:48.000000000 -0400
+++ e2fsprogs/lib/ext2fs/ext2_fs.h 2006-10-18 01:49:51.000000000 -0400
@@ -71,7 +71,7 @@
/*
* Maximal count of links to a file
*/
-#define EXT2_LINK_MAX 32000
+#define EXT2_LINK_MAX 65000

/*
* Macro-instructions used to manage several block sizes
@@ -606,6 +606,7 @@
/* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */
#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
+#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020

#define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002


2006-10-18 19:29:29

by Andreas Dilger

[permalink] [raw]
Subject: Re: [PATCH, E2FSPROGS] On-disk format for large number of subdirectors

On Oct 18, 2006 02:24 -0400, Theodore Ts'o wrote:
> On-disk format for large number of subdirectories
>
> - EXT4_FEATURE_RO_COMPAT_DIR_NLINK (0x0020?) - allow directories to have
> > 65000 subdirectories (i_nlinks) by setting i_nlinks = 1 for such
> directories. RO_COMPAT protects old filesystems from unlinking such
> directories incorrectly and losing all files therein.
>
> Signed-off-by: "Theodore Ts'o" <[email protected]>

Looks good. Will try to get a new patch out with this support.

> Index: e2fsprogs/lib/ext2fs/ext2_fs.h
> ===================================================================
> --- e2fsprogs.orig/lib/ext2fs/ext2_fs.h 2006-10-18 01:42:48.000000000 -0400
> +++ e2fsprogs/lib/ext2fs/ext2_fs.h 2006-10-18 01:49:51.000000000 -0400
> @@ -71,7 +71,7 @@
> /*
> * Maximal count of links to a file
> */
> -#define EXT2_LINK_MAX 32000
> +#define EXT2_LINK_MAX 65000
>
> /*
> * Macro-instructions used to manage several block sizes
> @@ -606,6 +606,7 @@
> /* #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 not used */
> #define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008
> #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010
> +#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020
>
> #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
> #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002

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