xfs
[Top] [All Lists]

Re: [PATCH 1/2] fiemap: add freespace mapping to FS_IOC_FIEMAP

To: Dave Chinner <david@xxxxxxxxxxxxx>
Subject: Re: [PATCH 1/2] fiemap: add freespace mapping to FS_IOC_FIEMAP
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Thu, 08 Nov 2012 10:50:49 -0600
Cc: linux-fsdevel@xxxxxxxxxxxxxxx, xfs@xxxxxxxxxxx
In-reply-to: <1350537079-16246-2-git-send-email-david@xxxxxxxxxxxxx>
References: <1350537079-16246-1-git-send-email-david@xxxxxxxxxxxxx> <1350537079-16246-2-git-send-email-david@xxxxxxxxxxxxx>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 10/18/12 00:11, Dave Chinner wrote:
From: Dave Chinner<dchinner@xxxxxxxxxx>

fiemap is used to map extents of used space on files. it's just an
array of extents, though, so there's no reason it can only index
*used*  space.

Ther eis need for getting freespace layout information into
userspace. For example, defragmentation programs would find it
useful to be able to map the free space in the filesystem to
work out where it is best to move data to defragment it.
Alternatively, knowing where free space is enables us to identify
extents that need to be moved to defragment free space.

Hence, extend fiemap with the FIEMAP_FLAG_FREESPACE to indicate that
the caller wants to map free space in the range fm_start bytes from
the start of the filesystem for fm_length bytes.

Because XFS can report extents in size order without needing to
sort, and this information is useful to xfs_fsr, also add
FIEMAP_FLAG_FREESPACE_SIZE to tell the filesystem to return a
freespace map ordered by extent size rather than offset. If there
are multiple extents of the same size, then they are ordered by
offset.

Signed-off-by: Dave Chinner<dchinner@xxxxxxxxxx>
---

...

  --------------
diff --git a/include/linux/fiemap.h b/include/linux/fiemap.h
index d830747..f4fbb9f 100644
--- a/include/linux/fiemap.h
+++ b/include/linux/fiemap.h

  include/uabi/linux/fiemap.h
          ^^^^
other than that, it looks good.

Reviewed-by: Mark Tinguely <tinguely@xxxxxxx>

<Prev in Thread] Current Thread [Next in Thread>