mirror of https://gitee.com/openkylin/linux.git
ocfs2: add mount option and Kconfig option for acl
This patch adds the Kconfig option "CONFIG_OCFS2_FS_POSIX_ACL" and mount options "acl" to enable acls in Ocfs2. Signed-off-by: Tiger Yang <tiger.yang@oracle.com> Signed-off-by: Mark Fasheh <mfasheh@suse.com>
This commit is contained in:
parent
89c38bd0ad
commit
a68979b857
|
@ -31,7 +31,6 @@ Features which OCFS2 does not support yet:
|
||||||
- quotas
|
- quotas
|
||||||
- Directory change notification (F_NOTIFY)
|
- Directory change notification (F_NOTIFY)
|
||||||
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
||||||
- POSIX ACLs
|
|
||||||
|
|
||||||
Mount options
|
Mount options
|
||||||
=============
|
=============
|
||||||
|
@ -79,3 +78,5 @@ inode64 Indicates that Ocfs2 is allowed to create inodes at
|
||||||
bits of significance.
|
bits of significance.
|
||||||
user_xattr (*) Enables Extended User Attributes.
|
user_xattr (*) Enables Extended User Attributes.
|
||||||
nouser_xattr Disables Extended User Attributes.
|
nouser_xattr Disables Extended User Attributes.
|
||||||
|
acl Enables POSIX Access Control Lists support.
|
||||||
|
noacl (*) Disables POSIX Access Control Lists support.
|
||||||
|
|
|
@ -268,6 +268,15 @@ config OCFS2_COMPAT_JBD
|
||||||
is backwards compatible with JBD. It is safe to say N here.
|
is backwards compatible with JBD. It is safe to say N here.
|
||||||
However, if you really want to use the original JBD, say Y here.
|
However, if you really want to use the original JBD, say Y here.
|
||||||
|
|
||||||
|
config OCFS2_FS_POSIX_ACL
|
||||||
|
bool "OCFS2 POSIX Access Control Lists"
|
||||||
|
depends on OCFS2_FS
|
||||||
|
select FS_POSIX_ACL
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Posix Access Control Lists (ACLs) support permissions for users and
|
||||||
|
groups beyond the owner/group/world scheme.
|
||||||
|
|
||||||
endif # BLOCK
|
endif # BLOCK
|
||||||
|
|
||||||
source "fs/notify/Kconfig"
|
source "fs/notify/Kconfig"
|
||||||
|
|
|
@ -158,6 +158,8 @@ enum {
|
||||||
Opt_user_xattr,
|
Opt_user_xattr,
|
||||||
Opt_nouser_xattr,
|
Opt_nouser_xattr,
|
||||||
Opt_inode64,
|
Opt_inode64,
|
||||||
|
Opt_acl,
|
||||||
|
Opt_noacl,
|
||||||
Opt_err,
|
Opt_err,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -180,6 +182,8 @@ static const match_table_t tokens = {
|
||||||
{Opt_user_xattr, "user_xattr"},
|
{Opt_user_xattr, "user_xattr"},
|
||||||
{Opt_nouser_xattr, "nouser_xattr"},
|
{Opt_nouser_xattr, "nouser_xattr"},
|
||||||
{Opt_inode64, "inode64"},
|
{Opt_inode64, "inode64"},
|
||||||
|
{Opt_acl, "acl"},
|
||||||
|
{Opt_noacl, "noacl"},
|
||||||
{Opt_err, NULL}
|
{Opt_err, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -466,6 +470,8 @@ static int ocfs2_remount(struct super_block *sb, int *flags, char *data)
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
/* Only save off the new mount options in case of a successful
|
/* Only save off the new mount options in case of a successful
|
||||||
* remount. */
|
* remount. */
|
||||||
|
if (!(osb->s_feature_incompat & OCFS2_FEATURE_INCOMPAT_XATTR))
|
||||||
|
parsed_options.mount_opt &= ~OCFS2_MOUNT_POSIX_ACL;
|
||||||
osb->s_mount_opt = parsed_options.mount_opt;
|
osb->s_mount_opt = parsed_options.mount_opt;
|
||||||
osb->s_atime_quantum = parsed_options.atime_quantum;
|
osb->s_atime_quantum = parsed_options.atime_quantum;
|
||||||
osb->preferred_slot = parsed_options.slot;
|
osb->preferred_slot = parsed_options.slot;
|
||||||
|
@ -651,6 +657,10 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
}
|
}
|
||||||
brelse(bh);
|
brelse(bh);
|
||||||
bh = NULL;
|
bh = NULL;
|
||||||
|
|
||||||
|
if (!(osb->s_feature_incompat & OCFS2_FEATURE_INCOMPAT_XATTR))
|
||||||
|
parsed_options.mount_opt &= ~OCFS2_MOUNT_POSIX_ACL;
|
||||||
|
|
||||||
osb->s_mount_opt = parsed_options.mount_opt;
|
osb->s_mount_opt = parsed_options.mount_opt;
|
||||||
osb->s_atime_quantum = parsed_options.atime_quantum;
|
osb->s_atime_quantum = parsed_options.atime_quantum;
|
||||||
osb->preferred_slot = parsed_options.slot;
|
osb->preferred_slot = parsed_options.slot;
|
||||||
|
@ -664,6 +674,9 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent)
|
||||||
|
|
||||||
sb->s_magic = OCFS2_SUPER_MAGIC;
|
sb->s_magic = OCFS2_SUPER_MAGIC;
|
||||||
|
|
||||||
|
sb->s_flags = (sb->s_flags & ~MS_POSIXACL) |
|
||||||
|
((osb->s_mount_opt & OCFS2_MOUNT_POSIX_ACL) ? MS_POSIXACL : 0);
|
||||||
|
|
||||||
/* Hard readonly mode only if: bdev_read_only, MS_RDONLY,
|
/* Hard readonly mode only if: bdev_read_only, MS_RDONLY,
|
||||||
* heartbeat=none */
|
* heartbeat=none */
|
||||||
if (bdev_read_only(sb->s_bdev)) {
|
if (bdev_read_only(sb->s_bdev)) {
|
||||||
|
@ -945,6 +958,19 @@ static int ocfs2_parse_options(struct super_block *sb,
|
||||||
case Opt_inode64:
|
case Opt_inode64:
|
||||||
mopt->mount_opt |= OCFS2_MOUNT_INODE64;
|
mopt->mount_opt |= OCFS2_MOUNT_INODE64;
|
||||||
break;
|
break;
|
||||||
|
#ifdef CONFIG_OCFS2_FS_POSIX_ACL
|
||||||
|
case Opt_acl:
|
||||||
|
mopt->mount_opt |= OCFS2_MOUNT_POSIX_ACL;
|
||||||
|
break;
|
||||||
|
case Opt_noacl:
|
||||||
|
mopt->mount_opt &= ~OCFS2_MOUNT_POSIX_ACL;
|
||||||
|
break;
|
||||||
|
#else
|
||||||
|
case Opt_acl:
|
||||||
|
case Opt_noacl:
|
||||||
|
printk(KERN_INFO "ocfs2 (no)acl options not supported\n");
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
default:
|
default:
|
||||||
mlog(ML_ERROR,
|
mlog(ML_ERROR,
|
||||||
"Unrecognized mount option \"%s\" "
|
"Unrecognized mount option \"%s\" "
|
||||||
|
@ -1017,6 +1043,13 @@ static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt)
|
||||||
if (opts & OCFS2_MOUNT_INODE64)
|
if (opts & OCFS2_MOUNT_INODE64)
|
||||||
seq_printf(s, ",inode64");
|
seq_printf(s, ",inode64");
|
||||||
|
|
||||||
|
#ifdef CONFIG_OCFS2_FS_POSIX_ACL
|
||||||
|
if (opts & OCFS2_MOUNT_POSIX_ACL)
|
||||||
|
seq_printf(s, ",acl");
|
||||||
|
else
|
||||||
|
seq_printf(s, ",noacl");
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue