aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ext3/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext3/super.c')
-rw-r--r--fs/ext3/super.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index b34886734a44..4a4fcd6868c7 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -639,7 +639,7 @@ static struct quotactl_ops ext3_qctl_operations = {
639}; 639};
640#endif 640#endif
641 641
642static struct super_operations ext3_sops = { 642static const struct super_operations ext3_sops = {
643 .alloc_inode = ext3_alloc_inode, 643 .alloc_inode = ext3_alloc_inode,
644 .destroy_inode = ext3_destroy_inode, 644 .destroy_inode = ext3_destroy_inode,
645 .read_inode = ext3_read_inode, 645 .read_inode = ext3_read_inode,
@@ -1459,10 +1459,14 @@ static int ext3_fill_super (struct super_block *sb, void *data, int silent)
1459 set_opt(sbi->s_mount_opt, GRPID); 1459 set_opt(sbi->s_mount_opt, GRPID);
1460 if (def_mount_opts & EXT3_DEFM_UID16) 1460 if (def_mount_opts & EXT3_DEFM_UID16)
1461 set_opt(sbi->s_mount_opt, NO_UID32); 1461 set_opt(sbi->s_mount_opt, NO_UID32);
1462#ifdef CONFIG_EXT3_FS_XATTR
1462 if (def_mount_opts & EXT3_DEFM_XATTR_USER) 1463 if (def_mount_opts & EXT3_DEFM_XATTR_USER)
1463 set_opt(sbi->s_mount_opt, XATTR_USER); 1464 set_opt(sbi->s_mount_opt, XATTR_USER);
1465#endif
1466#ifdef CONFIG_EXT3_FS_POSIX_ACL
1464 if (def_mount_opts & EXT3_DEFM_ACL) 1467 if (def_mount_opts & EXT3_DEFM_ACL)
1465 set_opt(sbi->s_mount_opt, POSIX_ACL); 1468 set_opt(sbi->s_mount_opt, POSIX_ACL);
1469#endif
1466 if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_DATA) 1470 if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_DATA)
1467 sbi->s_mount_opt |= EXT3_MOUNT_JOURNAL_DATA; 1471 sbi->s_mount_opt |= EXT3_MOUNT_JOURNAL_DATA;
1468 else if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_ORDERED) 1472 else if ((def_mount_opts & EXT3_DEFM_JMODE) == EXT3_DEFM_JMODE_ORDERED)
@@ -2344,6 +2348,22 @@ static int ext3_remount (struct super_block * sb, int * flags, char * data)
2344 err = -EROFS; 2348 err = -EROFS;
2345 goto restore_opts; 2349 goto restore_opts;
2346 } 2350 }
2351
2352 /*
2353 * If we have an unprocessed orphan list hanging
2354 * around from a previously readonly bdev mount,
2355 * require a full umount/remount for now.
2356 */
2357 if (es->s_last_orphan) {
2358 printk(KERN_WARNING "EXT3-fs: %s: couldn't "
2359 "remount RDWR because of unprocessed "
2360 "orphan inode list. Please "
2361 "umount/remount instead.\n",
2362 sb->s_id);
2363 err = -EINVAL;
2364 goto restore_opts;
2365 }
2366
2347 /* 2367 /*
2348 * Mounting a RDONLY partition read-write, so reread 2368 * Mounting a RDONLY partition read-write, so reread
2349 * and store the current valid flag. (It may have 2369 * and store the current valid flag. (It may have