[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4] block/raw-posix: Try both FIEMAP and SEEK_HOL
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH 4] block/raw-posix: Try both FIEMAP and SEEK_HOLE |
Date: |
Fri, 9 May 2014 17:29:37 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, May 08, 2014 at 08:57:55PM +0200, Max Reitz wrote:
> The current version of raw-posix always uses ioctl(FS_IOC_FIEMAP) if
> FIEMAP is available; lseek with SEEK_HOLE/SEEK_DATA are not even
> compiled in in this case. However, there may be implementations which
> support the latter but not the former (e.g., NFSv4.2) as well as vice
> versa.
>
> To cover both cases, try FIEMAP first (as this will return -ENOTSUP if
> not supported instead of returning a failsafe value (everything
> allocated as a single extent)) and if that does not work, fall back to
> SEEK_HOLE/SEEK_DATA.
>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> v4:
> - If the order of FIEMAP and SEEK_HOLE are reversed (that is, kept the
> way they are now), the tristates from v3 are not required anymore, as
> FIEMAP can never be in an “unknown” state and the worst that
> SEEK_HOLE can do is to report everything as allocated (which is the
> final fallback anyway). This patch is thus basically the same as v2,
> only with the order of FIEMAP and SEEK_HOLE reversed (first FIEMAP,
> then SEEK_HOLE). [Paolo]
> ---
> block/raw-posix.c | 127
> +++++++++++++++++++++++++++++++++---------------------
> 1 file changed, 77 insertions(+), 50 deletions(-)
Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block
Stefan