On 2012-01-31, at 20:04, Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> wrote: > After online resizing finishes, resize2fs loads the latest super block > so that the new blocks count is reported correctly. > > Signed-off-by: Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> > --- > resize/online.c | 16 ++++++++++++++-- > 1 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/resize/online.c b/resize/online.c > index 966ea1e..cb48556 100644 > --- a/resize/online.c > +++ b/resize/online.c > @@ -97,8 +97,7 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt, > exit(1); > } > } else { > - close(fd); > - return 0; > + goto succeeded; > } > > if ((ext2fs_blocks_count(sb) > MAX_32_NUM) || > @@ -220,6 +219,19 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt, > } > > ext2fs_free(new_fs); > +succeeded: > + /* > + * load the lastest super block. > + */ > + io_channel_set_blksize(fs->io, SUPERBLOCK_OFFSET); > + retval = io_channel_read_blk(fs->io, 1, -SUPERBLOCK_SIZE, > + fs->super); Instead of using io_channel_read_blk() directly it is also possible to use ext2fs_read_block() with a negative size to force it to bypass the ext2fs cache. Cheers, Andreas > + if (retval == 0) > + *new_size = ext2fs_blocks_count(fs->super); > + else > + printf(_("Resize succeeded, however an error happened " > + "when loading super block.\n\n")); > + > close(fd); > > return 0; > -- > 1.7.5.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html