|
@@ -75,6 +75,7 @@ static void ext4_write_super(struct super_block *sb);
|
|
|
static int ext4_freeze(struct super_block *sb);
|
|
|
static struct dentry *ext4_mount(struct file_system_type *fs_type, int flags,
|
|
|
const char *dev_name, void *data);
|
|
|
+static int ext4_feature_set_ok(struct super_block *sb, int readonly);
|
|
|
static void ext4_destroy_lazyinit_thread(void);
|
|
|
static void ext4_unregister_li_request(struct super_block *sb);
|
|
|
static void ext4_clear_request_list(void);
|
|
@@ -2117,6 +2118,13 @@ static void ext4_orphan_cleanup(struct super_block *sb,
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ /* Check if feature set would not allow a r/w mount */
|
|
|
+ if (!ext4_feature_set_ok(sb, 0)) {
|
|
|
+ ext4_msg(sb, KERN_INFO, "Skipping orphan cleanup due to "
|
|
|
+ "unknown ROCOMPAT features");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
if (EXT4_SB(sb)->s_mount_state & EXT4_ERROR_FS) {
|
|
|
if (es->s_last_orphan)
|
|
|
jbd_debug(1, "Errors on filesystem, "
|