From 4ad01fab8fb598fc058aa999d127d8355504bd09 Mon Sep 17 00:00:00 2001 From: Amir Goldstein Date: Mon, 28 Feb 2011 00:53:45 -0500 Subject: [PATCH] --- yaml --- r: 242380 b: refs/heads/master c: d39195c33bb1b5fdcb0f416e8a0b34bfdb07a027 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ext4/super.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 36d7f74bbb34..c4c5caf9df81 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8e8eaabefee3ff645b9551ee32c6c54c7d80ad19 +refs/heads/master: d39195c33bb1b5fdcb0f416e8a0b34bfdb07a027 diff --git a/trunk/fs/ext4/super.c b/trunk/fs/ext4/super.c index bd6e86aa82aa..9eaec22aa088 100644 --- a/trunk/fs/ext4/super.c +++ b/trunk/fs/ext4/super.c @@ -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, "