All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marco Stornelli <marco.stornelli@gmail.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Andreas Dilger <adilger@dilger.ca>,
	Christoph Hellwig <hch@infradead.org>,
	Josef Bacik <josef@redhat.com>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-btrfs@vger.kernel.org, xfs@oss.sgi.com,
	viro@zeniv.linux.org.uk, dchinner@redhat.com
Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester
Date: Fri, 26 Aug 2011 08:24:45 +0200	[thread overview]
Message-ID: <CANGUGtC1qk2Tkv42fvibUKiEJz_MnNiV-nQ7T-_woppVhjQK-Q@mail.gmail.com> (raw)
In-Reply-To: <20110826013528.GW3162@dastard>

2011/8/26 Dave Chinner <david@fromorbit.com>:
> On Thu, Aug 25, 2011 at 12:51:56AM -0600, Andreas Dilger wrote:
>> On 2011-08-25, at 12:40 AM, Dave Chinner wrote:
>> > On Thu, Aug 25, 2011 at 02:06:32AM -0400, Christoph Hellwig wrote:
>> >> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote:
>> >>> This is a test to make sure seek_data/seek_hole is acting like i=
t does on
>> >>> Solaris. =A0It will check to see if the fs supports finding a ho=
le or not and will adjust as necessary.
>> >>
>> >> Can you resend this with any updates that happened in the meantim=
e?
>> >>
>> >> Dave also still had some comments about semantics, so it might be=
 worth
>> >> to incorporate that as well.
>> >
>> > The main questions I had when looking at this was how we should
>> > handle unwritten extents - the only answer I got was along the lin=
es
>> > of "we'll deal with that once filesystems have implemented
>> > something". That's a bit of a chicken-and-egg situation, and doesn=
't
>> > help me decide what is the best thing to do. I don't want to have =
to
>> > re-implement this code when it's decided i did the wrong thing
>> > initially.
>>
>> Let's first clarify what you mean by an unwritten extent? =A0Do you =
mean a
>> preallocated extent that returns 0 when read,
>
> Exactly that.
>
>> or do you mean a delayed
>> allocation extent that was written by the application that is still =
in
>> memory but not yet written to disk?
>
> That's not an unwritten extent - that's a delayed allocation extent ;=
)
>
>> Unfortunately, ZFS has no concept of preallocated extents, so we can=
't
>> look to it for precedent, but it definitely has delayed allocation.
>> Possibly if UFS on Solaris has SEEK_HOLE and also preallocated exten=
ts
>> (I have no idea) it could be tested?
>>
>> > The most basic question I really want answered is this:
>> >
>> > =A0 =A0 - is preallocated space a HOLE, or is it DATA?
>> >
>> > Whatever the answer, I think it should be consistently
>> > presented by all filesystems that support preallocation, and it
>> > should be encoded into the generic SEEK_HOLE/SEEK_DATA tests....
>>
>> My thought would be that a preallocated extent is still a HOLE, beca=
use
>> it doesn't contain data that an application actually cares about. =A0=
On
>> the other hand, a delalloc extent is DATA because it has something t=
hat
>> an application cares about.
>
> OK, that's the way I'd expect to treat both preallocated and
> delalloc space.
>
>> > Answering that question then helps answer the more complex questio=
ns
>> > I had, like:
>> >
>> > =A0 =A0 - what does SEEK_DATA return when you have a file layout
>> > =A0 =A0 =A0 like "hole-prealloc-data"?
>>
>> I would think only the "data" part, since that is what the definitio=
n
>> of "SEEK_DATA" is IMHO.
>
> Agreed, that's the way I'd interpret it, too. So perhaps we need to
> ensure that this interpretation is actually tested by this test?
>
> How about some definitions to work by:
>
> Data: a range of the file that contains valid data, regardless of
> whether it exists in memory or on disk. The valid data can be
> preceeded and/or followed by an arbitrary number of zero bytes
> dependent on the underlying implementation of hole detection.
>
> Hole: a range of the file that contains no data or is made up
> entirely of =A0NULL (zero) data. Holes include preallocated ranges of
> files that have not had actual data written to them.
>
> Does that make sense? It has sufficient flexibility in it for the

No for me. A hole is made up of zero data? It's a strange definition
for me. A hole is simply no data. With this definition a hole can be
start from a block with data but partially filled, and fs should check
instead of presence of a block, the data content. I don't like it very
much. For the fallocate case, we need only a simple rule: no check is
done beyond eof. At this point it's clear that we can check the file
block allocation till i_size, don't care if there are other blocks
allocated. I don't know if it's applicable even for unwritten extents
case.

Marco

WARNING: multiple messages have this Message-ID (diff)
From: Marco Stornelli <marco.stornelli@gmail.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Andreas Dilger <adilger@dilger.ca>,
	Christoph Hellwig <hch@infradead.org>,
	Josef Bacik <josef@redhat.com>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-btrfs@vger.kernel.org, xfs@oss.sgi.com,
	viro@zeniv.linux.org.uk, dchinner@redhat.com
Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester
Date: Fri, 26 Aug 2011 08:24:45 +0200	[thread overview]
Message-ID: <CANGUGtC1qk2Tkv42fvibUKiEJz_MnNiV-nQ7T-_woppVhjQK-Q@mail.gmail.com> (raw)
In-Reply-To: <20110826013528.GW3162@dastard>

2011/8/26 Dave Chinner <david@fromorbit.com>:
> On Thu, Aug 25, 2011 at 12:51:56AM -0600, Andreas Dilger wrote:
>> On 2011-08-25, at 12:40 AM, Dave Chinner wrote:
>> > On Thu, Aug 25, 2011 at 02:06:32AM -0400, Christoph Hellwig wrote:
>> >> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote:
>> >>> This is a test to make sure seek_data/seek_hole is acting like it does on
>> >>> Solaris.  It will check to see if the fs supports finding a hole or not and will adjust as necessary.
>> >>
>> >> Can you resend this with any updates that happened in the meantime?
>> >>
>> >> Dave also still had some comments about semantics, so it might be worth
>> >> to incorporate that as well.
>> >
>> > The main questions I had when looking at this was how we should
>> > handle unwritten extents - the only answer I got was along the lines
>> > of "we'll deal with that once filesystems have implemented
>> > something". That's a bit of a chicken-and-egg situation, and doesn't
>> > help me decide what is the best thing to do. I don't want to have to
>> > re-implement this code when it's decided i did the wrong thing
>> > initially.
>>
>> Let's first clarify what you mean by an unwritten extent?  Do you mean a
>> preallocated extent that returns 0 when read,
>
> Exactly that.
>
>> or do you mean a delayed
>> allocation extent that was written by the application that is still in
>> memory but not yet written to disk?
>
> That's not an unwritten extent - that's a delayed allocation extent ;)
>
>> Unfortunately, ZFS has no concept of preallocated extents, so we can't
>> look to it for precedent, but it definitely has delayed allocation.
>> Possibly if UFS on Solaris has SEEK_HOLE and also preallocated extents
>> (I have no idea) it could be tested?
>>
>> > The most basic question I really want answered is this:
>> >
>> >     - is preallocated space a HOLE, or is it DATA?
>> >
>> > Whatever the answer, I think it should be consistently
>> > presented by all filesystems that support preallocation, and it
>> > should be encoded into the generic SEEK_HOLE/SEEK_DATA tests....
>>
>> My thought would be that a preallocated extent is still a HOLE, because
>> it doesn't contain data that an application actually cares about.  On
>> the other hand, a delalloc extent is DATA because it has something that
>> an application cares about.
>
> OK, that's the way I'd expect to treat both preallocated and
> delalloc space.
>
>> > Answering that question then helps answer the more complex questions
>> > I had, like:
>> >
>> >     - what does SEEK_DATA return when you have a file layout
>> >       like "hole-prealloc-data"?
>>
>> I would think only the "data" part, since that is what the definition
>> of "SEEK_DATA" is IMHO.
>
> Agreed, that's the way I'd interpret it, too. So perhaps we need to
> ensure that this interpretation is actually tested by this test?
>
> How about some definitions to work by:
>
> Data: a range of the file that contains valid data, regardless of
> whether it exists in memory or on disk. The valid data can be
> preceeded and/or followed by an arbitrary number of zero bytes
> dependent on the underlying implementation of hole detection.
>
> Hole: a range of the file that contains no data or is made up
> entirely of  NULL (zero) data. Holes include preallocated ranges of
> files that have not had actual data written to them.
>
> Does that make sense? It has sufficient flexibility in it for the

No for me. A hole is made up of zero data? It's a strange definition
for me. A hole is simply no data. With this definition a hole can be
start from a block with data but partially filled, and fs should check
instead of presence of a block, the data content. I don't like it very
much. For the fallocate case, we need only a simple rule: no check is
done beyond eof. At this point it's clear that we can check the file
block allocation till i_size, don't care if there are other blocks
allocated. I don't know if it's applicable even for unwritten extents
case.

Marco

WARNING: multiple messages have this Message-ID (diff)
From: Marco Stornelli <marco.stornelli@gmail.com>
To: Dave Chinner <david@fromorbit.com>
Cc: Andreas Dilger <adilger@dilger.ca>,
	linux-kernel@vger.kernel.org, xfs@oss.sgi.com,
	Christoph Hellwig <hch@infradead.org>,
	Josef Bacik <josef@redhat.com>,
	dchinner@redhat.com, linux-fsdevel@vger.kernel.org,
	linux-btrfs@vger.kernel.org, viro@zeniv.linux.org.uk
Subject: Re: [PATCH] xfstests 255: add a seek_data/seek_hole tester
Date: Fri, 26 Aug 2011 08:24:45 +0200	[thread overview]
Message-ID: <CANGUGtC1qk2Tkv42fvibUKiEJz_MnNiV-nQ7T-_woppVhjQK-Q@mail.gmail.com> (raw)
In-Reply-To: <20110826013528.GW3162@dastard>

2011/8/26 Dave Chinner <david@fromorbit.com>:
> On Thu, Aug 25, 2011 at 12:51:56AM -0600, Andreas Dilger wrote:
>> On 2011-08-25, at 12:40 AM, Dave Chinner wrote:
>> > On Thu, Aug 25, 2011 at 02:06:32AM -0400, Christoph Hellwig wrote:
>> >> On Tue, Jun 28, 2011 at 11:33:19AM -0400, Josef Bacik wrote:
>> >>> This is a test to make sure seek_data/seek_hole is acting like it does on
>> >>> Solaris.  It will check to see if the fs supports finding a hole or not and will adjust as necessary.
>> >>
>> >> Can you resend this with any updates that happened in the meantime?
>> >>
>> >> Dave also still had some comments about semantics, so it might be worth
>> >> to incorporate that as well.
>> >
>> > The main questions I had when looking at this was how we should
>> > handle unwritten extents - the only answer I got was along the lines
>> > of "we'll deal with that once filesystems have implemented
>> > something". That's a bit of a chicken-and-egg situation, and doesn't
>> > help me decide what is the best thing to do. I don't want to have to
>> > re-implement this code when it's decided i did the wrong thing
>> > initially.
>>
>> Let's first clarify what you mean by an unwritten extent?  Do you mean a
>> preallocated extent that returns 0 when read,
>
> Exactly that.
>
>> or do you mean a delayed
>> allocation extent that was written by the application that is still in
>> memory but not yet written to disk?
>
> That's not an unwritten extent - that's a delayed allocation extent ;)
>
>> Unfortunately, ZFS has no concept of preallocated extents, so we can't
>> look to it for precedent, but it definitely has delayed allocation.
>> Possibly if UFS on Solaris has SEEK_HOLE and also preallocated extents
>> (I have no idea) it could be tested?
>>
>> > The most basic question I really want answered is this:
>> >
>> >     - is preallocated space a HOLE, or is it DATA?
>> >
>> > Whatever the answer, I think it should be consistently
>> > presented by all filesystems that support preallocation, and it
>> > should be encoded into the generic SEEK_HOLE/SEEK_DATA tests....
>>
>> My thought would be that a preallocated extent is still a HOLE, because
>> it doesn't contain data that an application actually cares about.  On
>> the other hand, a delalloc extent is DATA because it has something that
>> an application cares about.
>
> OK, that's the way I'd expect to treat both preallocated and
> delalloc space.
>
>> > Answering that question then helps answer the more complex questions
>> > I had, like:
>> >
>> >     - what does SEEK_DATA return when you have a file layout
>> >       like "hole-prealloc-data"?
>>
>> I would think only the "data" part, since that is what the definition
>> of "SEEK_DATA" is IMHO.
>
> Agreed, that's the way I'd interpret it, too. So perhaps we need to
> ensure that this interpretation is actually tested by this test?
>
> How about some definitions to work by:
>
> Data: a range of the file that contains valid data, regardless of
> whether it exists in memory or on disk. The valid data can be
> preceeded and/or followed by an arbitrary number of zero bytes
> dependent on the underlying implementation of hole detection.
>
> Hole: a range of the file that contains no data or is made up
> entirely of  NULL (zero) data. Holes include preallocated ranges of
> files that have not had actual data written to them.
>
> Does that make sense? It has sufficient flexibility in it for the

No for me. A hole is made up of zero data? It's a strange definition
for me. A hole is simply no data. With this definition a hole can be
start from a block with data but partially filled, and fs should check
instead of presence of a block, the data content. I don't like it very
much. For the fallocate case, we need only a simple rule: no check is
done beyond eof. At this point it's clear that we can check the file
block allocation till i_size, don't care if there are other blocks
allocated. I don't know if it's applicable even for unwritten extents
case.

Marco

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  reply	other threads:[~2011-08-26  6:24 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-28 15:33 [PATCH 1/4] fs: add SEEK_HOLE and SEEK_DATA flags Josef Bacik
2011-06-28 15:33 ` Josef Bacik
2011-06-28 15:33 ` [PATCH 2/4] Btrfs: implement our own ->llseek Josef Bacik
2011-06-28 15:33   ` Josef Bacik
2011-06-28 15:33 ` [PATCH 3/4] Ext4: handle SEEK_HOLE/SEEK_DATA generically Josef Bacik
2011-06-28 15:33   ` Josef Bacik
2011-06-28 16:29   ` Andreas Dilger
2011-06-28 17:34     ` Josef Bacik
2011-06-28 15:33 ` [PATCH 4/4] fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek Josef Bacik
2011-06-28 15:33   ` Josef Bacik
2011-06-28 15:33 ` [PATCH] xfstests 255: add a seek_data/seek_hole tester Josef Bacik
2011-06-28 15:33   ` Josef Bacik
2011-06-29  6:53   ` Dave Chinner
2011-06-29  6:53     ` Dave Chinner
2011-06-29  6:53     ` Dave Chinner
2011-06-29  6:53     ` Dave Chinner
2011-06-29  7:40     ` Christoph Hellwig
2011-06-29  7:40       ` Christoph Hellwig
2011-06-29 10:42       ` Pádraig Brady
2011-06-29 10:42         ` Pádraig Brady
2011-06-29 10:42         ` Pádraig Brady
2011-06-29 10:42         ` Pádraig Brady
2011-06-29 17:29         ` Sunil Mushran
2011-06-29 17:29           ` Sunil Mushran
2011-06-29 17:29           ` Sunil Mushran
2011-06-29 17:29           ` Sunil Mushran
2011-06-29 17:36           ` Christoph Hellwig
2011-06-29 17:36             ` Christoph Hellwig
2011-06-29 17:40             ` Sunil Mushran
2011-06-29 17:40               ` Sunil Mushran
2011-06-29 21:29           ` Pádraig Brady
2011-06-29 21:29             ` Pádraig Brady
2011-06-29 21:29             ` Pádraig Brady
2011-07-01  9:37         ` Christoph Hellwig
2011-07-01  9:37           ` Christoph Hellwig
2011-06-29 17:10       ` Sunil Mushran
2011-06-29 17:10         ` Sunil Mushran
2011-06-29 17:52         ` Josef Bacik
2011-06-29 17:52           ` Josef Bacik
2011-06-29 13:19     ` Josef Bacik
2011-06-29 13:19       ` Josef Bacik
2011-06-29 13:19       ` Josef Bacik
2011-08-25  6:06   ` Christoph Hellwig
2011-08-25  6:06     ` Christoph Hellwig
2011-08-25  6:40     ` Dave Chinner
2011-08-25  6:40       ` Dave Chinner
2011-08-25  6:51       ` Andreas Dilger
2011-08-25  6:51         ` Andreas Dilger
2011-08-26  1:35         ` Dave Chinner
2011-08-26  1:35           ` Dave Chinner
2011-08-26  6:24           ` Marco Stornelli [this message]
2011-08-26  6:24             ` Marco Stornelli
2011-08-26  6:24             ` Marco Stornelli
2011-08-26 14:41             ` Zach Brown
2011-08-26 14:41               ` Zach Brown
2011-08-26 14:41               ` Zach Brown
2011-08-26 14:41               ` Zach Brown
2011-08-27  8:30               ` Marco Stornelli
2011-08-27  8:30                 ` Marco Stornelli
2011-08-28 10:17                 ` Marco Stornelli
2011-08-28 10:17                   ` Marco Stornelli
2011-08-30 17:42                 ` Sunil Mushran
2011-08-30 17:42                   ` Sunil Mushran
2011-08-31  1:17           ` Sunil Mushran
2011-08-31  1:17             ` Sunil Mushran
2011-08-31  3:29             ` Dave Chinner
2011-08-31  3:29               ` Dave Chinner
2011-08-31  3:53               ` david
2011-08-31  3:53                 ` david
2011-08-31  4:43               ` Sunil Mushran
2011-08-31  4:43                 ` Sunil Mushran
2011-08-31  9:05                 ` Pádraig Brady
2011-08-31  9:05                   ` Pádraig Brady
2011-08-31  9:05                   ` Pádraig Brady
2011-08-31  4:48               ` Dan Merillat
2011-08-31  4:48                 ` Dan Merillat
2011-07-29  9:58 ` [PATCH 1/4] fs: add SEEK_HOLE and SEEK_DATA flags Marco Stornelli
2011-07-29  9:58   ` Marco Stornelli
2011-08-20  9:41 ` Marco Stornelli
2011-08-20  9:41   ` Marco Stornelli
2011-08-20 10:03   ` Marco Stornelli
2011-08-20 10:03     ` Marco Stornelli
2011-08-20 15:36     ` Sunil Mushran
2011-08-20 15:36       ` Sunil Mushran
2011-08-20 16:32       ` Marco Stornelli
2011-08-20 16:32         ` Marco Stornelli
2011-08-22  6:08         ` Sunil Mushran
2011-08-22  6:08           ` Sunil Mushran
2011-08-22 10:56           ` Marco Stornelli
2011-08-22 10:56             ` Marco Stornelli
2011-08-22 10:56             ` Marco Stornelli
2011-08-22 10:56             ` Marco Stornelli
2011-08-22 15:57             ` Sunil Mushran
2011-08-22 15:57               ` Sunil Mushran
2011-08-22 17:56               ` Marco Stornelli
2011-08-22 17:56                 ` Marco Stornelli
2011-08-22 21:22                 ` Sunil Mushran
2011-08-22 21:22                   ` Sunil Mushran
2011-08-23 17:44                   ` Marco Stornelli
2011-08-23 17:44                     ` Marco Stornelli
2011-08-31  0:35                 ` Dave Chinner
2011-08-31  0:35                   ` Dave Chinner
     [not found]   ` <CAGpXXZ+xjhadprkc_LiP3qUypLLkCxdeEmo8+K+6mOnBuNhmLg@mail.gmail.com>
2011-08-20 17:18     ` Greg Freemyer
  -- strict thread matches above, loose matches on Subject: below --
2011-06-27 18:02 Josef Bacik
2011-06-27 18:02 ` [PATCH] xfstests 255: add a seek_data/seek_hole tester Josef Bacik
2011-06-27 18:32   ` Andreas Dilger
2011-06-27 18:47     ` Josef Bacik

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=CANGUGtC1qk2Tkv42fvibUKiEJz_MnNiV-nQ7T-_woppVhjQK-Q@mail.gmail.com \
    --to=marco.stornelli@gmail.com \
    --cc=adilger@dilger.ca \
    --cc=david@fromorbit.com \
    --cc=dchinner@redhat.com \
    --cc=hch@infradead.org \
    --cc=josef@redhat.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    --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.