Message ID | 1381090418-2829-1-git-send-email-linkinjeon@gmail.com |
---|---|
State | Superseded, archived |
Headers | show |
On Mon, Oct 07, 2013 at 05:13:38AM +0900, Namjae Jeon wrote: > From: Namjae Jeon <namjae.jeon@samsung.com> > > Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. > > Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com> > Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com> Looks good. Reviewed-by: Dave Chinner <dchinner@redhat.com>
This has been committed. Thanks --Rich commit e64190f8440286a815060524777b435e06a7b364 Author: Namjae Jeon <namjae.jeon@samsung.com> Date: Sun Oct 6 20:13:38 2013 +0000 [RESEND, 4/7] xfsprogs: xfsio: add support FALLOC_FL_COLLAPSE_RANGE for fallocate -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Oct 18, 2013 at 12:24:22PM -0500, Rich Johnston wrote: > This has been committed. > > Thanks > --Rich > > commit e64190f8440286a815060524777b435e06a7b364 > Author: Namjae Jeon <namjae.jeon@samsung.com> > Date: Sun Oct 6 20:13:38 2013 +0000 > > [RESEND, 4/7] xfsprogs: xfsio: add support > FALLOC_FL_COLLAPSE_RANGE for fallocate Hi Rich, This isn't ready for being committed into xfsprogs. The kernel code is still under review, and until we actually have it in a tree to be merged int eh kernel, we shoul d't be making any userspace changes at all. Indeed, there's a chance (unlikely, but still there) that this code may still not end up in the kernel at all... So, it's probably best right now to revert this patch until we have the fallocate API support merged into the kernel... Cheers, Dave.
Sorry if there are others please let me know. On 10/18/2013 05:44 PM, Dave Chinner wrote: > On Fri, Oct 18, 2013 at 12:24:22PM -0500, Rich Johnston wrote: >> This has been committed. >> >> Thanks >> --Rich >> >> commit e64190f8440286a815060524777b435e06a7b364 >> Author: Namjae Jeon <namjae.jeon@samsung.com> >> Date: Sun Oct 6 20:13:38 2013 +0000 >> >> [RESEND, 4/7] xfsprogs: xfsio: add support >> FALLOC_FL_COLLAPSE_RANGE for fallocate > > Hi Rich, > > This isn't ready for being committed into xfsprogs. The kernel code > is still under review, and until we actually have it in a tree to be > merged int eh kernel, we shoul d't be making any userspace changes > at all. Indeed, there's a chance (unlikely, but still there) that > this code may still not end up in the kernel at all... > > So, it's probably best right now to revert this patch until we have > the fallocate API support merged into the kernel... > > Cheers, > > Dave. > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
This commit was reverted commit 19e73c9d220728617816c47a1671cc931c40e45b Author: Rich Johnston <rjohnston@sgi.com> Date: Tue Oct 22 10:15:20 2013 -0500 Revert "[RESEND, 4/7] xfsprogs: xfsio: add support FALLOC_FL_COLLAPSE_RANGE for fallocate" This reverts commit e64190f8440286a815060524777b435e06a7b364 until we have the fallocate API support merged into the kernel. The kernel code is still under review. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/io/prealloc.c b/io/prealloc.c index 8380646..e7ff940 100644 --- a/io/prealloc.c +++ b/io/prealloc.c @@ -29,6 +29,10 @@ #define FALLOC_FL_PUNCH_HOLE 0x02 #endif +#ifndef FALLOC_FL_COLLAPSE_RANGE +#define FALLOC_FL_COLLAPSE_RANGE 0x08 +#endif + static cmdinfo_t allocsp_cmd; static cmdinfo_t freesp_cmd; static cmdinfo_t resvsp_cmd; @@ -37,6 +41,7 @@ static cmdinfo_t zero_cmd; #if defined(HAVE_FALLOCATE) static cmdinfo_t falloc_cmd; static cmdinfo_t fpunch_cmd; +static cmdinfo_t fcollapse_cmd; #endif static int @@ -159,8 +164,11 @@ fallocate_f( int mode = 0; int c; - while ((c = getopt(argc, argv, "kp")) != EOF) { + while ((c = getopt(argc, argv, "ckp")) != EOF) { switch (c) { + case 'c': + mode = FALLOC_FL_COLLAPSE_RANGE; + break; case 'k': mode = FALLOC_FL_KEEP_SIZE; break; @@ -203,6 +211,25 @@ fpunch_f( } return 0; } + +static int +fcollapse_f( + int argc, + char **argv) +{ + xfs_flock64_t segment; + int mode = FALLOC_FL_COLLAPSE_RANGE; + + if (!offset_length(argv[1], argv[2], &segment)) + return 0; + + if (fallocate(file->fd, mode, + segment.l_start, segment.l_len)) { + perror("fallocate"); + return 0; + } + return 0; +} #endif /* HAVE_FALLOCATE */ void @@ -277,5 +304,15 @@ prealloc_init(void) fpunch_cmd.oneline = _("de-allocates space assocated with part of a file via fallocate"); add_command(&fpunch_cmd); + + fcollapse_cmd.name = "fcollapse"; + fcollapse_cmd.cfunc = fcollapse_f; + fcollapse_cmd.argmin = 2; + fcollapse_cmd.argmax = 2; + fcollapse_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + fcollapse_cmd.args = _("off len"); + fcollapse_cmd.oneline = + _("de-allocates space and eliminates the hole by shifting extents"); + add_command(&fcollapse_cmd); #endif /* HAVE_FALLOCATE */ } diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 767b50e..9543b20 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -380,6 +380,12 @@ will set the FALLOC_FL_KEEP_SIZE flag as described in .PD .RE .TP +.BI fcollapse " offset length" +Call fallocate with FALLOC_FL_COLLAPSE_RANGE flag as described in the +.BR fallocate (2) +manual page to de-allocates blocks and eliminates the hole created in this process +by shifting data blocks into the hole. +.TP .BI fpunch " offset length" Punches (de-allocates) blocks in the file by calling fallocate with the FALLOC_FL_PUNCH_HOLE flag as described in the