diff options
Diffstat (limited to 'fs/ocfs2/super.c')
-rw-r--r-- | fs/ocfs2/super.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 8044ed97d362..1104f14c3183 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
@@ -87,6 +87,7 @@ struct mount_options | |||
87 | unsigned long mount_opt; | 87 | unsigned long mount_opt; |
88 | unsigned int atime_quantum; | 88 | unsigned int atime_quantum; |
89 | signed short slot; | 89 | signed short slot; |
90 | unsigned int localalloc_opt; | ||
90 | }; | 91 | }; |
91 | 92 | ||
92 | static int ocfs2_parse_options(struct super_block *sb, char *options, | 93 | static int ocfs2_parse_options(struct super_block *sb, char *options, |
@@ -151,6 +152,7 @@ enum { | |||
151 | Opt_atime_quantum, | 152 | Opt_atime_quantum, |
152 | Opt_slot, | 153 | Opt_slot, |
153 | Opt_commit, | 154 | Opt_commit, |
155 | Opt_localalloc, | ||
154 | Opt_err, | 156 | Opt_err, |
155 | }; | 157 | }; |
156 | 158 | ||
@@ -167,6 +169,7 @@ static match_table_t tokens = { | |||
167 | {Opt_atime_quantum, "atime_quantum=%u"}, | 169 | {Opt_atime_quantum, "atime_quantum=%u"}, |
168 | {Opt_slot, "preferred_slot=%u"}, | 170 | {Opt_slot, "preferred_slot=%u"}, |
169 | {Opt_commit, "commit=%u"}, | 171 | {Opt_commit, "commit=%u"}, |
172 | {Opt_localalloc, "localalloc=%d"}, | ||
170 | {Opt_err, NULL} | 173 | {Opt_err, NULL} |
171 | }; | 174 | }; |
172 | 175 | ||
@@ -602,6 +605,7 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) | |||
602 | osb->s_atime_quantum = parsed_options.atime_quantum; | 605 | osb->s_atime_quantum = parsed_options.atime_quantum; |
603 | osb->preferred_slot = parsed_options.slot; | 606 | osb->preferred_slot = parsed_options.slot; |
604 | osb->osb_commit_interval = parsed_options.commit_interval; | 607 | osb->osb_commit_interval = parsed_options.commit_interval; |
608 | osb->local_alloc_size = parsed_options.localalloc_opt; | ||
605 | 609 | ||
606 | sb->s_magic = OCFS2_SUPER_MAGIC; | 610 | sb->s_magic = OCFS2_SUPER_MAGIC; |
607 | 611 | ||
@@ -756,6 +760,7 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
756 | mopt->mount_opt = 0; | 760 | mopt->mount_opt = 0; |
757 | mopt->atime_quantum = OCFS2_DEFAULT_ATIME_QUANTUM; | 761 | mopt->atime_quantum = OCFS2_DEFAULT_ATIME_QUANTUM; |
758 | mopt->slot = OCFS2_INVALID_SLOT; | 762 | mopt->slot = OCFS2_INVALID_SLOT; |
763 | mopt->localalloc_opt = OCFS2_DEFAULT_LOCAL_ALLOC_SIZE; | ||
759 | 764 | ||
760 | if (!options) { | 765 | if (!options) { |
761 | status = 1; | 766 | status = 1; |
@@ -834,6 +839,15 @@ static int ocfs2_parse_options(struct super_block *sb, | |||
834 | option = JBD_DEFAULT_MAX_COMMIT_AGE; | 839 | option = JBD_DEFAULT_MAX_COMMIT_AGE; |
835 | mopt->commit_interval = HZ * option; | 840 | mopt->commit_interval = HZ * option; |
836 | break; | 841 | break; |
842 | case Opt_localalloc: | ||
843 | option = 0; | ||
844 | if (match_int(&args[0], &option)) { | ||
845 | status = 0; | ||
846 | goto bail; | ||
847 | } | ||
848 | if (option >= 0 && (option <= ocfs2_local_alloc_size(sb) * 8)) | ||
849 | mopt->localalloc_opt = option; | ||
850 | break; | ||
837 | default: | 851 | default: |
838 | mlog(ML_ERROR, | 852 | mlog(ML_ERROR, |
839 | "Unrecognized mount option \"%s\" " | 853 | "Unrecognized mount option \"%s\" " |
@@ -886,6 +900,9 @@ static int ocfs2_show_options(struct seq_file *s, struct vfsmount *mnt) | |||
886 | seq_printf(s, ",commit=%u", | 900 | seq_printf(s, ",commit=%u", |
887 | (unsigned) (osb->osb_commit_interval / HZ)); | 901 | (unsigned) (osb->osb_commit_interval / HZ)); |
888 | 902 | ||
903 | if (osb->local_alloc_size != OCFS2_DEFAULT_LOCAL_ALLOC_SIZE) | ||
904 | seq_printf(s, ",localalloc=%d", osb->local_alloc_size); | ||
905 | |||
889 | return 0; | 906 | return 0; |
890 | } | 907 | } |
891 | 908 | ||