Author: pfg
Date: Thu Feb 27 16:07:12 2014
New Revision: 262564
URL: http://svnweb.freebsd.org/changeset/base/262564

Log:
  MFC   r262346:
  ext2fs: fully enable ext4 read-only support.
  
  The ext4 developers tend to tag Ext4-specific flags as
  "incompatible" even when such features are not relevant for
  read-only support.  This is a consequence of the process
  though which this filesystem is implemented without design
  and the fact that some new features are not extensible to
  ext2/3.
  
  Organize the features according to what we support and sort
  them so that we can now read-only mount filesystems with
  some features that may be found in newly formatted ext4 fs.
  
  Submitted by: Zheng Liu

Modified:
  stable/9/sys/fs/ext2fs/ext2_vfsops.c
  stable/9/sys/fs/ext2fs/ext2fs.h
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/fs/   (props changed)

Modified: stable/9/sys/fs/ext2fs/ext2_vfsops.c
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2_vfsops.c        Thu Feb 27 16:05:52 2014        
(r262563)
+++ stable/9/sys/fs/ext2fs/ext2_vfsops.c        Thu Feb 27 16:07:12 2014        
(r262564)
@@ -290,7 +290,8 @@ ext2_check_sb_compat(struct ext2fs *es, 
                return (1);
        }
        if (es->e2fs_rev > E2FS_REV0) {
-               if (es->e2fs_features_incompat & ~EXT2F_INCOMPAT_SUPP) {
+               if (es->e2fs_features_incompat & ~(EXT2F_INCOMPAT_SUPP |
+                                                  EXT4F_RO_INCOMPAT_SUPP)) {
                        printf(
 "WARNING: mount of %s denied due to unsupported optional features\n",
                            devtoname(dev));

Modified: stable/9/sys/fs/ext2fs/ext2fs.h
==============================================================================
--- stable/9/sys/fs/ext2fs/ext2fs.h     Thu Feb 27 16:05:52 2014        
(r262563)
+++ stable/9/sys/fs/ext2fs/ext2fs.h     Thu Feb 27 16:07:12 2014        
(r262564)
@@ -200,19 +200,26 @@ struct csum {
  * We support the following REV1 features:
  * - EXT2F_ROCOMPAT_SPARSESUPER
  * - EXT2F_ROCOMPAT_LARGEFILE
+ * - EXT2F_ROCOMPAT_EXTRA_ISIZE
  * - EXT2F_INCOMPAT_FTYPE
  *
  * We partially (read-only) support the following EXT4 features:
  * - EXT2F_ROCOMPAT_HUGE_FILE
- * - EXT2F_ROCOMPAT_EXTRA_ISIZE
  * - EXT2F_INCOMPAT_EXTENTS
+ *
+ * We do not support these EXT4 features but they are irrelevant
+ * for read-only support:
+ * - EXT2F_INCOMPAT_FLEX_BG
+ * - EXT2F_INCOMPAT_META_BG
  */
-#define EXT2F_COMPAT_SUPP              0x0000
+#define EXT2F_COMPAT_SUPP              EXT2F_COMPAT_DIRHASHINDEX
 #define EXT2F_ROCOMPAT_SUPP            (EXT2F_ROCOMPAT_SPARSESUPER | \
                                         EXT2F_ROCOMPAT_LARGEFILE | \
                                         EXT2F_ROCOMPAT_EXTRA_ISIZE)
-#define EXT2F_INCOMPAT_SUPP            (EXT2F_INCOMPAT_FTYPE | \
-                                        EXT2F_INCOMPAT_EXTENTS)
+#define EXT2F_INCOMPAT_SUPP            EXT2F_INCOMPAT_FTYPE
+#define EXT4F_RO_INCOMPAT_SUPP         (EXT2F_INCOMPAT_EXTENTS | \
+                                        EXT2F_INCOMPAT_FLEX_BG | \
+                                        EXT2F_INCOMPAT_META_BG )
 
 /* Assume that user mode programs are passing in an ext2fs superblock, not
  * a kernel struct super_block.  This will allow us to call the feature-test
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to