All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jamie Lokier <jamie@shareable.org>
To: linux-fsdevel@vger.kernel.org, jmorris@namei.org,
	ocfs2-devel@oss.oracle.com, viro@zeniv.linux.org.uk
Subject: [Ocfs2-devel] [PATCH 1/3] fs: Document the reflink(2) system call.
Date: Tue, 5 May 2009 14:01:36 +0100	[thread overview]
Message-ID: <20090505130136.GE25328@shareable.org> (raw)
In-Reply-To: <20090505071608.GB10258@mail.oracle.com>

Joel Becker wrote:
> On Tue, May 05, 2009 at 02:07:03AM +0100, Jamie Lokier wrote:
> > Joel Becker wrote:
> > > +All file attributes and extended attributes of the new file must
> > > +identical to the source file with the following exceptions:
> > 
> > reflink() sounds useful already, but is there a compelling reason why
> > both files must have the same attributes, and changing attributes will
> > break the COW?
> 
> 	Yeah, because without it you can't use it for snapshotting.
> That's where the original design came from - inode snapshots.  The big
> thing that excited me was that defining reflink() as I did, instead of
> a more specific snapshot call, allows all sorts of generic uses (some of
> which you outline below).
> 	If reflink() creates a snapshot, you can then break it to make
> things a little different.  But if it changes things, you can never
> change them back.
> 
> > Being able to have different attributes would allow:
> > 
> >    - reflink() to be used for fast space-efficient copying, i.e. an
> >      optimisation to "cp", "git checkout" and things like that.
> 
> 	It can right now, just not of other people's files.  Actually,
> the only real difficult with doing it to other people's files is quota.
> But I can't come up with a way to prevent quota DoS.
> 	Here's another fun trick.  Overwriting rsync, instead of copying
> blocks from the already-existing source could reflink the source to the
> .temporary, then only write the changed blocks.  And since you own both
> files, it just works.  If you're overwriting someone else's file?  The
> old copy behavior is fine.

The moment rsync overwrites a single block, the whole reflink file
will be copied by the filesystem, and then rsync will overwrite other
blocks in the copy.

So I would think it's more efficient for rsync to do what it's always
done instead, and just copy those parts of the file which are not changed.

(It needs to read the whole file anyway for checksumming, unless you
have a filesystem trick planned to avoid that :-)  If you made
splice() share file extents when cloning data from one file to
another, that would really accelerate rsync and do a better job of
reducing storage...)

> >    - reflink() to be used for merging files with identical contents
> >      (something I find surprisingly often on my disks).
> > 
> >    - reflink() to be used for merging files from different
> >      cgroup-style VMs in particular.
> 
> 	While it would be great to have a way to do this, reflink() is
> not the way.  It's really simple to understand with its link-like
> semantic, and I see no point in making it a seven-different-operation
> kitchen sink call.

That's hand-waving away.  I'm thinking of it doing _one_ simple thing:
copy the file with a COW implementation, which happens to be versatile
in its consequences.  It's not a kitchen sink call.

I.e. what the ext3 cowlink() call partially implemented a year or two
ago did.

In some ways reflink() is more complicated to understand than
cowlink(), because of reflink making chown and chmod have potentially
heavy side effects.

> > Requiring all attributes except nlink and ino to be identical makes
> > reflink() unsuitable for transparently doing those things, except in
> > cases where they happen to have the same attributes anyway.
> 
> 	We've had a lot of fun thinking up many uses for reflink(), and
> almost all of them are within the context of one's own files.

Sure.

> > I'm thinking particularly of file permissions, owner/group and atime.
> 
> 	People do cp -p all the time.  I don't see how keeping those
> things the same will break anything.  It's a new call, not an existing
> semantic.

Some people do "chown -R a-w" all the time after copying a tree for
snapshotting, so they don't accidentally modify files later when
viewing them in a text editor :-)  (I'm thinking of the old days, when
we edited kernel trees using "cp -rl" to make snapshots)

Thinking about it, with reflink snapshots, it would be annoying to be
unable write-protect the snapshots.

> > Since each reflink has its own nlink and ino, I'm wondering why the
> > other attributes cannot also be separate.  (I realise extended
> > attributes complicate the picture and it's desirable to share them,
> > especially if they are large).
> 
> 	The biggest reason is snapshotting.  The second biggest reason
> is a simple to understand call.  "Everything is identical except those
> things that *have* to be different".

I'm not clear about something.  Will "chmod XXX reflinked-file" change
the permissions of both files (like hard-linked files), or will it
trigger a data copy (like lazy cp -a)?

I think "chmod XXX reflinked-file" is simpler to understand if it
doesn't trigger a copy as side effect.  (Especially as the copy may
take a long time and/or ENOSPC - things you don't expect from
"chmod").

What if you want to change the permissions of both reflinks - do you
have to recreate them?

> > But is there an efficient way for reflink-aware applications to detect
> > these files have the same contents, other than reading the contents
> > twice and comparing?  Occasionally that would be good.  E.g. It would
> > be nice if "diff -r" could be patched to do that.
> 
> 	I would think FIEMAP would tell you what you want to know,
> wouldn't it?

I'm not sure.  FIEMAP can be quite a heavy operation too, and it's
only available to root I think.

From a user's "managing space on my disk" perspective, the important
things are being able to see where their data is shared and
_especially_ being able to see when touching a file would trigger a
massive increase in storage + copying time.

I.e. I can see an additional flag to "ls" being useful if reflink is
used for more than just very well organised backup folders.

> > > +- The ctime of the source file only changes if the source's metadata
> > > +  must be changed to accommodate the copy-on-write linkage.  The ctime of
> > > +  the new file is set to represent its creation.
> > 
> > What change to the source metadata would require ctime to change?
> 
> 	ocfs2 flags all extents in the source file with a "this is now
> shared, go check the reference count before writing" flag if they don't
> have it already.  I'd call that a metadata update.

If the flag is invisible to users, it isn't.  If the flag is visible,
isn't that the answer to the previous question? :-)

> > > +- The link count of the source file is unchanged, and the link count of
> > > +  the new file is one.
> > 
> > Can you hard link to the source file and the reflink afterwards,
> > incrementing the reflink's link count?  (I presume yes).  Can you
> > reflink to both of them too?
> 
> 	Yes, absolutely.  Once reflinked, they look like two separate
> POSIX files.

Except that chmod can take hours and trigger ENOSPC, and the POSIX
atime does... what?

Thanks, btw.
-- Jamie

WARNING: multiple messages have this Message-ID (diff)
From: Jamie Lokier <jamie@shareable.org>
To: linux-fsdevel@vger.kernel.org, jmorris@namei.org,
	ocfs2-devel@oss.oracle.com, viro@zeniv.linux.org.uk
Subject: Re: [PATCH 1/3] fs: Document the reflink(2) system call.
Date: Tue, 5 May 2009 14:01:36 +0100	[thread overview]
Message-ID: <20090505130136.GE25328@shareable.org> (raw)
In-Reply-To: <20090505071608.GB10258@mail.oracle.com>

Joel Becker wrote:
> On Tue, May 05, 2009 at 02:07:03AM +0100, Jamie Lokier wrote:
> > Joel Becker wrote:
> > > +All file attributes and extended attributes of the new file must
> > > +identical to the source file with the following exceptions:
> > 
> > reflink() sounds useful already, but is there a compelling reason why
> > both files must have the same attributes, and changing attributes will
> > break the COW?
> 
> 	Yeah, because without it you can't use it for snapshotting.
> That's where the original design came from - inode snapshots.  The big
> thing that excited me was that defining reflink() as I did, instead of
> a more specific snapshot call, allows all sorts of generic uses (some of
> which you outline below).
> 	If reflink() creates a snapshot, you can then break it to make
> things a little different.  But if it changes things, you can never
> change them back.
> 
> > Being able to have different attributes would allow:
> > 
> >    - reflink() to be used for fast space-efficient copying, i.e. an
> >      optimisation to "cp", "git checkout" and things like that.
> 
> 	It can right now, just not of other people's files.  Actually,
> the only real difficult with doing it to other people's files is quota.
> But I can't come up with a way to prevent quota DoS.
> 	Here's another fun trick.  Overwriting rsync, instead of copying
> blocks from the already-existing source could reflink the source to the
> .temporary, then only write the changed blocks.  And since you own both
> files, it just works.  If you're overwriting someone else's file?  The
> old copy behavior is fine.

The moment rsync overwrites a single block, the whole reflink file
will be copied by the filesystem, and then rsync will overwrite other
blocks in the copy.

So I would think it's more efficient for rsync to do what it's always
done instead, and just copy those parts of the file which are not changed.

(It needs to read the whole file anyway for checksumming, unless you
have a filesystem trick planned to avoid that :-)  If you made
splice() share file extents when cloning data from one file to
another, that would really accelerate rsync and do a better job of
reducing storage...)

> >    - reflink() to be used for merging files with identical contents
> >      (something I find surprisingly often on my disks).
> > 
> >    - reflink() to be used for merging files from different
> >      cgroup-style VMs in particular.
> 
> 	While it would be great to have a way to do this, reflink() is
> not the way.  It's really simple to understand with its link-like
> semantic, and I see no point in making it a seven-different-operation
> kitchen sink call.

That's hand-waving away.  I'm thinking of it doing _one_ simple thing:
copy the file with a COW implementation, which happens to be versatile
in its consequences.  It's not a kitchen sink call.

I.e. what the ext3 cowlink() call partially implemented a year or two
ago did.

In some ways reflink() is more complicated to understand than
cowlink(), because of reflink making chown and chmod have potentially
heavy side effects.

> > Requiring all attributes except nlink and ino to be identical makes
> > reflink() unsuitable for transparently doing those things, except in
> > cases where they happen to have the same attributes anyway.
> 
> 	We've had a lot of fun thinking up many uses for reflink(), and
> almost all of them are within the context of one's own files.

Sure.

> > I'm thinking particularly of file permissions, owner/group and atime.
> 
> 	People do cp -p all the time.  I don't see how keeping those
> things the same will break anything.  It's a new call, not an existing
> semantic.

Some people do "chown -R a-w" all the time after copying a tree for
snapshotting, so they don't accidentally modify files later when
viewing them in a text editor :-)  (I'm thinking of the old days, when
we edited kernel trees using "cp -rl" to make snapshots)

Thinking about it, with reflink snapshots, it would be annoying to be
unable write-protect the snapshots.

> > Since each reflink has its own nlink and ino, I'm wondering why the
> > other attributes cannot also be separate.  (I realise extended
> > attributes complicate the picture and it's desirable to share them,
> > especially if they are large).
> 
> 	The biggest reason is snapshotting.  The second biggest reason
> is a simple to understand call.  "Everything is identical except those
> things that *have* to be different".

I'm not clear about something.  Will "chmod XXX reflinked-file" change
the permissions of both files (like hard-linked files), or will it
trigger a data copy (like lazy cp -a)?

I think "chmod XXX reflinked-file" is simpler to understand if it
doesn't trigger a copy as side effect.  (Especially as the copy may
take a long time and/or ENOSPC - things you don't expect from
"chmod").

What if you want to change the permissions of both reflinks - do you
have to recreate them?

> > But is there an efficient way for reflink-aware applications to detect
> > these files have the same contents, other than reading the contents
> > twice and comparing?  Occasionally that would be good.  E.g. It would
> > be nice if "diff -r" could be patched to do that.
> 
> 	I would think FIEMAP would tell you what you want to know,
> wouldn't it?

I'm not sure.  FIEMAP can be quite a heavy operation too, and it's
only available to root I think.

>From a user's "managing space on my disk" perspective, the important
things are being able to see where their data is shared and
_especially_ being able to see when touching a file would trigger a
massive increase in storage + copying time.

I.e. I can see an additional flag to "ls" being useful if reflink is
used for more than just very well organised backup folders.

> > > +- The ctime of the source file only changes if the source's metadata
> > > +  must be changed to accommodate the copy-on-write linkage.  The ctime of
> > > +  the new file is set to represent its creation.
> > 
> > What change to the source metadata would require ctime to change?
> 
> 	ocfs2 flags all extents in the source file with a "this is now
> shared, go check the reference count before writing" flag if they don't
> have it already.  I'd call that a metadata update.

If the flag is invisible to users, it isn't.  If the flag is visible,
isn't that the answer to the previous question? :-)

> > > +- The link count of the source file is unchanged, and the link count of
> > > +  the new file is one.
> > 
> > Can you hard link to the source file and the reflink afterwards,
> > incrementing the reflink's link count?  (I presume yes).  Can you
> > reflink to both of them too?
> 
> 	Yes, absolutely.  Once reflinked, they look like two separate
> POSIX files.

Except that chmod can take hours and trigger ENOSPC, and the POSIX
atime does... what?

Thanks, btw.
-- Jamie

  parent reply	other threads:[~2009-05-05 13:01 UTC|newest]

Thread overview: 304+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-03  6:15 [Ocfs2-devel] [RFC] The reflink(2) system call Joel Becker
2009-05-03  6:15 ` Joel Becker
2009-05-03  6:15 ` [Ocfs2-devel] [PATCH 1/3] fs: Document the " Joel Becker
2009-05-03  6:15   ` Joel Becker
2009-05-03  8:01   ` [Ocfs2-devel] " Christoph Hellwig
2009-05-03  8:01     ` Christoph Hellwig
2009-05-04  2:46     ` [Ocfs2-devel] " Joel Becker
2009-05-04  2:46       ` Joel Becker
2009-05-04  6:36       ` [Ocfs2-devel] " Michael Kerrisk
2009-05-04  6:36         ` Michael Kerrisk
2009-05-04  7:12         ` [Ocfs2-devel] " Joel Becker
2009-05-04  7:12           ` Joel Becker
2009-05-03 13:08   ` [Ocfs2-devel] " Boaz Harrosh
2009-05-03 13:08     ` Boaz Harrosh
2009-05-03 23:08     ` [Ocfs2-devel] " Al Viro
2009-05-03 23:08       ` Al Viro
2009-05-04  2:49     ` [Ocfs2-devel] " Joel Becker
2009-05-04  2:49       ` Joel Becker
2009-05-03 23:45   ` [Ocfs2-devel] " Theodore Tso
2009-05-03 23:45     ` Theodore Tso
2009-05-04  1:44     ` [Ocfs2-devel] " Tao Ma
2009-05-04  1:44       ` Tao Ma
2009-05-04 18:25       ` [Ocfs2-devel] " Joel Becker
2009-05-04 18:25         ` Joel Becker
2009-05-04 21:18         ` [Ocfs2-devel] " Joel Becker
2009-05-04 21:18           ` Joel Becker
2009-05-04 22:23           ` Theodore Tso
2009-05-04 22:23             ` Theodore Tso
2009-05-05  6:55             ` Joel Becker
2009-05-05  6:55               ` Joel Becker
2009-05-05  1:07   ` Jamie Lokier
2009-05-05  1:07     ` Jamie Lokier
2009-05-05  7:16     ` [Ocfs2-devel] " Joel Becker
2009-05-05  7:16       ` Joel Becker
2009-05-05  8:09       ` [Ocfs2-devel] " Andreas Dilger
2009-05-05  8:09         ` Andreas Dilger
2009-05-05 16:56         ` [Ocfs2-devel] " Joel Becker
2009-05-05 16:56           ` Joel Becker
2009-05-05 21:24           ` [Ocfs2-devel] " Andreas Dilger
2009-05-05 21:24             ` Andreas Dilger
2009-05-05 21:32             ` [Ocfs2-devel] " Joel Becker
2009-05-05 21:32               ` Joel Becker
2009-05-06  7:15               ` [Ocfs2-devel] " Theodore Tso
2009-05-06  7:15                 ` Theodore Tso
2009-05-06 14:24                 ` jim owens
2009-05-06 14:24                   ` jim owens
2009-05-06 14:30                   ` jim owens
2009-05-06 14:30                     ` jim owens
2009-05-06 17:50                     ` jim owens
2009-05-06 17:50                       ` jim owens
2009-05-12 19:20                       ` Jamie Lokier
2009-05-12 19:20                         ` Jamie Lokier
2009-05-12 19:30                       ` Jamie Lokier
2009-05-12 19:30                         ` Jamie Lokier
2009-05-12 19:11                   ` Jamie Lokier
2009-05-12 19:11                     ` Jamie Lokier
2009-05-12 19:37                     ` jim owens
2009-05-12 19:37                       ` jim owens
2009-05-12 20:11                       ` Jamie Lokier
2009-05-12 20:11                         ` Jamie Lokier
2009-05-05 13:01       ` Theodore Tso
2009-05-05 13:01         ` Theodore Tso
2009-05-05 13:19         ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 13:19           ` Jamie Lokier
2009-05-05 13:39           ` [Ocfs2-devel] " Chris Mason
2009-05-05 13:39             ` Chris Mason
2009-05-05 15:36             ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 15:36               ` Jamie Lokier
2009-05-05 15:41               ` [Ocfs2-devel] " Chris Mason
2009-05-05 15:41                 ` Chris Mason
2009-05-05 16:03                 ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 16:03                   ` Jamie Lokier
2009-05-05 16:18                   ` [Ocfs2-devel] " Chris Mason
2009-05-05 16:18                     ` Chris Mason
2009-05-05 20:48                   ` [Ocfs2-devel] " jim owens
2009-05-05 20:48                     ` jim owens
2009-05-05 21:57                     ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 21:57                       ` Jamie Lokier
2009-05-05 22:04                       ` [Ocfs2-devel] " Joel Becker
2009-05-05 22:04                         ` Joel Becker
2009-05-05 22:11                         ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:11                           ` Jamie Lokier
2009-05-05 22:24                           ` [Ocfs2-devel] " Joel Becker
2009-05-05 22:24                             ` Joel Becker
2009-05-05 23:14                             ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 23:14                               ` Jamie Lokier
2009-05-05 22:12                         ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:12                           ` Jamie Lokier
2009-05-05 22:21                           ` [Ocfs2-devel] " Joel Becker
2009-05-05 22:21                             ` Joel Becker
2009-05-05 22:32                             ` [Ocfs2-devel] " James Morris
2009-05-05 22:32                               ` James Morris
2009-05-05 22:39                               ` [Ocfs2-devel] " Joel Becker
2009-05-05 22:39                                 ` Joel Becker
2009-05-12 19:40                               ` [Ocfs2-devel] " Jamie Lokier
2009-05-12 19:40                                 ` Jamie Lokier
2009-05-05 22:28                         ` [Ocfs2-devel] " jim owens
2009-05-05 22:28                           ` jim owens
2009-05-05 23:12                           ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 23:12                             ` Jamie Lokier
2009-05-05 16:46               ` [Ocfs2-devel] " Jörn Engel
2009-05-05 16:46                 ` Jörn Engel
2009-05-05 16:54                 ` [Ocfs2-devel] " Jörn Engel
2009-05-05 16:54                   ` Jörn Engel
2009-05-05 22:03                   ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:03                     ` Jamie Lokier
2009-05-05 21:44                 ` [Ocfs2-devel] copyfile semantics Andreas Dilger
2009-05-05 21:44                   ` Andreas Dilger
2009-05-05 21:48                   ` [Ocfs2-devel] " Matthew Wilcox
2009-05-05 21:48                     ` Matthew Wilcox
2009-05-05 22:25                     ` [Ocfs2-devel] " Trond Myklebust
2009-05-05 22:25                       ` Trond Myklebust
2009-05-05 22:06                   ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:06                     ` Jamie Lokier
2009-05-06  5:57                   ` [Ocfs2-devel] " Jörn Engel
2009-05-06  5:57                     ` Jörn Engel
2009-05-05 14:21           ` [Ocfs2-devel] [PATCH 1/3] fs: Document the reflink(2) system call Theodore Tso
2009-05-05 14:21             ` Theodore Tso
2009-05-05 15:32             ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 15:32               ` Jamie Lokier
2009-05-05 22:49             ` [Ocfs2-devel] " James Morris
2009-05-05 22:49               ` James Morris
2009-05-05 17:05           ` [Ocfs2-devel] " Joel Becker
2009-05-05 17:05             ` Joel Becker
2009-05-05 17:00         ` [Ocfs2-devel] " Joel Becker
2009-05-05 17:00           ` Joel Becker
2009-05-05 17:29           ` [Ocfs2-devel] " Theodore Tso
2009-05-05 17:29             ` Theodore Tso
2009-05-05 22:36             ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:36               ` Jamie Lokier
2009-05-05 22:30           ` [Ocfs2-devel] " Jamie Lokier
2009-05-05 22:30             ` Jamie Lokier
2009-05-05 22:37             ` [Ocfs2-devel] " Joel Becker
2009-05-05 22:37               ` Joel Becker
2009-05-05 23:08             ` [Ocfs2-devel] " jim owens
2009-05-05 23:08               ` jim owens
2009-05-05 13:01       ` Jamie Lokier [this message]
2009-05-05 13:01         ` Jamie Lokier
2009-05-05 17:09         ` [Ocfs2-devel] " Joel Becker
2009-05-05 17:09           ` Joel Becker
2009-05-03  6:15 ` [Ocfs2-devel] [PATCH 2/3] fs: Add vfs_reflink() and the ->reflink() inode operation Joel Becker
2009-05-03  6:15   ` Joel Becker
2009-05-03  8:03   ` [Ocfs2-devel] " Christoph Hellwig
2009-05-03  8:03     ` Christoph Hellwig
2009-05-04  2:51     ` [Ocfs2-devel] " Joel Becker
2009-05-04  2:51       ` Joel Becker
2009-05-03  6:15 ` [Ocfs2-devel] [PATCH 3/3] fs: Add the reflink(2) system call Joel Becker
2009-05-03  6:15   ` Joel Becker
2009-05-03  6:27   ` [Ocfs2-devel] " Matthew Wilcox
2009-05-03  6:27     ` Matthew Wilcox
2009-05-03  6:39     ` [Ocfs2-devel] " Al Viro
2009-05-03  6:39       ` Al Viro
2009-05-03  7:48       ` [Ocfs2-devel] " Christoph Hellwig
2009-05-03  7:48         ` Christoph Hellwig
2009-05-03 11:16         ` [Ocfs2-devel] " Al Viro
2009-05-03 11:16           ` Al Viro
2009-05-04  2:53       ` [Ocfs2-devel] " Joel Becker
2009-05-04  2:53         ` Joel Becker
2009-05-04  2:53     ` [Ocfs2-devel] " Joel Becker
2009-05-04  2:53       ` Joel Becker
2009-05-03  8:04   ` [Ocfs2-devel] " Christoph Hellwig
2009-05-03  8:04     ` Christoph Hellwig
2009-05-07 22:15 ` [Ocfs2-devel] [RFC] The reflink(2) system call v2 Joel Becker
2009-05-07 22:15   ` Joel Becker
2009-05-08  1:39   ` [Ocfs2-devel] " James Morris
2009-05-08  1:39     ` James Morris
2009-05-08  1:49     ` [Ocfs2-devel] " Joel Becker
2009-05-08  1:49       ` Joel Becker
2009-05-08 13:01       ` Tetsuo Handa
2009-05-08  2:59   ` [Ocfs2-devel] " jim owens
2009-05-08  2:59     ` jim owens
2009-05-08  3:10     ` [Ocfs2-devel] " Joel Becker
2009-05-08  3:10       ` Joel Becker
2009-05-08 11:53       ` [Ocfs2-devel] " jim owens
2009-05-08 11:53         ` jim owens
2009-05-08 12:16       ` [Ocfs2-devel] " jim owens
2009-05-08 12:16         ` jim owens
2009-05-08 14:11         ` [Ocfs2-devel] " jim owens
2009-05-08 14:11           ` jim owens
2009-05-11 20:40       ` [Ocfs2-devel] [RFC] The reflink(2) system call v4 Joel Becker
2009-05-11 20:40         ` Joel Becker
2009-05-11 22:27         ` [Ocfs2-devel] " James Morris
2009-05-11 22:27           ` James Morris
2009-05-11 22:34           ` [Ocfs2-devel] " Joel Becker
2009-05-11 22:34             ` Joel Becker
2009-05-12  1:12             ` [Ocfs2-devel] " James Morris
2009-05-12  1:12               ` James Morris
2009-05-12 12:18               ` [Ocfs2-devel] " Stephen Smalley
2009-05-12 12:18                 ` Stephen Smalley
2009-05-12 17:22                 ` [Ocfs2-devel] " Joel Becker
2009-05-12 17:22                   ` Joel Becker
2009-05-12 17:32                   ` [Ocfs2-devel] " Stephen Smalley
2009-05-12 17:32                     ` Stephen Smalley
2009-05-12 18:03                     ` [Ocfs2-devel] " Joel Becker
2009-05-12 18:03                       ` Joel Becker
2009-05-12 18:04                       ` [Ocfs2-devel] " Stephen Smalley
2009-05-12 18:04                         ` Stephen Smalley
2009-05-12 18:28                         ` [Ocfs2-devel] " Joel Becker
2009-05-12 18:28                           ` Joel Becker
2009-05-12 18:37                           ` [Ocfs2-devel] " Stephen Smalley
2009-05-12 18:37                             ` Stephen Smalley
2009-05-14 18:06                         ` [Ocfs2-devel] " Stephen Smalley
2009-05-14 18:06                           ` Stephen Smalley
2009-05-14 18:25                           ` [Ocfs2-devel] " Stephen Smalley
2009-05-14 18:25                             ` Stephen Smalley
2009-05-14 23:25                             ` [Ocfs2-devel] " James Morris
2009-05-14 23:25                               ` James Morris
2009-05-15 11:54                               ` [Ocfs2-devel] " Stephen Smalley
2009-05-15 11:54                                 ` Stephen Smalley
2009-05-15 13:35                                 ` [Ocfs2-devel] " James Morris
2009-05-15 13:35                                   ` James Morris
2009-05-15 15:44                                   ` [Ocfs2-devel] " Stephen Smalley
2009-05-15 15:44                                     ` Stephen Smalley
2009-05-13  1:47                       ` [Ocfs2-devel] " Casey Schaufler
2009-05-13  1:47                         ` Casey Schaufler
2009-05-13 16:43                         ` [Ocfs2-devel] " Joel Becker
2009-05-13 16:43                           ` Joel Becker
2009-05-13 17:23                           ` [Ocfs2-devel] " Stephen Smalley
2009-05-13 17:23                             ` Stephen Smalley
2009-05-13 18:27                             ` [Ocfs2-devel] " Joel Becker
2009-05-13 18:27                               ` Joel Becker
2009-05-12 12:01           ` [Ocfs2-devel] " Stephen Smalley
2009-05-12 12:01             ` Stephen Smalley
2009-05-11 23:11         ` [Ocfs2-devel] " jim owens
2009-05-11 23:11           ` jim owens
2009-05-11 23:42           ` [Ocfs2-devel] " Joel Becker
2009-05-11 23:42             ` Joel Becker
2009-05-12 11:31         ` [Ocfs2-devel] " Jörn Engel
2009-05-12 11:31           ` Jörn Engel
2009-05-12 13:12           ` [Ocfs2-devel] " jim owens
2009-05-12 13:12             ` jim owens
2009-05-12 20:24             ` [Ocfs2-devel] " Jamie Lokier
2009-05-12 20:24               ` Jamie Lokier
2009-05-14 18:43             ` [Ocfs2-devel] " Jörn Engel
2009-05-14 18:43               ` Jörn Engel
2009-05-12 15:04         ` [Ocfs2-devel] " Sage Weil
2009-05-12 15:04           ` Sage Weil
2009-05-12 15:23           ` [Ocfs2-devel] " jim owens
2009-05-12 15:23             ` jim owens
2009-05-12 16:16             ` [Ocfs2-devel] " Sage Weil
2009-05-12 16:16               ` Sage Weil
2009-05-12 17:45               ` [Ocfs2-devel] " jim owens
2009-05-12 17:45                 ` jim owens
2009-05-12 20:29                 ` [Ocfs2-devel] " Jamie Lokier
2009-05-12 20:29                   ` Jamie Lokier
2009-05-12 17:28           ` [Ocfs2-devel] " Joel Becker
2009-05-12 17:28             ` Joel Becker
2009-05-13  4:30             ` [Ocfs2-devel] " Sage Weil
2009-05-13  4:30               ` Sage Weil
2009-05-14  3:57         ` [Ocfs2-devel] " Andy Lutomirski
2009-05-14  3:57           ` Andy Lutomirski
2009-05-14 18:12           ` [Ocfs2-devel] " Stephen Smalley
2009-05-14 18:12             ` Stephen Smalley
2009-05-14 22:00             ` [Ocfs2-devel] " Joel Becker
2009-05-14 22:00               ` Joel Becker
2009-05-15  1:20               ` Jamie Lokier
2009-05-15  1:20               ` [Ocfs2-devel] " Jamie Lokier
2009-05-15 12:01               ` Stephen Smalley
2009-05-15 12:01                 ` Stephen Smalley
2009-05-15 15:22                 ` [Ocfs2-devel] " Joel Becker
2009-05-15 15:22                   ` Joel Becker
2009-05-15 15:55                   ` [Ocfs2-devel] " Stephen Smalley
2009-05-15 15:55                     ` Stephen Smalley
2009-05-15 16:42                     ` [Ocfs2-devel] " Joel Becker
2009-05-15 16:42                       ` Joel Becker
2009-05-15 17:01                       ` Shaya Potter
2009-05-15 17:01                       ` [Ocfs2-devel] " Shaya Potter
2009-05-15 20:53                       ` Joel Becker
2009-05-15 20:53                         ` Joel Becker
2009-05-18  9:17                         ` Jörn Engel
2009-05-18  9:17                           ` Jörn Engel
2009-05-18 13:02                         ` Stephen Smalley
2009-05-18 13:02                           ` Stephen Smalley
2009-05-18 14:33                           ` Stephen Smalley
2009-05-18 14:33                             ` Stephen Smalley
2009-05-18 17:15                             ` Stephen Smalley
2009-05-18 17:15                               ` Stephen Smalley
2009-05-18 18:26                           ` Joel Becker
2009-05-18 18:26                             ` Joel Becker
2009-05-19 16:32                             ` [Ocfs2-devel] " Sage Weil
2009-05-19 16:32                               ` Sage Weil
2009-05-19 19:20                         ` Jonathan Corbet
2009-05-19 19:32                           ` Joel Becker
2009-05-19 19:41                             ` Jonathan Corbet
2009-05-19 19:41                               ` Jonathan Corbet
2009-05-19 19:33                         ` Jonathan Corbet
2009-05-19 20:15                           ` Jamie Lokier
2009-05-25  7:44         ` [Ocfs2-devel] [RFC] The reflink(2) system call v4. - Question for suitability Mihail Daskalov
2009-05-25 20:42           ` Joel Becker
2009-05-28  0:24         ` [Ocfs2-devel] [RFC] The reflink(2) system call v5 Joel Becker
2009-05-28  0:24         ` Joel Becker
2009-09-14 22:24         ` Joel Becker
2009-09-14 22:24         ` [Ocfs2-devel] " Joel Becker
2009-09-14 22:24           ` Joel Becker
2009-05-11 20:49     ` [Ocfs2-devel] [RFC] The reflink(2) system call v2 Joel Becker
2009-05-11 20:49       ` Joel Becker
2009-05-11 22:49       ` [Ocfs2-devel] " jim owens
2009-05-11 22:49         ` jim owens
2009-05-11 23:46         ` [Ocfs2-devel] " Joel Becker
2009-05-11 23:46           ` Joel Becker
2009-05-12  0:54           ` [Ocfs2-devel] " Chris Mason
2009-05-12  0:54             ` Chris Mason
2009-05-12 20:36           ` [Ocfs2-devel] " Jamie Lokier
2009-05-12 20:36             ` Jamie Lokier

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=20090505130136.GE25328@shareable.org \
    --to=jamie@shareable.org \
    --cc=jmorris@namei.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=ocfs2-devel@oss.oracle.com \
    --cc=viro@zeniv.linux.org.uk \
    /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.