mirror of https://github.com/vitalif/e2fsprogs
resize2fs: add support for new in-kernel online resize ioctl
This is needed to support online resizing for > 32-bit file systems Signed-off-by: Yongqiang Yang <xiaoqiangnk@gmail.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>bitmap-optimize
parent
478113973e
commit
9f6ba888f0
|
@ -327,6 +327,7 @@ struct ext4_new_group_input {
|
||||||
#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
|
#define EXT2_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
|
||||||
#define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input)
|
#define EXT2_IOC_GROUP_ADD _IOW('f', 8,struct ext2_new_group_input)
|
||||||
#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input)
|
#define EXT4_IOC_GROUP_ADD _IOW('f', 8,struct ext4_new_group_input)
|
||||||
|
#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Structure of an inode on the disk
|
* Structure of an inode on the disk
|
||||||
|
|
|
@ -51,7 +51,7 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt,
|
||||||
fs->super->s_first_data_block,
|
fs->super->s_first_data_block,
|
||||||
EXT2_BLOCKS_PER_GROUP(fs->super)),
|
EXT2_BLOCKS_PER_GROUP(fs->super)),
|
||||||
EXT2_DESC_PER_BLOCK(fs->super));
|
EXT2_DESC_PER_BLOCK(fs->super));
|
||||||
printf("old desc_blocks = %lu, new_desc_blocks = %lu\n",
|
printf("old_desc_blocks = %lu, new_desc_blocks = %lu\n",
|
||||||
fs->desc_blocks, new_desc_blocks);
|
fs->desc_blocks, new_desc_blocks);
|
||||||
if (!(fs->super->s_feature_compat &
|
if (!(fs->super->s_feature_compat &
|
||||||
EXT2_FEATURE_COMPAT_RESIZE_INODE) &&
|
EXT2_FEATURE_COMPAT_RESIZE_INODE) &&
|
||||||
|
@ -69,6 +69,23 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt,
|
||||||
}
|
}
|
||||||
|
|
||||||
size=ext2fs_blocks_count(sb);
|
size=ext2fs_blocks_count(sb);
|
||||||
|
|
||||||
|
if (ioctl(fd, EXT4_IOC_RESIZE_FS, new_size)) {
|
||||||
|
if (errno != ENOTTY) {
|
||||||
|
if (errno == EPERM)
|
||||||
|
com_err(program_name, 0,
|
||||||
|
_("Permission denied to resize filesystem"));
|
||||||
|
else
|
||||||
|
com_err(program_name, errno,
|
||||||
|
_("While checking for on-line resizing "
|
||||||
|
"support"));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
close(fd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (ioctl(fd, EXT2_IOC_GROUP_EXTEND, &size)) {
|
if (ioctl(fd, EXT2_IOC_GROUP_EXTEND, &size)) {
|
||||||
if (errno == EPERM)
|
if (errno == EPERM)
|
||||||
com_err(program_name, 0,
|
com_err(program_name, 0,
|
||||||
|
|
Loading…
Reference in New Issue