Whamcloud - gitweb
libext2fs: Add EXT2_FLAG_NONFREE_ON_ERROR to ext2fs_open2()
authorTheodore Ts'o <tytso@mit.edu>
Wed, 27 Feb 2008 01:45:36 +0000 (20:45 -0500)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 27 Feb 2008 01:45:36 +0000 (20:45 -0500)
Add a flag which returns the partially completed filesystem object so
e2fsck can print more intelligent error messages.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/ext2fs/ext2fs.h
lib/ext2fs/openfs.c

index e1ae89d..0b2c321 100644 (file)
@@ -188,6 +188,7 @@ typedef struct ext2_file *ext2_file_t;
 #define EXT2_FLAG_IMAGE_FILE           0x2000
 #define EXT2_FLAG_EXCLUSIVE            0x4000
 #define EXT2_FLAG_SOFTSUPP_FEATURES    0x8000
+#define EXT2_FLAG_NOFREE_ON_ERROR      0x10000
 
 /*
  * Special flag in the ext2 inode i_flag field that means that this is
index 947675e..d705b1c 100644 (file)
@@ -305,10 +305,14 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
 
        fs->stride = fs->super->s_raid_stride;
 
+       fs->flags &= ~EXT2_FLAG_NOFREE_ON_ERROR;
        *ret_fs = fs;
        return 0;
 cleanup:
-       ext2fs_free(fs);
+       if (flags & EXT2_FLAG_NOFREE_ON_ERROR)
+               *ret_fs = fs;
+       else
+               ext2fs_free(fs);
        return retval;
 }