diff options
-rw-r--r-- | fs/ext2/super.c | 61 | ||||
-rw-r--r-- | include/linux/ext2_fs_sb.h | 1 |
2 files changed, 60 insertions, 2 deletions
diff --git a/fs/ext2/super.c b/fs/ext2/super.c index 04bc96caa7b2..3e78af2ae7d8 100644 --- a/fs/ext2/super.c +++ b/fs/ext2/super.c | |||
@@ -203,10 +203,66 @@ static void ext2_clear_inode(struct inode *inode) | |||
203 | 203 | ||
204 | static int ext2_show_options(struct seq_file *seq, struct vfsmount *vfs) | 204 | static int ext2_show_options(struct seq_file *seq, struct vfsmount *vfs) |
205 | { | 205 | { |
206 | struct ext2_sb_info *sbi = EXT2_SB(vfs->mnt_sb); | 206 | struct super_block *sb = vfs->mnt_sb; |
207 | struct ext2_sb_info *sbi = EXT2_SB(sb); | ||
208 | struct ext2_super_block *es = sbi->s_es; | ||
209 | unsigned long def_mount_opts; | ||
210 | |||
211 | def_mount_opts = le32_to_cpu(es->s_default_mount_opts); | ||
207 | 212 | ||
208 | if (sbi->s_mount_opt & EXT2_MOUNT_GRPID) | 213 | if (sbi->s_sb_block != 1) |
214 | seq_printf(seq, ",sb=%lu", sbi->s_sb_block); | ||
215 | if (test_opt(sb, MINIX_DF)) | ||
216 | seq_puts(seq, ",minixdf"); | ||
217 | if (test_opt(sb, GRPID)) | ||
209 | seq_puts(seq, ",grpid"); | 218 | seq_puts(seq, ",grpid"); |
219 | if (!test_opt(sb, GRPID) && (def_mount_opts & EXT2_DEFM_BSDGROUPS)) | ||
220 | seq_puts(seq, ",nogrpid"); | ||
221 | if (sbi->s_resuid != EXT2_DEF_RESUID || | ||
222 | le16_to_cpu(es->s_def_resuid) != EXT2_DEF_RESUID) { | ||
223 | seq_printf(seq, ",resuid=%u", sbi->s_resuid); | ||
224 | } | ||
225 | if (sbi->s_resgid != EXT2_DEF_RESGID || | ||
226 | le16_to_cpu(es->s_def_resgid) != EXT2_DEF_RESGID) { | ||
227 | seq_printf(seq, ",resgid=%u", sbi->s_resgid); | ||
228 | } | ||
229 | if (test_opt(sb, ERRORS_CONT)) { | ||
230 | int def_errors = le16_to_cpu(es->s_errors); | ||
231 | |||
232 | if (def_errors == EXT2_ERRORS_PANIC || | ||
233 | def_errors == EXT2_ERRORS_RO) { | ||
234 | seq_puts(seq, ",errors=continue"); | ||
235 | } | ||
236 | } | ||
237 | if (test_opt(sb, ERRORS_RO)) | ||
238 | seq_puts(seq, ",errors=remount-ro"); | ||
239 | if (test_opt(sb, ERRORS_PANIC)) | ||
240 | seq_puts(seq, ",errors=panic"); | ||
241 | if (test_opt(sb, NO_UID32)) | ||
242 | seq_puts(seq, ",nouid32"); | ||
243 | if (test_opt(sb, DEBUG)) | ||
244 | seq_puts(seq, ",debug"); | ||
245 | if (test_opt(sb, OLDALLOC)) | ||
246 | seq_puts(seq, ",oldalloc"); | ||
247 | |||
248 | #ifdef CONFIG_EXT2_FS_XATTR | ||
249 | if (test_opt(sb, XATTR_USER)) | ||
250 | seq_puts(seq, ",user_xattr"); | ||
251 | if (!test_opt(sb, XATTR_USER) && | ||
252 | (def_mount_opts & EXT2_DEFM_XATTR_USER)) { | ||
253 | seq_puts(seq, ",nouser_xattr"); | ||
254 | } | ||
255 | #endif | ||
256 | |||
257 | #ifdef CONFIG_EXT2_FS_POSIX_ACL | ||
258 | if (test_opt(sb, POSIX_ACL)) | ||
259 | seq_puts(seq, ",acl"); | ||
260 | if (!test_opt(sb, POSIX_ACL) && (def_mount_opts & EXT2_DEFM_ACL)) | ||
261 | seq_puts(seq, ",noacl"); | ||
262 | #endif | ||
263 | |||
264 | if (test_opt(sb, NOBH)) | ||
265 | seq_puts(seq, ",nobh"); | ||
210 | 266 | ||
211 | #if defined(CONFIG_QUOTA) | 267 | #if defined(CONFIG_QUOTA) |
212 | if (sbi->s_mount_opt & EXT2_MOUNT_USRQUOTA) | 268 | if (sbi->s_mount_opt & EXT2_MOUNT_USRQUOTA) |
@@ -659,6 +715,7 @@ static int ext2_fill_super(struct super_block *sb, void *data, int silent) | |||
659 | if (!sbi) | 715 | if (!sbi) |
660 | return -ENOMEM; | 716 | return -ENOMEM; |
661 | sb->s_fs_info = sbi; | 717 | sb->s_fs_info = sbi; |
718 | sbi->s_sb_block = sb_block; | ||
662 | 719 | ||
663 | /* | 720 | /* |
664 | * See what the current blocksize for the device is, and | 721 | * See what the current blocksize for the device is, and |
diff --git a/include/linux/ext2_fs_sb.h b/include/linux/ext2_fs_sb.h index d149f2959e67..199ef37b0a19 100644 --- a/include/linux/ext2_fs_sb.h +++ b/include/linux/ext2_fs_sb.h | |||
@@ -39,6 +39,7 @@ struct ext2_sb_info { | |||
39 | struct ext2_super_block * s_es; /* Pointer to the super block in the buffer */ | 39 | struct ext2_super_block * s_es; /* Pointer to the super block in the buffer */ |
40 | struct buffer_head ** s_group_desc; | 40 | struct buffer_head ** s_group_desc; |
41 | unsigned long s_mount_opt; | 41 | unsigned long s_mount_opt; |
42 | unsigned long s_sb_block; | ||
42 | uid_t s_resuid; | 43 | uid_t s_resuid; |
43 | gid_t s_resgid; | 44 | gid_t s_resgid; |
44 | unsigned short s_mount_state; | 45 | unsigned short s_mount_state; |