Akira Fujita Wrote: > ext4: online defrag-- Move victim files for the target file (-f mode) > > From: Akira Fujita <a-fujita@xxxxxxxxxxxxx> > > Move victim files to make sufficient space and reallocates > the contiguous blocks for the target file. > > Signed-off-by: Akira Fujita <a-fujita@xxxxxxxxxxxxx> > Signed-off-by: Takashi Sato <t-sato@xxxxxxxxxxxxx> > --- > fs/ext4/balloc.c | 10 +- > fs/ext4/defrag.c | 460 +++++++++++++++++++++++++++++++++++++++++++++--- > fs/ext4/ext4.h | 29 +++- > fs/ext4/ext4_extents.h | 5 + > fs/ext4/extents.c | 54 +++++-- > fs/ext4/ioctl.c | 5 +- > fs/ext4/mballoc.c | 5 + > fs/ext4/mballoc.h | 1 + > 8 files changed, 522 insertions(+), 47 deletions(-) > ...snip... > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index d0b1301..88fd100 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -94,6 +94,11 @@ struct ext4_allocation_request { > unsigned long len; > /* flags. see above EXT4_MB_HINT_* */ > unsigned long flags; > + /* > + * for ext4 online defrag: > + * the block group which is excepted from allocation target > + */ > + long long excepted_group; > }; Why not ext4_group_t for excepted_group here? > > /* > @@ -303,6 +308,9 @@ struct ext4_new_group_data { > #define EXT4_IOC_GROUP_INFO _IOW('f', 11, struct ext4_group_data_info) > #define EXT4_IOC_FREE_BLOCKS_INFO _IOW('f', 12, struct ext4_extents_info) > #define EXT4_IOC_EXTENTS_INFO _IOW('f', 13, struct ext4_extents_info) > +#define EXT4_IOC_RESERVE_BLOCK _IOW('f', 14, struct ext4_extents_info) > +#define EXT4_IOC_MOVE_VICTIM _IOW('f', 15, struct ext4_extents_info) > +#define EXT4_IOC_BLOCK_RELEASE _IO('f', 8) > ...snip... > diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h > index bfe6add..1141ad5 100644 > --- a/fs/ext4/mballoc.h > +++ b/fs/ext4/mballoc.h > @@ -205,6 +205,7 @@ struct ext4_allocation_context { > struct page *ac_buddy_page; > struct ext4_prealloc_space *ac_pa; > struct ext4_locality_group *ac_lg; > + long long ac_excepted_group; ditto > }; > > #define AC_STATUS_CONTINUE 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-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html