[arch-commits] Commit in kernel26-lts/trunk (4 files)

andyrtr at archlinux.org andyrtr at archlinux.org
Wed Aug 26 17:36:47 UTC 2009


    Date: Wednesday, August 26, 2009 @ 13:36:47
  Author: andyrtr
Revision: 50440

upgpkg: kernel26-lts 2.6.27.31-2
    add two patches from Fedora to get full ext4 support

Added:
  kernel26-lts/trunk/linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch
  kernel26-lts/trunk/linux-2.6.27.9-ext4-cap-check-delay.patch
Modified:
  kernel26-lts/trunk/PKGBUILD
  kernel26-lts/trunk/config.x86_64

------------------------------------------------+
 PKGBUILD                                       |   18 
 config.x86_64                                  |   17 
 linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch |  595 +++++++++++++++++++++++
 linux-2.6.27.9-ext4-cap-check-delay.patch      |   34 +
 4 files changed, 652 insertions(+), 12 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2009-08-26 16:43:43 UTC (rev 50439)
+++ PKGBUILD	2009-08-26 17:36:47 UTC (rev 50440)
@@ -4,7 +4,7 @@
 _kernelname=${pkgname#kernel26}
 _basekernel=2.6.27
 pkgver=${_basekernel}.31
-pkgrel=1
+pkgrel=2
 pkgdesc="The Linux Kernel and modules - stable longtime supported kernel package suitable for servers"
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -17,12 +17,18 @@
 	# the main kernel config files
         config config.x86_64
         # standard config files for mkinitcpio ramdisk
-        ${pkgname}.preset)
+        ${pkgname}.preset
+	# ext4 patches from Fedora
+	#http://cvs.fedoraproject.org/viewvc/rpms/kernel/F-10/?pathrev=kernel-2_6_27_29-170_2_79_fc10
+	linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch
+	linux-2.6.27.9-ext4-cap-check-delay.patch)
 md5sums=('b3e78977aa79d3754cb7f8143d7ddabd'
          'adfb289efee5dce61e532678317c0b4c'
          '04ed4c213100a20056dc8180a8bc7627'
-         'e8b3917b3ec8506773fc0755b6d85c25'
-         'a13338958d1b241f8dfd4c6014cad3d4')
+         '2d90dc4f3541c7fdbc2802b7c6be7bdc'
+         'a13338958d1b241f8dfd4c6014cad3d4'
+         '659953c9c437d311bf93eff505ef8e67'
+         '8cd12e9727d9221aacfa52ad9b9a42f9')
 
 build() {
   KARCH=x86
@@ -33,6 +39,10 @@
      patch -Np1 -i ${srcdir}/patch-$pkgver
    fi
 
+  # add full ext4 support
+  patch -Np1 -i ${srcdir}/linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch || return 1
+  patch -Np1 -i ${srcdir}/linux-2.6.27.9-ext4-cap-check-delay.patch || return 1
+
   if [ "$CARCH" = "x86_64" ]; then
     cat ../config.x86_64 >./.config
   else

Modified: config.x86_64
===================================================================
--- config.x86_64	2009-08-26 16:43:43 UTC (rev 50439)
+++ config.x86_64	2009-08-26 17:36:47 UTC (rev 50440)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux kernel version: 2.6.27.31
-# Mon Aug 24 22:57:17 2009
+# Wed Aug 26 17:06:33 2009
 #
 CONFIG_64BIT=y
 # CONFIG_X86_32 is not set
@@ -3335,15 +3335,16 @@
 CONFIG_EXT3_FS_XATTR=y
 CONFIG_EXT3_FS_POSIX_ACL=y
 CONFIG_EXT3_FS_SECURITY=y
-CONFIG_EXT4DEV_FS=m
-CONFIG_EXT4DEV_FS_XATTR=y
-CONFIG_EXT4DEV_FS_POSIX_ACL=y
-CONFIG_EXT4DEV_FS_SECURITY=y
+CONFIG_EXT4_FS=y
+CONFIG_EXT4DEV_COMPAT=y
+CONFIG_EXT4_FS_XATTR=y
+CONFIG_EXT4_FS_POSIX_ACL=y
+CONFIG_EXT4_FS_SECURITY=y
 CONFIG_JBD=m
 # CONFIG_JBD_DEBUG is not set
-CONFIG_JBD2=m
+CONFIG_JBD2=y
 # CONFIG_JBD2_DEBUG is not set
-CONFIG_FS_MBCACHE=m
+CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
 # CONFIG_REISERFS_PROC_INFO is not set
@@ -3770,7 +3771,7 @@
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_FIND_NEXT_BIT=y
 CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
+CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=m
 CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y

Added: linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch
===================================================================
--- linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch	                        (rev 0)
+++ linux-2.6.27-ext4-rename-ext4dev-to-ext4.patch	2009-08-26 17:36:47 UTC (rev 50440)
@@ -0,0 +1,595 @@
+From: Theodore Ts'o <tytso at mit.edu>
+Date: Sat, 11 Oct 2008 00:02:48 +0000 (-0400)
+Subject: ext4: Rename ext4dev to ext4
+X-Git-Tag: v2.6.28-rc1~709^2
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=03010a3350301baac2154fa66de925ae2981b7e3
+
+ext4: Rename ext4dev to ext4
+
+The ext4 filesystem is getting stable enough that it's time to drop
+the "dev" prefix.  Also remove the requirement for the TEST_FILESYS
+flag.
+
+Signed-off-by: "Theodore Ts'o" <tytso at mit.edu>
+---
+
+diff --git a/Documentation/filesystems/ext4.txt b/Documentation/filesystems/ext4.txt
+index 2890579..74484e6 100644
+--- a/Documentation/filesystems/ext4.txt
++++ b/Documentation/filesystems/ext4.txt
+@@ -32,9 +32,9 @@ Mailing list: linux-ext4 at vger.kernel.org
+     you will need to merge your changes with the version from e2fsprogs
+     1.41.x.
+ 
+-  - Create a new filesystem using the ext4dev filesystem type:
++  - Create a new filesystem using the ext4 filesystem type:
+ 
+-    	# mke2fs -t ext4dev /dev/hda1
++    	# mke2fs -t ext4 /dev/hda1
+ 
+     Or configure an existing ext3 filesystem to support extents and set
+     the test_fs flag to indicate that it's ok for an in-development
+@@ -47,13 +47,13 @@ Mailing list: linux-ext4 at vger.kernel.org
+ 
+         # tune2fs -I 256 /dev/hda1
+ 
+-    (Note: we currently do not have tools to convert an ext4dev
++    (Note: we currently do not have tools to convert an ext4
+     filesystem back to ext3; so please do not do try this on production
+     filesystems.)
+ 
+   - Mounting:
+ 
+-	# mount -t ext4dev /dev/hda1 /wherever
++	# mount -t ext4 /dev/hda1 /wherever
+ 
+   - When comparing performance with other filesystems, remember that
+     ext3/4 by default offers higher data integrity guarantees than most.
+diff --git a/fs/Kconfig b/fs/Kconfig
+index abccb5d..40183d9 100644
+--- a/fs/Kconfig
++++ b/fs/Kconfig
+@@ -136,37 +136,51 @@ config EXT3_FS_SECURITY
+ 	  If you are not using a security module that requires using
+ 	  extended attributes for file security labels, say N.
+ 
+-config EXT4DEV_FS
+-	tristate "Ext4dev/ext4 extended fs support development (EXPERIMENTAL)"
+-	depends on EXPERIMENTAL
++config EXT4_FS
++	tristate "The Extended 4 (ext4) filesystem"
+ 	select JBD2
+ 	select CRC16
+ 	help
+-	  Ext4dev is a predecessor filesystem of the next generation
+-	  extended fs ext4, based on ext3 filesystem code. It will be
+-	  renamed ext4 fs later, once ext4dev is mature and stabilized.
++	  This is the next generation of the ext3 filesystem.
+ 
+ 	  Unlike the change from ext2 filesystem to ext3 filesystem,
+-	  the on-disk format of ext4dev is not the same as ext3 any more:
+-	  it is based on extent maps and it supports 48-bit physical block
+-	  numbers. These combined on-disk format changes will allow
+-	  ext4dev/ext4 to handle more than 16 TB filesystem volumes --
+-	  a hard limit that ext3 cannot overcome without changing the
+-	  on-disk format.
+-
+-	  Other than extent maps and 48-bit block numbers, ext4dev also is
+-	  likely to have other new features such as persistent preallocation,
+-	  high resolution time stamps, and larger file support etc.  These
+-	  features will be added to ext4dev gradually.
++	  the on-disk format of ext4 is not forwards compatible with
++	  ext3; it is based on extent maps and it supports 48-bit
++	  physical block numbers.  The ext4 filesystem also supports delayed
++	  allocation, persistent preallocation, high resolution time stamps,
++	  and a number of other features to improve performance and speed
++	  up fsck time.  For more information, please see the web pages at
++	  http://ext4.wiki.kernel.org.
++
++	  The ext4 filesystem will support mounting an ext3
++	  filesystem; while there will be some performance gains from
++	  the delayed allocation and inode table readahead, the best
++	  performance gains will require enabling ext4 features in the
++	  filesystem, or formating a new filesystem as an ext4
++	  filesystem initially.
+ 
+ 	  To compile this file system support as a module, choose M here. The
+ 	  module will be called ext4dev.
+ 
+ 	  If unsure, say N.
+ 
+-config EXT4DEV_FS_XATTR
+-	bool "Ext4dev extended attributes"
+-	depends on EXT4DEV_FS
++config EXT4DEV_COMPAT
++	bool "Enable ext4dev compatibility"
++	depends on EXT4_FS
++	help
++	  Starting with 2.6.28, the name of the ext4 filesystem was
++	  renamed from ext4dev to ext4.  Unfortunately there are some
++	  lagecy userspace programs (such as klibc's fstype) have
++	  "ext4dev" hardcoded.  
++
++	  To enable backwards compatibility so that systems that are
++	  still expecting to mount ext4 filesystems using ext4dev,
++	  chose Y here.   This feature will go away by 2.6.31, so
++	  please arrange to get your userspace programs fixed!
++
++config EXT4_FS_XATTR
++	bool "Ext4 extended attributes"
++	depends on EXT4_FS
+ 	default y
+ 	help
+ 	  Extended attributes are name:value pairs associated with inodes by
+@@ -175,11 +189,11 @@ config EXT4DEV_FS_XATTR
+ 
+ 	  If unsure, say N.
+ 
+-	  You need this for POSIX ACL support on ext4dev/ext4.
++	  You need this for POSIX ACL support on ext4.
+ 
+-config EXT4DEV_FS_POSIX_ACL
+-	bool "Ext4dev POSIX Access Control Lists"
+-	depends on EXT4DEV_FS_XATTR
++config EXT4_FS_POSIX_ACL
++	bool "Ext4 POSIX Access Control Lists"
++	depends on EXT4_FS_XATTR
+ 	select FS_POSIX_ACL
+ 	help
+ 	  POSIX Access Control Lists (ACLs) support permissions for users and
+@@ -190,14 +204,14 @@ config EXT4DEV_FS_POSIX_ACL
+ 
+ 	  If you don't know what Access Control Lists are, say N
+ 
+-config EXT4DEV_FS_SECURITY
+-	bool "Ext4dev Security Labels"
+-	depends on EXT4DEV_FS_XATTR
++config EXT4_FS_SECURITY
++	bool "Ext4 Security Labels"
++	depends on EXT4_FS_XATTR
+ 	help
+ 	  Security labels support alternative access control models
+ 	  implemented by security modules like SELinux.  This option
+ 	  enables an extended attribute handler for file security
+-	  labels in the ext4dev/ext4 filesystem.
++	  labels in the ext4 filesystem.
+ 
+ 	  If you are not using a security module that requires using
+ 	  extended attributes for file security labels, say N.
+@@ -240,22 +254,22 @@ config JBD2
+ 	help
+ 	  This is a generic journaling layer for block devices that support
+ 	  both 32-bit and 64-bit block numbers.  It is currently used by
+-	  the ext4dev/ext4 filesystem, but it could also be used to add
++	  the ext4 filesystem, but it could also be used to add
+ 	  journal support to other file systems or block devices such
+ 	  as RAID or LVM.
+ 
+-	  If you are using ext4dev/ext4, you need to say Y here. If you are not
+-	  using ext4dev/ext4 then you will probably want to say N.
++	  If you are using ext4, you need to say Y here. If you are not
++	  using ext4 then you will probably want to say N.
+ 
+ 	  To compile this device as a module, choose M here. The module will be
+-	  called jbd2.  If you are compiling ext4dev/ext4 into the kernel,
++	  called jbd2.  If you are compiling ext4 into the kernel,
+ 	  you cannot compile this code as a module.
+ 
+ config JBD2_DEBUG
+-	bool "JBD2 (ext4dev/ext4) debugging support"
++	bool "JBD2 (ext4) debugging support"
+ 	depends on JBD2 && DEBUG_FS
+ 	help
+-	  If you are using the ext4dev/ext4 journaled file system (or
++	  If you are using the ext4 journaled file system (or
+ 	  potentially any other filesystem/device using JBD2), this option
+ 	  allows you to enable debugging output while the system is running,
+ 	  in order to help track down any problems you are having.
+@@ -270,9 +284,9 @@ config JBD2_DEBUG
+ config FS_MBCACHE
+ # Meta block cache for Extended Attributes (ext2/ext3/ext4)
+ 	tristate
+-	depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4DEV_FS_XATTR
+-	default y if EXT2_FS=y || EXT3_FS=y || EXT4DEV_FS=y
+-	default m if EXT2_FS=m || EXT3_FS=m || EXT4DEV_FS=m
++	depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
++	default y if EXT2_FS=y || EXT3_FS=y || EXT4_FS=y
++	default m if EXT2_FS=m || EXT3_FS=m || EXT4_FS=m
+ 
+ config REISERFS_FS
+ 	tristate "Reiserfs support"
+diff --git a/fs/Makefile b/fs/Makefile
+index a1482a5..de404b0 100644
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -69,7 +69,7 @@ obj-$(CONFIG_DLM)		+= dlm/
+ # Do not add any filesystems before this line
+ obj-$(CONFIG_REISERFS_FS)	+= reiserfs/
+ obj-$(CONFIG_EXT3_FS)		+= ext3/ # Before ext2 so root fs can be ext3
+-obj-$(CONFIG_EXT4DEV_FS)	+= ext4/ # Before ext2 so root fs can be ext4dev
++obj-$(CONFIG_EXT4_FS)		+= ext4/ # Before ext2 so root fs can be ext4dev
+ obj-$(CONFIG_JBD)		+= jbd/
+ obj-$(CONFIG_JBD2)		+= jbd2/
+ obj-$(CONFIG_EXT2_FS)		+= ext2/
+diff --git a/fs/ext4/Makefile b/fs/ext4/Makefile
+index ac6fa8c..a8ff003 100644
+--- a/fs/ext4/Makefile
++++ b/fs/ext4/Makefile
+@@ -2,12 +2,12 @@
+ # Makefile for the linux ext4-filesystem routines.
+ #
+ 
+-obj-$(CONFIG_EXT4DEV_FS) += ext4dev.o
++obj-$(CONFIG_EXT4_FS) += ext4.o
+ 
+-ext4dev-y	:= balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
++ext4-y	:= balloc.o bitmap.o dir.o file.o fsync.o ialloc.o inode.o \
+ 		   ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \
+ 		   ext4_jbd2.o migrate.o mballoc.o
+ 
+-ext4dev-$(CONFIG_EXT4DEV_FS_XATTR)	+= xattr.o xattr_user.o xattr_trusted.o
+-ext4dev-$(CONFIG_EXT4DEV_FS_POSIX_ACL)	+= acl.o
+-ext4dev-$(CONFIG_EXT4DEV_FS_SECURITY)	+= xattr_security.o
++ext4-$(CONFIG_EXT4_FS_XATTR)		+= xattr.o xattr_user.o xattr_trusted.o
++ext4-$(CONFIG_EXT4_FS_POSIX_ACL)	+= acl.o
++ext4-$(CONFIG_EXT4_FS_SECURITY)		+= xattr_security.o
+diff --git a/fs/ext4/acl.h b/fs/ext4/acl.h
+index 4c9948f..cb45257 100644
+--- a/fs/ext4/acl.h
++++ b/fs/ext4/acl.h
+@@ -51,7 +51,7 @@ static inline int ext4_acl_count(size_t size)
+ 	}
+ }
+ 
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 
+ /* Value for inode->u.ext4_i.i_acl and inode->u.ext4_i.i_default_acl
+    if the ACL has not been cached */
+@@ -62,7 +62,7 @@ extern int ext4_permission(struct inode *, int);
+ extern int ext4_acl_chmod (struct inode *);
+ extern int ext4_init_acl (handle_t *, struct inode *, struct inode *);
+ 
+-#else  /* CONFIG_EXT4DEV_FS_POSIX_ACL */
++#else  /* CONFIG_EXT4_FS_POSIX_ACL */
+ #include <linux/sched.h>
+ #define ext4_permission NULL
+ 
+@@ -77,5 +77,5 @@ ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
+ {
+ 	return 0;
+ }
+-#endif  /* CONFIG_EXT4DEV_FS_POSIX_ACL */
++#endif  /* CONFIG_EXT4_FS_POSIX_ACL */
+ 
+diff --git a/fs/ext4/ext4_i.h b/fs/ext4/ext4_i.h
+index 2875eec..5c124c0 100644
+--- a/fs/ext4/ext4_i.h
++++ b/fs/ext4/ext4_i.h
+@@ -66,7 +66,7 @@ struct ext4_inode_info {
+ 	__u32	i_state;		/* Dynamic state flags for ext4 */
+ 
+ 	ext4_lblk_t		i_dir_start_lookup;
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	/*
+ 	 * Extended attributes can be read independently of the main file
+ 	 * data. Taking i_mutex even when reading would cause contention
+@@ -76,7 +76,7 @@ struct ext4_inode_info {
+ 	 */
+ 	struct rw_semaphore xattr_sem;
+ #endif
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	struct posix_acl	*i_acl;
+ 	struct posix_acl	*i_default_acl;
+ #endif
+diff --git a/fs/ext4/file.c b/fs/ext4/file.c
+index 6d5be15..6bd11fb 100644
+--- a/fs/ext4/file.c
++++ b/fs/ext4/file.c
+@@ -165,7 +165,7 @@ const struct inode_operations ext4_file_inode_operations = {
+ 	.truncate	= ext4_truncate,
+ 	.setattr	= ext4_setattr,
+ 	.getattr	= ext4_getattr,
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	.setxattr	= generic_setxattr,
+ 	.getxattr	= generic_getxattr,
+ 	.listxattr	= ext4_listxattr,
+diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
+index a474786..9b4ec9d 100644
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -4041,7 +4041,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
+ 		return inode;
+ 
+ 	ei = EXT4_I(inode);
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	ei->i_acl = EXT4_ACL_NOT_CACHED;
+ 	ei->i_default_acl = EXT4_ACL_NOT_CACHED;
+ #endif
+diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
+index 5295a92..92db9e9 100644
+--- a/fs/ext4/namei.c
++++ b/fs/ext4/namei.c
+@@ -1773,7 +1773,7 @@ retry:
+ 	err = PTR_ERR(inode);
+ 	if (!IS_ERR(inode)) {
+ 		init_special_inode(inode, inode->i_mode, rdev);
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 		inode->i_op = &ext4_special_inode_operations;
+ #endif
+ 		err = ext4_add_nondir(handle, dentry, inode);
+@@ -2456,7 +2456,7 @@ const struct inode_operations ext4_dir_inode_operations = {
+ 	.mknod		= ext4_mknod,
+ 	.rename		= ext4_rename,
+ 	.setattr	= ext4_setattr,
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	.setxattr	= generic_setxattr,
+ 	.getxattr	= generic_getxattr,
+ 	.listxattr	= ext4_listxattr,
+@@ -2467,7 +2467,7 @@ const struct inode_operations ext4_dir_inode_operations = {
+ 
+ const struct inode_operations ext4_special_inode_operations = {
+ 	.setattr	= ext4_setattr,
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	.setxattr	= generic_setxattr,
+ 	.getxattr	= generic_getxattr,
+ 	.listxattr	= ext4_listxattr,
+diff --git a/fs/ext4/super.c b/fs/ext4/super.c
+index 7d86560..0e661c5 100644
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -569,7 +569,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
+ 	ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);
+ 	if (!ei)
+ 		return NULL;
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	ei->i_acl = EXT4_ACL_NOT_CACHED;
+ 	ei->i_default_acl = EXT4_ACL_NOT_CACHED;
+ #endif
+@@ -605,7 +605,7 @@ static void init_once(void *foo)
+ 	struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
+ 
+ 	INIT_LIST_HEAD(&ei->i_orphan);
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	init_rwsem(&ei->xattr_sem);
+ #endif
+ 	init_rwsem(&ei->i_data_sem);
+@@ -631,7 +631,7 @@ static void destroy_inodecache(void)
+ static void ext4_clear_inode(struct inode *inode)
+ {
+ 	struct ext4_block_alloc_info *rsv = EXT4_I(inode)->i_block_alloc_info;
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	if (EXT4_I(inode)->i_acl &&
+ 			EXT4_I(inode)->i_acl != EXT4_ACL_NOT_CACHED) {
+ 		posix_acl_release(EXT4_I(inode)->i_acl);
+@@ -720,7 +720,7 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs)
+ 		seq_puts(seq, ",debug");
+ 	if (test_opt(sb, OLDALLOC))
+ 		seq_puts(seq, ",oldalloc");
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	if (test_opt(sb, XATTR_USER) &&
+ 		!(def_mount_opts & EXT4_DEFM_XATTR_USER))
+ 		seq_puts(seq, ",user_xattr");
+@@ -729,7 +729,7 @@ static int ext4_show_options(struct seq_file *seq, struct vfsmount *vfs)
+ 		seq_puts(seq, ",nouser_xattr");
+ 	}
+ #endif
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	if (test_opt(sb, POSIX_ACL) && !(def_mount_opts & EXT4_DEFM_ACL))
+ 		seq_puts(seq, ",acl");
+ 	if (!test_opt(sb, POSIX_ACL) && (def_mount_opts & EXT4_DEFM_ACL))
+@@ -1078,7 +1078,7 @@ static int parse_options(char *options, struct super_block *sb,
+ 		case Opt_orlov:
+ 			clear_opt(sbi->s_mount_opt, OLDALLOC);
+ 			break;
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 		case Opt_user_xattr:
+ 			set_opt(sbi->s_mount_opt, XATTR_USER);
+ 			break;
+@@ -1092,7 +1092,7 @@ static int parse_options(char *options, struct super_block *sb,
+ 			       "not supported\n");
+ 			break;
+ #endif
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 		case Opt_acl:
+ 			set_opt(sbi->s_mount_opt, POSIX_ACL);
+ 			break;
+@@ -1987,11 +1987,11 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
+ 		set_opt(sbi->s_mount_opt, GRPID);
+ 	if (def_mount_opts & EXT4_DEFM_UID16)
+ 		set_opt(sbi->s_mount_opt, NO_UID32);
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	if (def_mount_opts & EXT4_DEFM_XATTR_USER)
+ 		set_opt(sbi->s_mount_opt, XATTR_USER);
+ #endif
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	if (def_mount_opts & EXT4_DEFM_ACL)
+ 		set_opt(sbi->s_mount_opt, POSIX_ACL);
+ #endif
+@@ -2050,16 +2050,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
+ 		       "running e2fsck is recommended\n");
+ 
+ 	/*
+-	 * Since ext4 is still considered development code, we require
+-	 * that the TEST_FILESYS flag in s->flags be set.
+-	 */
+-	if (!(le32_to_cpu(es->s_flags) & EXT2_FLAGS_TEST_FILESYS)) {
+-		printk(KERN_WARNING "EXT4-fs: %s: not marked "
+-		       "OK to use with test code.\n", sb->s_id);
+-		goto failed_mount;
+-	}
+-
+-	/*
+ 	 * Check feature flags regardless of the revision level, since we
+ 	 * previously didn't change the revision level when setting the flags,
+ 	 * so there is a chance incompat flags are set on a rev 0 filesystem.
+@@ -3580,13 +3570,34 @@ const struct file_operations ext4_ui_proc_fops = {
+ 	return get_sb_bdev(fs_type, flags, dev_name, data, ext4_fill_super, mnt);
+ }
+ 
++static struct file_system_type ext4_fs_type = {
++	.owner		= THIS_MODULE,
++	.name		= "ext4",
++	.get_sb		= ext4_get_sb,
++	.kill_sb	= kill_block_super,
++	.fs_flags	= FS_REQUIRES_DEV,
++};
++
++#ifdef CONFIG_EXT4DEV_COMPAT
++static int ext4dev_get_sb(struct file_system_type *fs_type,
++	int flags, const char *dev_name, void *data, struct vfsmount *mnt)
++{
++	printk(KERN_WARNING "EXT4-fs: Update your userspace programs "
++	       "to mount using ext4\n");
++	printk(KERN_WARNING "EXT4-fs: ext4dev backwards compatibility "
++	       "will go away by 2.6.31\n");
++	return get_sb_bdev(fs_type, flags, dev_name, data, ext4_fill_super, mnt);
++}
++
+ static struct file_system_type ext4dev_fs_type = {
+ 	.owner		= THIS_MODULE,
+ 	.name		= "ext4dev",
+-	.get_sb		= ext4_get_sb,
++	.get_sb		= ext4dev_get_sb,
+ 	.kill_sb	= kill_block_super,
+ 	.fs_flags	= FS_REQUIRES_DEV,
+ };
++MODULE_ALIAS("ext4dev");
++#endif
+ 
+ static int __init init_ext4_fs(void)
+ {
+@@ -3603,9 +3614,16 @@ static int __init init_ext4_fs(void)
+ 	err = init_inodecache();
+ 	if (err)
+ 		goto out1;
+-	err = register_filesystem(&ext4dev_fs_type);
++	err = register_filesystem(&ext4_fs_type);
+ 	if (err)
+ 		goto out;
++#ifdef CONFIG_EXT4DEV_COMPAT
++	err = register_filesystem(&ext4dev_fs_type);
++	if (err) {
++		unregister_filesystem(&ext4_fs_type);
++		goto out;
++	}
++#endif
+ 	return 0;
+ out:
+ 	destroy_inodecache();
+@@ -3618,7 +3636,10 @@ out2:
+ 
+ static void __exit exit_ext4_fs(void)
+ {
++	unregister_filesystem(&ext4_fs_type);
++#ifdef CONFIG_EXT4DEV_COMPAT
+ 	unregister_filesystem(&ext4dev_fs_type);
++#endif
+ 	destroy_inodecache();
+ 	exit_ext4_xattr();
+ 	exit_ext4_mballoc();
+diff --git a/fs/ext4/symlink.c b/fs/ext4/symlink.c
+index 0013d52..00740cb 100644
+--- a/fs/ext4/symlink.c
++++ b/fs/ext4/symlink.c
+@@ -34,7 +34,7 @@ const struct inode_operations ext4_symlink_inode_operations = {
+ 	.readlink	= generic_readlink,
+ 	.follow_link	= page_follow_link_light,
+ 	.put_link	= page_put_link,
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	.setxattr	= generic_setxattr,
+ 	.getxattr	= generic_getxattr,
+ 	.listxattr	= ext4_listxattr,
+@@ -45,7 +45,7 @@ const struct inode_operations ext4_symlink_inode_operations = {
+ const struct inode_operations ext4_fast_symlink_inode_operations = {
+ 	.readlink	= generic_readlink,
+ 	.follow_link	= ext4_follow_link,
+-#ifdef CONFIG_EXT4DEV_FS_XATTR
++#ifdef CONFIG_EXT4_FS_XATTR
+ 	.setxattr	= generic_setxattr,
+ 	.getxattr	= generic_getxattr,
+ 	.listxattr	= ext4_listxattr,
+diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
+index 362b0ed..80626d5 100644
+--- a/fs/ext4/xattr.c
++++ b/fs/ext4/xattr.c
+@@ -99,12 +99,12 @@ static struct mb_cache *ext4_xattr_cache;
+ 
+ static struct xattr_handler *ext4_xattr_handler_map[] = {
+ 	[EXT4_XATTR_INDEX_USER]		     = &ext4_xattr_user_handler,
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	[EXT4_XATTR_INDEX_POSIX_ACL_ACCESS]  = &ext4_xattr_acl_access_handler,
+ 	[EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT] = &ext4_xattr_acl_default_handler,
+ #endif
+ 	[EXT4_XATTR_INDEX_TRUSTED]	     = &ext4_xattr_trusted_handler,
+-#ifdef CONFIG_EXT4DEV_FS_SECURITY
++#ifdef CONFIG_EXT4_FS_SECURITY
+ 	[EXT4_XATTR_INDEX_SECURITY]	     = &ext4_xattr_security_handler,
+ #endif
+ };
+@@ -112,11 +112,11 @@ static struct xattr_handler *ext4_xattr_handler_map[] = {
+ struct xattr_handler *ext4_xattr_handlers[] = {
+ 	&ext4_xattr_user_handler,
+ 	&ext4_xattr_trusted_handler,
+-#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
++#ifdef CONFIG_EXT4_FS_POSIX_ACL
+ 	&ext4_xattr_acl_access_handler,
+ 	&ext4_xattr_acl_default_handler,
+ #endif
+-#ifdef CONFIG_EXT4DEV_FS_SECURITY
++#ifdef CONFIG_EXT4_FS_SECURITY
+ 	&ext4_xattr_security_handler,
+ #endif
+ 	NULL
+diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h
+index 814ea58..8ede88b 100644
+--- a/fs/ext4/xattr.h
++++ b/fs/ext4/xattr.h
+@@ -63,7 +63,7 @@ struct ext4_xattr_entry {
+ 		EXT4_I(inode)->i_extra_isize))
+ #define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1))
+ 
+-# ifdef CONFIG_EXT4DEV_FS_XATTR
++# ifdef CONFIG_EXT4_FS_XATTR
+ 
+ extern struct xattr_handler ext4_xattr_user_handler;
+ extern struct xattr_handler ext4_xattr_trusted_handler;
+@@ -88,7 +88,7 @@ extern void exit_ext4_xattr(void);
+ 
+ extern struct xattr_handler *ext4_xattr_handlers[];
+ 
+-# else  /* CONFIG_EXT4DEV_FS_XATTR */
++# else  /* CONFIG_EXT4_FS_XATTR */
+ 
+ static inline int
+ ext4_xattr_get(struct inode *inode, int name_index, const char *name,
+@@ -141,9 +141,9 @@ ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
+ 
+ #define ext4_xattr_handlers	NULL
+ 
+-# endif  /* CONFIG_EXT4DEV_FS_XATTR */
++# endif  /* CONFIG_EXT4_FS_XATTR */
+ 
+-#ifdef CONFIG_EXT4DEV_FS_SECURITY
++#ifdef CONFIG_EXT4_FS_SECURITY
+ extern int ext4_init_security(handle_t *handle, struct inode *inode,
+ 				struct inode *dir);
+ #else

Added: linux-2.6.27.9-ext4-cap-check-delay.patch
===================================================================
--- linux-2.6.27.9-ext4-cap-check-delay.patch	                        (rev 0)
+++ linux-2.6.27.9-ext4-cap-check-delay.patch	2009-08-26 17:36:47 UTC (rev 50440)
@@ -0,0 +1,34 @@
+Safer version of upstream commit a996031c87e093017c0763326a08896a3a4817f4
+
+Delay capable() checks to avoid (most) AVC denials when checking free blocks
+(Bug 478299 -  AVC denials on kernel 2.6.27.9-159.fc10.x86_64)
+
+Signed-off-by: Eric Sandeen <sandeen at redhat.com>
+---
+
+Index: linux-2.6.27.noarch/fs/ext4/balloc.c
+===================================================================
+--- linux-2.6.27.noarch.orig/fs/ext4/balloc.c	2009-01-06 14:49:05.625574969 -0600
++++ linux-2.6.27.noarch/fs/ext4/balloc.c	2009-01-06 14:49:19.181637281 -0600
+@@ -1612,15 +1612,15 @@ out:
+ ext4_fsblk_t ext4_has_free_blocks(struct ext4_sb_info *sbi,
+ 						ext4_fsblk_t nblocks)
+ {
+-	ext4_fsblk_t free_blocks;
+-	ext4_fsblk_t root_blocks = 0;
++	ext4_fsblk_t free_blocks, root_blocks;
+ 
+ 	free_blocks = percpu_counter_read_positive(&sbi->s_freeblocks_counter);
++	root_blocks = ext4_r_blocks_count(sbi->s_es);
+ 
+-	if (!capable(CAP_SYS_RESOURCE) &&
+-		sbi->s_resuid != current->fsuid &&
+-		(sbi->s_resgid == 0 || !in_group_p(sbi->s_resgid)))
+-		root_blocks = ext4_r_blocks_count(sbi->s_es);
++	if (sbi->s_resuid == current->fsuid ||
++	    ((sbi->s_resgid != 0) && in_group_p(sbi->s_resgid)) ||
++	    capable(CAP_SYS_RESOURCE))
++		root_blocks = 0;
+ #ifdef CONFIG_SMP
+ 	if (free_blocks - root_blocks < FBC_BATCH)
+ 		free_blocks =




More information about the arch-commits mailing list