diff options
Diffstat (limited to 'fs/ceph/super.c')
-rw-r--r-- | fs/ceph/super.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c index 2df963f1cf5a..10a4ccbf38da 100644 --- a/fs/ceph/super.c +++ b/fs/ceph/super.c | |||
@@ -144,7 +144,11 @@ enum { | |||
144 | Opt_ino32, | 144 | Opt_ino32, |
145 | Opt_noino32, | 145 | Opt_noino32, |
146 | Opt_fscache, | 146 | Opt_fscache, |
147 | Opt_nofscache | 147 | Opt_nofscache, |
148 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
149 | Opt_acl, | ||
150 | #endif | ||
151 | Opt_noacl | ||
148 | }; | 152 | }; |
149 | 153 | ||
150 | static match_table_t fsopt_tokens = { | 154 | static match_table_t fsopt_tokens = { |
@@ -172,6 +176,10 @@ static match_table_t fsopt_tokens = { | |||
172 | {Opt_noino32, "noino32"}, | 176 | {Opt_noino32, "noino32"}, |
173 | {Opt_fscache, "fsc"}, | 177 | {Opt_fscache, "fsc"}, |
174 | {Opt_nofscache, "nofsc"}, | 178 | {Opt_nofscache, "nofsc"}, |
179 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
180 | {Opt_acl, "acl"}, | ||
181 | #endif | ||
182 | {Opt_noacl, "noacl"}, | ||
175 | {-1, NULL} | 183 | {-1, NULL} |
176 | }; | 184 | }; |
177 | 185 | ||
@@ -271,6 +279,14 @@ static int parse_fsopt_token(char *c, void *private) | |||
271 | case Opt_nofscache: | 279 | case Opt_nofscache: |
272 | fsopt->flags &= ~CEPH_MOUNT_OPT_FSCACHE; | 280 | fsopt->flags &= ~CEPH_MOUNT_OPT_FSCACHE; |
273 | break; | 281 | break; |
282 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
283 | case Opt_acl: | ||
284 | fsopt->sb_flags |= MS_POSIXACL; | ||
285 | break; | ||
286 | #endif | ||
287 | case Opt_noacl: | ||
288 | fsopt->sb_flags &= ~MS_POSIXACL; | ||
289 | break; | ||
274 | default: | 290 | default: |
275 | BUG_ON(token); | 291 | BUG_ON(token); |
276 | } | 292 | } |
@@ -438,6 +454,13 @@ static int ceph_show_options(struct seq_file *m, struct dentry *root) | |||
438 | else | 454 | else |
439 | seq_puts(m, ",nofsc"); | 455 | seq_puts(m, ",nofsc"); |
440 | 456 | ||
457 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
458 | if (fsopt->sb_flags & MS_POSIXACL) | ||
459 | seq_puts(m, ",acl"); | ||
460 | else | ||
461 | seq_puts(m, ",noacl"); | ||
462 | #endif | ||
463 | |||
441 | if (fsopt->wsize) | 464 | if (fsopt->wsize) |
442 | seq_printf(m, ",wsize=%d", fsopt->wsize); | 465 | seq_printf(m, ",wsize=%d", fsopt->wsize); |
443 | if (fsopt->rsize != CEPH_RSIZE_DEFAULT) | 466 | if (fsopt->rsize != CEPH_RSIZE_DEFAULT) |
@@ -819,9 +842,6 @@ static int ceph_set_super(struct super_block *s, void *data) | |||
819 | 842 | ||
820 | s->s_flags = fsc->mount_options->sb_flags; | 843 | s->s_flags = fsc->mount_options->sb_flags; |
821 | s->s_maxbytes = 1ULL << 40; /* temp value until we get mdsmap */ | 844 | s->s_maxbytes = 1ULL << 40; /* temp value until we get mdsmap */ |
822 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
823 | s->s_flags |= MS_POSIXACL; | ||
824 | #endif | ||
825 | 845 | ||
826 | s->s_xattr = ceph_xattr_handlers; | 846 | s->s_xattr = ceph_xattr_handlers; |
827 | s->s_fs_info = fsc; | 847 | s->s_fs_info = fsc; |
@@ -911,6 +931,10 @@ static struct dentry *ceph_mount(struct file_system_type *fs_type, | |||
911 | struct ceph_options *opt = NULL; | 931 | struct ceph_options *opt = NULL; |
912 | 932 | ||
913 | dout("ceph_mount\n"); | 933 | dout("ceph_mount\n"); |
934 | |||
935 | #ifdef CONFIG_CEPH_FS_POSIX_ACL | ||
936 | flags |= MS_POSIXACL; | ||
937 | #endif | ||
914 | err = parse_mount_options(&fsopt, &opt, flags, data, dev_name, &path); | 938 | err = parse_mount_options(&fsopt, &opt, flags, data, dev_name, &path); |
915 | if (err < 0) { | 939 | if (err < 0) { |
916 | res = ERR_PTR(err); | 940 | res = ERR_PTR(err); |