mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
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@mit.edu>
This commit is contained in:
parent
39d80c33a0
commit
03010a3350
13 changed files with 123 additions and 88 deletions
|
@ -32,9 +32,9 @@ Mailing list: linux-ext4@vger.kernel.org
|
||||||
you will need to merge your changes with the version from e2fsprogs
|
you will need to merge your changes with the version from e2fsprogs
|
||||||
1.41.x.
|
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
|
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
|
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
|
# 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
|
filesystem back to ext3; so please do not do try this on production
|
||||||
filesystems.)
|
filesystems.)
|
||||||
|
|
||||||
- Mounting:
|
- Mounting:
|
||||||
|
|
||||||
# mount -t ext4dev /dev/hda1 /wherever
|
# mount -t ext4 /dev/hda1 /wherever
|
||||||
|
|
||||||
- When comparing performance with other filesystems, remember that
|
- When comparing performance with other filesystems, remember that
|
||||||
ext3/4 by default offers higher data integrity guarantees than most.
|
ext3/4 by default offers higher data integrity guarantees than most.
|
||||||
|
|
86
fs/Kconfig
86
fs/Kconfig
|
@ -136,37 +136,51 @@ config EXT3_FS_SECURITY
|
||||||
If you are not using a security module that requires using
|
If you are not using a security module that requires using
|
||||||
extended attributes for file security labels, say N.
|
extended attributes for file security labels, say N.
|
||||||
|
|
||||||
config EXT4DEV_FS
|
config EXT4_FS
|
||||||
tristate "Ext4dev/ext4 extended fs support development (EXPERIMENTAL)"
|
tristate "The Extended 4 (ext4) filesystem"
|
||||||
depends on EXPERIMENTAL
|
|
||||||
select JBD2
|
select JBD2
|
||||||
select CRC16
|
select CRC16
|
||||||
help
|
help
|
||||||
Ext4dev is a predecessor filesystem of the next generation
|
This is the next generation of the ext3 filesystem.
|
||||||
extended fs ext4, based on ext3 filesystem code. It will be
|
|
||||||
renamed ext4 fs later, once ext4dev is mature and stabilized.
|
|
||||||
|
|
||||||
Unlike the change from ext2 filesystem to 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:
|
the on-disk format of ext4 is not forwards compatible with
|
||||||
it is based on extent maps and it supports 48-bit physical block
|
ext3; it is based on extent maps and it supports 48-bit
|
||||||
numbers. These combined on-disk format changes will allow
|
physical block numbers. The ext4 filesystem also supports delayed
|
||||||
ext4dev/ext4 to handle more than 16 TB filesystem volumes --
|
allocation, persistent preallocation, high resolution time stamps,
|
||||||
a hard limit that ext3 cannot overcome without changing the
|
and a number of other features to improve performance and speed
|
||||||
on-disk format.
|
up fsck time. For more information, please see the web pages at
|
||||||
|
http://ext4.wiki.kernel.org.
|
||||||
|
|
||||||
Other than extent maps and 48-bit block numbers, ext4dev also is
|
The ext4 filesystem will support mounting an ext3
|
||||||
likely to have other new features such as persistent preallocation,
|
filesystem; while there will be some performance gains from
|
||||||
high resolution time stamps, and larger file support etc. These
|
the delayed allocation and inode table readahead, the best
|
||||||
features will be added to ext4dev gradually.
|
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
|
To compile this file system support as a module, choose M here. The
|
||||||
module will be called ext4dev.
|
module will be called ext4dev.
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config EXT4DEV_FS_XATTR
|
config EXT4DEV_COMPAT
|
||||||
bool "Ext4dev extended attributes"
|
bool "Enable ext4dev compatibility"
|
||||||
depends on EXT4DEV_FS
|
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
|
default y
|
||||||
help
|
help
|
||||||
Extended attributes are name:value pairs associated with inodes by
|
Extended attributes are name:value pairs associated with inodes by
|
||||||
|
@ -175,11 +189,11 @@ config EXT4DEV_FS_XATTR
|
||||||
|
|
||||||
If unsure, say N.
|
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
|
config EXT4_FS_POSIX_ACL
|
||||||
bool "Ext4dev POSIX Access Control Lists"
|
bool "Ext4 POSIX Access Control Lists"
|
||||||
depends on EXT4DEV_FS_XATTR
|
depends on EXT4_FS_XATTR
|
||||||
select FS_POSIX_ACL
|
select FS_POSIX_ACL
|
||||||
help
|
help
|
||||||
POSIX Access Control Lists (ACLs) support permissions for users and
|
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
|
If you don't know what Access Control Lists are, say N
|
||||||
|
|
||||||
config EXT4DEV_FS_SECURITY
|
config EXT4_FS_SECURITY
|
||||||
bool "Ext4dev Security Labels"
|
bool "Ext4 Security Labels"
|
||||||
depends on EXT4DEV_FS_XATTR
|
depends on EXT4_FS_XATTR
|
||||||
help
|
help
|
||||||
Security labels support alternative access control models
|
Security labels support alternative access control models
|
||||||
implemented by security modules like SELinux. This option
|
implemented by security modules like SELinux. This option
|
||||||
enables an extended attribute handler for file security
|
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
|
If you are not using a security module that requires using
|
||||||
extended attributes for file security labels, say N.
|
extended attributes for file security labels, say N.
|
||||||
|
@ -240,22 +254,22 @@ config JBD2
|
||||||
help
|
help
|
||||||
This is a generic journaling layer for block devices that support
|
This is a generic journaling layer for block devices that support
|
||||||
both 32-bit and 64-bit block numbers. It is currently used by
|
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
|
journal support to other file systems or block devices such
|
||||||
as RAID or LVM.
|
as RAID or LVM.
|
||||||
|
|
||||||
If you are using ext4dev/ext4, you need to say Y here. If you are not
|
If you are using ext4, you need to say Y here. If you are not
|
||||||
using ext4dev/ext4 then you will probably want to say N.
|
using ext4 then you will probably want to say N.
|
||||||
|
|
||||||
To compile this device as a module, choose M here. The module will be
|
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.
|
you cannot compile this code as a module.
|
||||||
|
|
||||||
config JBD2_DEBUG
|
config JBD2_DEBUG
|
||||||
bool "JBD2 (ext4dev/ext4) debugging support"
|
bool "JBD2 (ext4) debugging support"
|
||||||
depends on JBD2 && DEBUG_FS
|
depends on JBD2 && DEBUG_FS
|
||||||
help
|
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
|
potentially any other filesystem/device using JBD2), this option
|
||||||
allows you to enable debugging output while the system is running,
|
allows you to enable debugging output while the system is running,
|
||||||
in order to help track down any problems you are having.
|
in order to help track down any problems you are having.
|
||||||
|
@ -270,9 +284,9 @@ config JBD2_DEBUG
|
||||||
config FS_MBCACHE
|
config FS_MBCACHE
|
||||||
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
|
# Meta block cache for Extended Attributes (ext2/ext3/ext4)
|
||||||
tristate
|
tristate
|
||||||
depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4DEV_FS_XATTR
|
depends on EXT2_FS_XATTR || EXT3_FS_XATTR || EXT4_FS_XATTR
|
||||||
default y if EXT2_FS=y || EXT3_FS=y || EXT4DEV_FS=y
|
default y if EXT2_FS=y || EXT3_FS=y || EXT4_FS=y
|
||||||
default m if EXT2_FS=m || EXT3_FS=m || EXT4DEV_FS=m
|
default m if EXT2_FS=m || EXT3_FS=m || EXT4_FS=m
|
||||||
|
|
||||||
config REISERFS_FS
|
config REISERFS_FS
|
||||||
tristate "Reiserfs support"
|
tristate "Reiserfs support"
|
||||||
|
|
|
@ -69,7 +69,7 @@ obj-$(CONFIG_DLM) += dlm/
|
||||||
# Do not add any filesystems before this line
|
# Do not add any filesystems before this line
|
||||||
obj-$(CONFIG_REISERFS_FS) += reiserfs/
|
obj-$(CONFIG_REISERFS_FS) += reiserfs/
|
||||||
obj-$(CONFIG_EXT3_FS) += ext3/ # Before ext2 so root fs can be ext3
|
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_JBD) += jbd/
|
||||||
obj-$(CONFIG_JBD2) += jbd2/
|
obj-$(CONFIG_JBD2) += jbd2/
|
||||||
obj-$(CONFIG_EXT2_FS) += ext2/
|
obj-$(CONFIG_EXT2_FS) += ext2/
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
# Makefile for the linux ext4-filesystem routines.
|
# 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 \
|
ioctl.o namei.o super.o symlink.o hash.o resize.o extents.o \
|
||||||
ext4_jbd2.o migrate.o mballoc.o
|
ext4_jbd2.o migrate.o mballoc.o
|
||||||
|
|
||||||
ext4dev-$(CONFIG_EXT4DEV_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o
|
ext4-$(CONFIG_EXT4_FS_XATTR) += xattr.o xattr_user.o xattr_trusted.o
|
||||||
ext4dev-$(CONFIG_EXT4DEV_FS_POSIX_ACL) += acl.o
|
ext4-$(CONFIG_EXT4_FS_POSIX_ACL) += acl.o
|
||||||
ext4dev-$(CONFIG_EXT4DEV_FS_SECURITY) += xattr_security.o
|
ext4-$(CONFIG_EXT4_FS_SECURITY) += xattr_security.o
|
||||||
|
|
|
@ -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
|
/* Value for inode->u.ext4_i.i_acl and inode->u.ext4_i.i_default_acl
|
||||||
if the ACL has not been cached */
|
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_acl_chmod(struct inode *);
|
||||||
extern int ext4_init_acl(handle_t *, struct inode *, 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>
|
#include <linux/sched.h>
|
||||||
#define ext4_permission NULL
|
#define ext4_permission NULL
|
||||||
|
|
||||||
|
@ -77,5 +77,5 @@ ext4_init_acl(handle_t *handle, struct inode *inode, struct inode *dir)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_EXT4DEV_FS_POSIX_ACL */
|
#endif /* CONFIG_EXT4_FS_POSIX_ACL */
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ struct ext4_inode_info {
|
||||||
__u32 i_state; /* Dynamic state flags for ext4 */
|
__u32 i_state; /* Dynamic state flags for ext4 */
|
||||||
|
|
||||||
ext4_lblk_t i_dir_start_lookup;
|
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
|
* Extended attributes can be read independently of the main file
|
||||||
* data. Taking i_mutex even when reading would cause contention
|
* data. Taking i_mutex even when reading would cause contention
|
||||||
|
@ -76,7 +76,7 @@ struct ext4_inode_info {
|
||||||
*/
|
*/
|
||||||
struct rw_semaphore xattr_sem;
|
struct rw_semaphore xattr_sem;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
struct posix_acl *i_acl;
|
struct posix_acl *i_acl;
|
||||||
struct posix_acl *i_default_acl;
|
struct posix_acl *i_default_acl;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -165,7 +165,7 @@ const struct inode_operations ext4_file_inode_operations = {
|
||||||
.truncate = ext4_truncate,
|
.truncate = ext4_truncate,
|
||||||
.setattr = ext4_setattr,
|
.setattr = ext4_setattr,
|
||||||
.getattr = ext4_getattr,
|
.getattr = ext4_getattr,
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
.setxattr = generic_setxattr,
|
.setxattr = generic_setxattr,
|
||||||
.getxattr = generic_getxattr,
|
.getxattr = generic_getxattr,
|
||||||
.listxattr = ext4_listxattr,
|
.listxattr = ext4_listxattr,
|
||||||
|
|
|
@ -4041,7 +4041,7 @@ struct inode *ext4_iget(struct super_block *sb, unsigned long ino)
|
||||||
return inode;
|
return inode;
|
||||||
|
|
||||||
ei = EXT4_I(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_acl = EXT4_ACL_NOT_CACHED;
|
||||||
ei->i_default_acl = EXT4_ACL_NOT_CACHED;
|
ei->i_default_acl = EXT4_ACL_NOT_CACHED;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1773,7 +1773,7 @@ retry:
|
||||||
err = PTR_ERR(inode);
|
err = PTR_ERR(inode);
|
||||||
if (!IS_ERR(inode)) {
|
if (!IS_ERR(inode)) {
|
||||||
init_special_inode(inode, inode->i_mode, rdev);
|
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;
|
inode->i_op = &ext4_special_inode_operations;
|
||||||
#endif
|
#endif
|
||||||
err = ext4_add_nondir(handle, dentry, inode);
|
err = ext4_add_nondir(handle, dentry, inode);
|
||||||
|
@ -2456,7 +2456,7 @@ const struct inode_operations ext4_dir_inode_operations = {
|
||||||
.mknod = ext4_mknod,
|
.mknod = ext4_mknod,
|
||||||
.rename = ext4_rename,
|
.rename = ext4_rename,
|
||||||
.setattr = ext4_setattr,
|
.setattr = ext4_setattr,
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
.setxattr = generic_setxattr,
|
.setxattr = generic_setxattr,
|
||||||
.getxattr = generic_getxattr,
|
.getxattr = generic_getxattr,
|
||||||
.listxattr = ext4_listxattr,
|
.listxattr = ext4_listxattr,
|
||||||
|
@ -2467,7 +2467,7 @@ const struct inode_operations ext4_dir_inode_operations = {
|
||||||
|
|
||||||
const struct inode_operations ext4_special_inode_operations = {
|
const struct inode_operations ext4_special_inode_operations = {
|
||||||
.setattr = ext4_setattr,
|
.setattr = ext4_setattr,
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
.setxattr = generic_setxattr,
|
.setxattr = generic_setxattr,
|
||||||
.getxattr = generic_getxattr,
|
.getxattr = generic_getxattr,
|
||||||
.listxattr = ext4_listxattr,
|
.listxattr = ext4_listxattr,
|
||||||
|
|
|
@ -569,7 +569,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
|
||||||
ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);
|
ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);
|
||||||
if (!ei)
|
if (!ei)
|
||||||
return NULL;
|
return NULL;
|
||||||
#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
ei->i_acl = EXT4_ACL_NOT_CACHED;
|
ei->i_acl = EXT4_ACL_NOT_CACHED;
|
||||||
ei->i_default_acl = EXT4_ACL_NOT_CACHED;
|
ei->i_default_acl = EXT4_ACL_NOT_CACHED;
|
||||||
#endif
|
#endif
|
||||||
|
@ -605,7 +605,7 @@ static void init_once(void *foo)
|
||||||
struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
|
struct ext4_inode_info *ei = (struct ext4_inode_info *) foo;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&ei->i_orphan);
|
INIT_LIST_HEAD(&ei->i_orphan);
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
init_rwsem(&ei->xattr_sem);
|
init_rwsem(&ei->xattr_sem);
|
||||||
#endif
|
#endif
|
||||||
init_rwsem(&ei->i_data_sem);
|
init_rwsem(&ei->i_data_sem);
|
||||||
|
@ -631,7 +631,7 @@ static void destroy_inodecache(void)
|
||||||
|
|
||||||
static void ext4_clear_inode(struct inode *inode)
|
static void ext4_clear_inode(struct inode *inode)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
if (EXT4_I(inode)->i_acl &&
|
if (EXT4_I(inode)->i_acl &&
|
||||||
EXT4_I(inode)->i_acl != EXT4_ACL_NOT_CACHED) {
|
EXT4_I(inode)->i_acl != EXT4_ACL_NOT_CACHED) {
|
||||||
posix_acl_release(EXT4_I(inode)->i_acl);
|
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");
|
seq_puts(seq, ",debug");
|
||||||
if (test_opt(sb, OLDALLOC))
|
if (test_opt(sb, OLDALLOC))
|
||||||
seq_puts(seq, ",oldalloc");
|
seq_puts(seq, ",oldalloc");
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
if (test_opt(sb, XATTR_USER) &&
|
if (test_opt(sb, XATTR_USER) &&
|
||||||
!(def_mount_opts & EXT4_DEFM_XATTR_USER))
|
!(def_mount_opts & EXT4_DEFM_XATTR_USER))
|
||||||
seq_puts(seq, ",user_xattr");
|
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");
|
seq_puts(seq, ",nouser_xattr");
|
||||||
}
|
}
|
||||||
#endif
|
#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))
|
if (test_opt(sb, POSIX_ACL) && !(def_mount_opts & EXT4_DEFM_ACL))
|
||||||
seq_puts(seq, ",acl");
|
seq_puts(seq, ",acl");
|
||||||
if (!test_opt(sb, POSIX_ACL) && (def_mount_opts & EXT4_DEFM_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:
|
case Opt_orlov:
|
||||||
clear_opt(sbi->s_mount_opt, OLDALLOC);
|
clear_opt(sbi->s_mount_opt, OLDALLOC);
|
||||||
break;
|
break;
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
case Opt_user_xattr:
|
case Opt_user_xattr:
|
||||||
set_opt(sbi->s_mount_opt, XATTR_USER);
|
set_opt(sbi->s_mount_opt, XATTR_USER);
|
||||||
break;
|
break;
|
||||||
|
@ -1092,7 +1092,7 @@ static int parse_options(char *options, struct super_block *sb,
|
||||||
"not supported\n");
|
"not supported\n");
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
case Opt_acl:
|
case Opt_acl:
|
||||||
set_opt(sbi->s_mount_opt, POSIX_ACL);
|
set_opt(sbi->s_mount_opt, POSIX_ACL);
|
||||||
break;
|
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);
|
set_opt(sbi->s_mount_opt, GRPID);
|
||||||
if (def_mount_opts & EXT4_DEFM_UID16)
|
if (def_mount_opts & EXT4_DEFM_UID16)
|
||||||
set_opt(sbi->s_mount_opt, NO_UID32);
|
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)
|
if (def_mount_opts & EXT4_DEFM_XATTR_USER)
|
||||||
set_opt(sbi->s_mount_opt, XATTR_USER);
|
set_opt(sbi->s_mount_opt, XATTR_USER);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_EXT4DEV_FS_POSIX_ACL
|
#ifdef CONFIG_EXT4_FS_POSIX_ACL
|
||||||
if (def_mount_opts & EXT4_DEFM_ACL)
|
if (def_mount_opts & EXT4_DEFM_ACL)
|
||||||
set_opt(sbi->s_mount_opt, POSIX_ACL);
|
set_opt(sbi->s_mount_opt, POSIX_ACL);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2049,16 +2049,6 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
"EXT4-fs warning: feature flags set on rev 0 fs, "
|
"EXT4-fs warning: feature flags set on rev 0 fs, "
|
||||||
"running e2fsck is recommended\n");
|
"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
|
* Check feature flags regardless of the revision level, since we
|
||||||
* previously didn't change the revision level when setting the flags,
|
* previously didn't change the revision level when setting the flags,
|
||||||
|
@ -3580,14 +3570,35 @@ const struct file_operations ext4_ui_proc_fops = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct file_system_type ext4dev_fs_type = {
|
static struct file_system_type ext4_fs_type = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = "ext4dev",
|
.name = "ext4",
|
||||||
.get_sb = ext4_get_sb,
|
.get_sb = ext4_get_sb,
|
||||||
.kill_sb = kill_block_super,
|
.kill_sb = kill_block_super,
|
||||||
.fs_flags = FS_REQUIRES_DEV,
|
.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 = ext4dev_get_sb,
|
||||||
|
.kill_sb = kill_block_super,
|
||||||
|
.fs_flags = FS_REQUIRES_DEV,
|
||||||
|
};
|
||||||
|
MODULE_ALIAS("ext4dev");
|
||||||
|
#endif
|
||||||
|
|
||||||
static int __init init_ext4_fs(void)
|
static int __init init_ext4_fs(void)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
@ -3603,9 +3614,16 @@ static int __init init_ext4_fs(void)
|
||||||
err = init_inodecache();
|
err = init_inodecache();
|
||||||
if (err)
|
if (err)
|
||||||
goto out1;
|
goto out1;
|
||||||
err = register_filesystem(&ext4dev_fs_type);
|
err = register_filesystem(&ext4_fs_type);
|
||||||
if (err)
|
if (err)
|
||||||
goto out;
|
goto out;
|
||||||
|
#ifdef CONFIG_EXT4DEV_COMPAT
|
||||||
|
err = register_filesystem(&ext4dev_fs_type);
|
||||||
|
if (err) {
|
||||||
|
unregister_filesystem(&ext4_fs_type);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
out:
|
out:
|
||||||
destroy_inodecache();
|
destroy_inodecache();
|
||||||
|
@ -3618,7 +3636,10 @@ out2:
|
||||||
|
|
||||||
static void __exit exit_ext4_fs(void)
|
static void __exit exit_ext4_fs(void)
|
||||||
{
|
{
|
||||||
|
unregister_filesystem(&ext4_fs_type);
|
||||||
|
#ifdef CONFIG_EXT4DEV_COMPAT
|
||||||
unregister_filesystem(&ext4dev_fs_type);
|
unregister_filesystem(&ext4dev_fs_type);
|
||||||
|
#endif
|
||||||
destroy_inodecache();
|
destroy_inodecache();
|
||||||
exit_ext4_xattr();
|
exit_ext4_xattr();
|
||||||
exit_ext4_mballoc();
|
exit_ext4_mballoc();
|
||||||
|
|
|
@ -34,7 +34,7 @@ const struct inode_operations ext4_symlink_inode_operations = {
|
||||||
.readlink = generic_readlink,
|
.readlink = generic_readlink,
|
||||||
.follow_link = page_follow_link_light,
|
.follow_link = page_follow_link_light,
|
||||||
.put_link = page_put_link,
|
.put_link = page_put_link,
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
.setxattr = generic_setxattr,
|
.setxattr = generic_setxattr,
|
||||||
.getxattr = generic_getxattr,
|
.getxattr = generic_getxattr,
|
||||||
.listxattr = ext4_listxattr,
|
.listxattr = ext4_listxattr,
|
||||||
|
@ -45,7 +45,7 @@ const struct inode_operations ext4_symlink_inode_operations = {
|
||||||
const struct inode_operations ext4_fast_symlink_inode_operations = {
|
const struct inode_operations ext4_fast_symlink_inode_operations = {
|
||||||
.readlink = generic_readlink,
|
.readlink = generic_readlink,
|
||||||
.follow_link = ext4_follow_link,
|
.follow_link = ext4_follow_link,
|
||||||
#ifdef CONFIG_EXT4DEV_FS_XATTR
|
#ifdef CONFIG_EXT4_FS_XATTR
|
||||||
.setxattr = generic_setxattr,
|
.setxattr = generic_setxattr,
|
||||||
.getxattr = generic_getxattr,
|
.getxattr = generic_getxattr,
|
||||||
.listxattr = ext4_listxattr,
|
.listxattr = ext4_listxattr,
|
||||||
|
|
|
@ -99,12 +99,12 @@ static struct mb_cache *ext4_xattr_cache;
|
||||||
|
|
||||||
static struct xattr_handler *ext4_xattr_handler_map[] = {
|
static struct xattr_handler *ext4_xattr_handler_map[] = {
|
||||||
[EXT4_XATTR_INDEX_USER] = &ext4_xattr_user_handler,
|
[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_ACCESS] = &ext4_xattr_acl_access_handler,
|
||||||
[EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT] = &ext4_xattr_acl_default_handler,
|
[EXT4_XATTR_INDEX_POSIX_ACL_DEFAULT] = &ext4_xattr_acl_default_handler,
|
||||||
#endif
|
#endif
|
||||||
[EXT4_XATTR_INDEX_TRUSTED] = &ext4_xattr_trusted_handler,
|
[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,
|
[EXT4_XATTR_INDEX_SECURITY] = &ext4_xattr_security_handler,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -112,11 +112,11 @@ static struct xattr_handler *ext4_xattr_handler_map[] = {
|
||||||
struct xattr_handler *ext4_xattr_handlers[] = {
|
struct xattr_handler *ext4_xattr_handlers[] = {
|
||||||
&ext4_xattr_user_handler,
|
&ext4_xattr_user_handler,
|
||||||
&ext4_xattr_trusted_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_access_handler,
|
||||||
&ext4_xattr_acl_default_handler,
|
&ext4_xattr_acl_default_handler,
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_EXT4DEV_FS_SECURITY
|
#ifdef CONFIG_EXT4_FS_SECURITY
|
||||||
&ext4_xattr_security_handler,
|
&ext4_xattr_security_handler,
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
|
|
|
@ -63,7 +63,7 @@ struct ext4_xattr_entry {
|
||||||
EXT4_I(inode)->i_extra_isize))
|
EXT4_I(inode)->i_extra_isize))
|
||||||
#define IFIRST(hdr) ((struct ext4_xattr_entry *)((hdr)+1))
|
#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_user_handler;
|
||||||
extern struct xattr_handler ext4_xattr_trusted_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[];
|
extern struct xattr_handler *ext4_xattr_handlers[];
|
||||||
|
|
||||||
# else /* CONFIG_EXT4DEV_FS_XATTR */
|
# else /* CONFIG_EXT4_FS_XATTR */
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
ext4_xattr_get(struct inode *inode, int name_index, const char *name,
|
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
|
#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,
|
extern int ext4_init_security(handle_t *handle, struct inode *inode,
|
||||||
struct inode *dir);
|
struct inode *dir);
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in a new issue