From: S.Çağlar Onur Date: Mon, 15 Feb 2010 20:53:28 +0000 (+0000) Subject: support EXT4 so we can boot f12 X-Git-Tag: linux-2.6-27-6~4 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=b12142d644408a39c851d0721e422cd6161f33ff;p=linux-2.6.git support EXT4 so we can boot f12 --- diff --git a/kernel-2.6.spec b/kernel-2.6.spec index 07fb92f8e..80590e9f6 100644 --- a/kernel-2.6.spec +++ b/kernel-2.6.spec @@ -176,6 +176,10 @@ Patch680: linux-2.6-680-htb-hysteresis-tso.patch Patch700: linux-2.6-700-egre.patch Patch710: linux-2.6-710-avoid-64bits-addr-pcmcia.patch +# Ext4 +Patch800: linux-2.6-800-rename-ext4dev-to-ext4.patch +Patch810: linux-2.6-810-ext4-cap-check-delay.patch + BuildRoot: %{_tmppath}/kernel-%{KVERREL}-root %description @@ -369,6 +373,8 @@ KERNEL_PREVIOUS=vanilla %ApplyPatch 700 %ApplyPatch 710 +%ApplyPatch 800 +%ApplyPatch 810 # NetNS conflict-resolving patch for VINI. Will work with patch vini_pl_patch-1 but may # break with later patches. diff --git a/linux-2.6-800-rename-ext4dev-to-ext4.patch b/linux-2.6-800-rename-ext4dev-to-ext4.patch new file mode 100644 index 000000000..68bbfd954 --- /dev/null +++ b/linux-2.6-800-rename-ext4dev-to-ext4.patch @@ -0,0 +1,595 @@ +From: Theodore Ts'o +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" +--- + +Index: linux-2.6.27.y/Documentation/filesystems/ext4.txt +=================================================================== +--- linux-2.6.27.y.orig/Documentation/filesystems/ext4.txt ++++ linux-2.6.27.y/Documentation/filesystems/ext4.txt +@@ -32,9 +32,9 @@ Mailing list: linux-ext4@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@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. +Index: linux-2.6.27.y/fs/Kconfig +=================================================================== +--- linux-2.6.27.y.orig/fs/Kconfig ++++ linux-2.6.27.y/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" +Index: linux-2.6.27.y/fs/Makefile +=================================================================== +--- linux-2.6.27.y.orig/fs/Makefile ++++ linux-2.6.27.y/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/ +Index: linux-2.6.27.y/fs/ext4/Makefile +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/Makefile ++++ linux-2.6.27.y/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 +Index: linux-2.6.27.y/fs/ext4/acl.h +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/acl.h ++++ linux-2.6.27.y/fs/ext4/acl.h +@@ -51,7 +51,7 @@ static inline int ext4_acl_count(size_t + } + } + +-#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 + 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 + #define ext4_permission NULL + +@@ -77,5 +77,5 @@ ext4_init_acl(handle_t *handle, struct i + { + return 0; + } +-#endif /* CONFIG_EXT4DEV_FS_POSIX_ACL */ ++#endif /* CONFIG_EXT4_FS_POSIX_ACL */ + +Index: linux-2.6.27.y/fs/ext4/ext4_i.h +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/ext4_i.h ++++ linux-2.6.27.y/fs/ext4/ext4_i.h +@@ -101,7 +101,7 @@ struct ext4_inode_info { + struct ext4_block_alloc_info *i_block_alloc_info; + + 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 +@@ -111,7 +111,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 +Index: linux-2.6.27.y/fs/ext4/file.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/file.c ++++ linux-2.6.27.y/fs/ext4/file.c +@@ -167,7 +167,7 @@ const struct inode_operations ext4_file_ + .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, +Index: linux-2.6.27.y/fs/ext4/inode.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/inode.c ++++ linux-2.6.27.y/fs/ext4/inode.c +@@ -4096,7 +4096,7 @@ struct inode *ext4_iget(struct super_blo + 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 +Index: linux-2.6.27.y/fs/ext4/namei.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/namei.c ++++ linux-2.6.27.y/fs/ext4/namei.c +@@ -1797,7 +1797,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); +@@ -2482,7 +2482,7 @@ const struct inode_operations ext4_dir_i + .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, +@@ -2494,7 +2494,7 @@ const struct inode_operations ext4_dir_i + + 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, +Index: linux-2.6.27.y/fs/ext4/super.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/super.c ++++ linux-2.6.27.y/fs/ext4/super.c +@@ -562,7 +562,7 @@ static struct inode *ext4_alloc_inode(st + 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 +@@ -599,7 +599,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); +@@ -626,7 +626,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); +@@ -718,7 +718,7 @@ static int ext4_show_options(struct seq_ + 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"); +@@ -727,7 +727,7 @@ static int ext4_show_options(struct seq_ + 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)) +@@ -1091,7 +1091,7 @@ static int parse_options(char *options, + 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; +@@ -1104,7 +1104,7 @@ static int parse_options(char *options, + printk("EXT4 (no)user_xattr options 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; +@@ -1992,11 +1992,11 @@ static int ext4_fill_super(struct super_ + 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 +@@ -2063,16 +2063,6 @@ static int ext4_fill_super(struct super_ + "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. +@@ -3567,13 +3557,34 @@ static int ext4_get_sb(struct file_syste + 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) + { +@@ -3589,9 +3600,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(); +@@ -3604,7 +3622,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(); +Index: linux-2.6.27.y/fs/ext4/symlink.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/symlink.c ++++ linux-2.6.27.y/fs/ext4/symlink.c +@@ -34,7 +34,7 @@ const struct inode_operations ext4_symli + .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, +@@ -46,7 +46,7 @@ const struct inode_operations ext4_symli + 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, +Index: linux-2.6.27.y/fs/ext4/xattr.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/xattr.c ++++ linux-2.6.27.y/fs/ext4/xattr.c +@@ -100,12 +100,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 + }; +@@ -113,11 +113,11 @@ static struct xattr_handler *ext4_xattr_ + 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 +Index: linux-2.6.27.y/fs/ext4/xattr.h +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/xattr.h ++++ linux-2.6.27.y/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 + + #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 diff --git a/linux-2.6-810-ext4-cap-check-delay.patch b/linux-2.6-810-ext4-cap-check-delay.patch new file mode 100644 index 000000000..978568593 --- /dev/null +++ b/linux-2.6-810-ext4-cap-check-delay.patch @@ -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 +--- + +Index: linux-2.6.27.y/fs/ext4/balloc.c +=================================================================== +--- linux-2.6.27.y.orig/fs/ext4/balloc.c ++++ linux-2.6.27.y/fs/ext4/balloc.c +@@ -1770,15 +1770,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 = diff --git a/planetlab-2.6.27-i686.config b/planetlab-2.6.27-i686.config index 8285e2f1b..2efc4efa7 100644 --- a/planetlab-2.6.27-i686.config +++ b/planetlab-2.6.27-i686.config @@ -1991,7 +1991,12 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -# CONFIG_EXT4DEV_FS is not set +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_JBD2=m CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=m diff --git a/planetlab-2.6.27-x86_64.config b/planetlab-2.6.27-x86_64.config index 2e3c7505c..6de534da1 100644 --- a/planetlab-2.6.27-x86_64.config +++ b/planetlab-2.6.27-x86_64.config @@ -1880,7 +1880,12 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -# CONFIG_EXT4DEV_FS is not set +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_JBD2=m CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=m diff --git a/wextoolbox-2.6.27-i686.config b/wextoolbox-2.6.27-i686.config index 342c712e6..7682bf480 100644 --- a/wextoolbox-2.6.27-i686.config +++ b/wextoolbox-2.6.27-i686.config @@ -2013,7 +2013,12 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -# CONFIG_EXT4DEV_FS is not set +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_JBD2=m CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=m diff --git a/wextoolbox-2.6.27-x86_64.config b/wextoolbox-2.6.27-x86_64.config index 0be5ca9a0..5b5de2529 100644 --- a/wextoolbox-2.6.27-x86_64.config +++ b/wextoolbox-2.6.27-x86_64.config @@ -1902,7 +1902,12 @@ CONFIG_EXT3_FS=m CONFIG_EXT3_FS_XATTR=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_EXT3_FS_SECURITY=y -# CONFIG_EXT4DEV_FS is not set +CONFIG_EXT4_FS=m +CONFIG_EXT4DEV_COMPAT=y +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_JBD2=m CONFIG_JBD=m # CONFIG_JBD_DEBUG is not set CONFIG_FS_MBCACHE=m