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_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_RESIZE_FS _IOW('f', 16, __u64)
|
||||
|
||||
/*
|
||||
* 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,
|
||||
EXT2_BLOCKS_PER_GROUP(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);
|
||||
if (!(fs->super->s_feature_compat &
|
||||
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);
|
||||
|
||||
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 (errno == EPERM)
|
||||
com_err(program_name, 0,
|
||||
|
|
Loading…
Reference in New Issue