| From ce654b37f87980d95f339080e4c3bdb2370bdf22 Mon Sep 17 00:00:00 2001 |
| From: Amir Goldstein <amir73il@gmail.com> |
| Date: Sat, 26 Feb 2011 22:40:19 +0200 |
| Subject: ext3: skip orphan cleanup on rocompat fs |
| |
| From: Amir Goldstein <amir73il@gmail.com> |
| |
| commit ce654b37f87980d95f339080e4c3bdb2370bdf22 upstream. |
| |
| Orphan cleanup is currently executed even if the file system has some |
| number of unknown ROCOMPAT features, which deletes inodes and frees |
| blocks, which could be very bad for some RO_COMPAT features. |
| |
| This patch skips the orphan cleanup if it contains readonly compatible |
| features not known by this ext3 implementation, which would prevent |
| the fs from being mounted (or remounted) readwrite. |
| |
| Signed-off-by: Amir Goldstein <amir73il@users.sf.net> |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| fs/ext3/super.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/fs/ext3/super.c |
| +++ b/fs/ext3/super.c |
| @@ -1440,6 +1440,13 @@ static void ext3_orphan_cleanup (struct |
| return; |
| } |
| |
| + /* Check if feature set allows readwrite operations */ |
| + if (EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP)) { |
| + ext3_msg(sb, KERN_INFO, "Skipping orphan cleanup due to " |
| + "unknown ROCOMPAT features"); |
| + return; |
| + } |
| + |
| if (EXT3_SB(sb)->s_mount_state & EXT3_ERROR_FS) { |
| if (es->s_last_orphan) |
| jbd_debug(1, "Errors on filesystem, " |