From: Nicholas Miell <nmiell@comcast.net>
To: Andreas Dilger <adilger@clusterfs.com>
Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
xfs@oss.sgi.com, hch@infradead.org
Subject: Re: [RFC] add FIEMAP ioctl to efficiently map file allocation
Date: Thu, 12 Apr 2007 18:33:00 -0700 [thread overview]
Message-ID: <1176427980.3125.9.camel@entropy> (raw)
In-Reply-To: <20070412110550.GM5967@schatzie.adilger.int>
On Thu, 2007-04-12 at 05:05 -0600, Andreas Dilger wrote:
> I'm interested in getting input for implementing an ioctl to efficiently
> map file extents & holes (FIEMAP) instead of looping over FIBMAP a billion
> times. We already have customers with single files in the 10TB range and
> we additionally need to get the mapping over the network so it needs to
> be efficient in terms of how data is passed, and how easily it can be
> extracted from the filesystem.
>
> I had come up with a plan independently and was also steered toward
> XFS_IOC_GETBMAP* ioctls which are in fact very similar to my original
> plan, though I think the XFS structs used there are a bit bloated.
>
> There was also recent discussion about SEEK_HOLE and SEEK_DATA as
> implemented by Sun, but even if we could skip the holes we still might
> need to do millions of FIBMAPs to see how large files are allocated
> on disk. Conversely, having filesystems implement an efficient FIBMAP
> ioctl (or ->fiemap() method) could in turn be leveraged for SEEK_HOLE
> and SEEK_DATA instead of doing looping over ->bmap() inside the kernel
> as I saw one patch.
>
I certainly hope not. SEEK_HOLE/SEEK_DATA is a poor interface and
doesn't deserve to spread.
OTOH, this is nicely done.
>
> struct fibmap_extent {
> __u64 fe_start; /* starting offset in bytes */
> __u64 fe_len; /* length in bytes */
> }
>
> struct fibmap {
> struct fibmap_extent fm_start; /* offset, length of desired mapping */
> __u32 fm_extent_count; /* number of extents in array */
> __u32 fm_flags; /* flags (similar to XFS_IOC_GETBMAP) */
> __u64 unused;
> struct fibmap_extent fm_extents[0];
> }
>
> #define FIEMAP_LEN_MASK 0xff000000000000
> #define FIEMAP_LEN_HOLE 0x01000000000000
> #define FIEMAP_LEN_UNWRITTEN 0x02000000000000
>
--
Nicholas Miell <nmiell@comcast.net>
next prev parent reply other threads:[~2007-04-13 1:33 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-12 11:05 [RFC] add FIEMAP ioctl to efficiently map file allocation Andreas Dilger
2007-04-12 11:22 ` Anton Altaparmakov
2007-04-13 4:01 ` Andreas Dilger
2007-04-13 4:01 ` Andreas Dilger
2007-04-13 7:46 ` Anton Altaparmakov
2007-04-13 14:53 ` Jeff Mahoney
2007-04-13 1:33 ` Nicholas Miell [this message]
2007-04-13 10:15 ` Christoph Hellwig
2007-04-13 11:38 ` Anton Altaparmakov
2007-04-13 18:55 ` Nicholas Miell
2007-04-16 8:01 ` Timothy Shimmin
2007-04-18 23:03 ` Andreas Dilger
2007-04-16 11:22 ` David Chinner
2007-04-19 0:21 ` Andreas Dilger
2007-04-19 1:54 ` David Chinner
2007-04-30 22:44 ` Andreas Dilger
2007-05-01 4:22 ` David Chinner
2007-05-01 4:39 ` Nicholas Miell
2007-05-01 14:20 ` David Chinner
2007-05-01 18:46 ` Anton Altaparmakov
2007-05-02 9:15 ` David Chinner
2007-05-02 9:36 ` Anton Altaparmakov
2007-05-02 10:57 ` David Chinner
2007-05-02 11:17 ` Anton Altaparmakov
2007-05-03 7:49 ` Andreas Dilger
2007-05-03 8:23 ` Anton Altaparmakov
2007-05-02 9:45 ` Anton Altaparmakov
2007-05-01 22:32 ` Andreas Dilger
2007-05-01 18:37 ` Anton Altaparmakov
2007-05-02 0:06 ` David Chinner
2007-05-02 8:16 ` Anton Altaparmakov
2007-10-29 19:45 ` Andreas Dilger
2007-10-29 13:57 ` [Ocfs2-devel] " Mark Fasheh
2007-10-29 20:57 ` Mark Fasheh
2007-10-29 20:57 ` Mark Fasheh
2007-10-29 22:13 ` Andreas Dilger
2007-11-05 17:44 ` [Ocfs2-devel] " Andreas Dilger
2007-10-29 17:11 ` Mark Fasheh
2007-10-30 0:11 ` Mark Fasheh
2007-10-30 0:11 ` Mark Fasheh
2007-10-30 0:25 ` Andreas Dilger
2007-11-05 17:44 ` [Ocfs2-devel] " Andreas Dilger
2007-10-29 22:29 ` Andreas Dilger
2007-11-05 17:44 ` [Ocfs2-devel] " Andreas Dilger
2007-10-29 22:29 ` Andreas Dilger
2007-10-29 15:40 ` [Ocfs2-devel] " Mark Fasheh
2007-10-29 22:40 ` Mark Fasheh
2007-10-29 22:40 ` Mark Fasheh
2007-10-29 22:25 ` David Chinner
2007-10-29 22:25 ` David Chinner
2007-05-01 22:30 ` Andreas Dilger
2007-05-02 2:26 ` David Chinner
2007-05-02 8:23 ` Anton Altaparmakov
2007-05-02 8:30 ` Anton Altaparmakov
2007-05-02 9:48 ` David Chinner
2007-05-02 9:56 ` Anton Altaparmakov
2007-04-19 6:23 ` Timothy Shimmin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1176427980.3125.9.camel@entropy \
--to=nmiell@comcast.net \
--cc=adilger@clusterfs.com \
--cc=hch@infradead.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.