Whamcloud - gitweb
Merge branch 'maint' into next
[tools/e2fsprogs.git] / lib / ext2fs / openfs.c
index 2ad9114..b2a8abb 100644 (file)
@@ -477,8 +477,20 @@ errcode_t ext2fs_set_data_io(ext2_filsys fs, io_channel new_io)
 
 errcode_t ext2fs_rewrite_to_io(ext2_filsys fs, io_channel new_io)
 {
+       errcode_t err;
+
        if ((fs->flags & EXT2_FLAG_IMAGE_FILE) == 0)
                return EXT2_ET_NOT_IMAGE_FILE;
+       err = io_channel_set_blksize(new_io, fs->blocksize);
+       if (err)
+               return err;
+       if ((new_io == fs->image_io) || (new_io == fs->io))
+               return 0;
+       if ((fs->image_io != fs->io) &&
+           fs->image_io)
+               io_channel_close(fs->image_io);
+       if (fs->io)
+               io_channel_close(fs->io);
        fs->io = fs->image_io = new_io;
        fs->flags |= EXT2_FLAG_DIRTY | EXT2_FLAG_RW |
                EXT2_FLAG_BB_DIRTY | EXT2_FLAG_IB_DIRTY;