All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boaz Harrosh <bharrosh@panasas.com>
To: Joel Becker <joel.becker@oracle.com>
Cc: 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: Sun, 03 May 2009 16:08:59 +0300	[thread overview]
Message-ID: <49FD976B.3000508@panasas.com> (raw)
In-Reply-To: <1241331303-23753-2-git-send-email-joel.becker@oracle.com>

On 05/03/2009 09:15 AM, Joel Becker wrote:
> int reflink(const char *oldpath, const char *newpath);
> 
> The reflink(2) system call creates reference-counted links.  It creates
> a new file that shares the data extents of the source file in a
> copy-on-write fashion.  Its calling semantics are identical to link(2).
> Once complete, programs see the new file as a completely separate entry.
> 

Please forgive my complete Unix jargon novice-ness, but from here it looks like the
name is very wrong, and confusing.

if I put data to link graph then:

[data]<--[hard-link (one or more)]<--[soft-link(zero or more)]

The data is other-wise just there on disk but is un available until
it is linked to a dir-entry, at-least one. The middle hard-link is reference
counted and once all uses are removed data can be garbage collected. Soft links
don't follow on-disk data but follow a dir-entry. So if we have a completely
different on disk data we're still in agreement with the dir-entry.

In the graph above and has explained below. there is no reference counting
going on:
> +- The link count of the source file is unchanged, and the link count of
> +  the new file is one.

And and the "link" meaning is very vaguely kept, only half way until the next
write. (If it can be called a link at all being a different inode and cached
twice)

As my first impression when I read the title of the patch, an English reflink
I would imagine is something more to the left of above graph, between hard-link
and soft-link, something like: link to an invisible dir-entry that is gone once
all soft-links to it are gone.

So form my point of view. Call it something different like Copy-On-Write or
COW.

I do understand that there is something very fundamental in my misunderstanding,
but it was not explained below, in fact the below terminology confused me even
more. Please explain?

> Signed-off-by: Joel Becker <joel.becker@oracle.com>
> ---
>  Documentation/filesystems/reflink.txt |  129 +++++++++++++++++++++++++++++++++
>  Documentation/filesystems/vfs.txt     |    4 +
>  2 files changed, 133 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/filesystems/reflink.txt
> 
> diff --git a/Documentation/filesystems/reflink.txt b/Documentation/filesystems/reflink.txt
> new file mode 100644
> index 0000000..f3620f0
> --- /dev/null
> +++ b/Documentation/filesystems/reflink.txt
> @@ -0,0 +1,129 @@
> +reflink(2)
> +==========
> +
> +NAME
> +----
> +reflink - make a reference-counted link of a file
> +
> +
> +SYNOPSIS
> +--------
> +#include <unistd.h>
> +
> +int reflink(const char *oldpath, const char *newpath);
> +
> +DESCRIPTION
> +-----------
> +reflink() creates a new reflink (also known as a reference-counted link)
> +to an existing file.  This reflink is a new file object that shares the
> +attributes and data extents of the source object in a copy-on-write fashion.
> +

This is exactly my confusion how is the logical jump made from reflink (reference/link)
to copy-on-write. I fail to see any logical connection.

> +An easy way to think of it is that the semantics of the reflink() call
> +are identical to the link(2) system call, but the resulting file object
> +behaves as if it were a copy with identical attributes.
> +
> +Like the link(2) system call, if newpath exists, it will not be overwritten.
> +oldpath must be a regular file.  oldpath and newpath must be on the same
> +mounted filesystem.
> +
> +All data extents of the new file must be shared with the source file in
> +a copy-on-write fashion.  This includes data extents for extended
> +attributes.  If either the source or new files are written to, the
> +changes do not show up in the other file.
> +
> +All file attributes and extended attributes of the new file must
> +identical to the source file with the following exceptions:
> +
> +- The new file must have a new inode number.  This allows POSIX
> +  programs to treat the source and new files as separate objects.  From
> +  the view of the POSIX application, the files are distinct.  The
> +  sharing is invisible outside the filesystem.
> +- 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.
> +- The mtime of the source file is unmodified, and the mtime of the new file
> +  is set identical to the source file.  This reflects that the data is
> +  unchanged.
> +- The link count of the source file is unchanged, and the link count of
> +  the new file is one.
> +
> +RETURN VALUE
> +------------
> +On success, zero is returned.  On error, -1 is returned, and errno is
> +set appropriately.
> +
> +ERRORS
> +------
> +EACCES::
> +	Write access to the directory containing newpath is denied, or
> +	search permission is denied for one of the directories in the
> +	path prefix of oldpath or newpath.  (See also path_resolution(7).)
> +
> +EEXIST::
> +	newpath already exists.
> +
> +EFAULT::
> +	oldpath or newpath points outside your accessible address space.
> +
> +EIO::
> +	An I/O error occurred.
> +
> +ELOOP::
> +	Too many symbolic links were encountered in resolving oldpath or
> +	newpath.
> +
> +ENAMETOOLONG::
> +	oldpath or newpath was too long.
> +
> +ENOENT::
> +	A directory component in oldpath or newpath does not exist or is
> +	a dangling symbolic link.
> +
> +ENOMEM::
> +	Insufficient kernel memory was available.
> +
> +ENOSPC::
> +	The device containing the file has no room for the new directory
> +	entry or file object.
> +
> +ENOTDIR::
> +	A component used as a directory in oldpath or newpath is not, in
> +	fact, a directory.
> +
> +EPERM::
> +	oldpath is a directory.
> +
> +EPERM::
> +	The file system containing oldpath and newpath does not support
> +	the creation of reference-counted links.
> +
> +EROFS::
> +	The file is on a read-only file system.
> +
> +EXDEV::
> +	oldpath and newpath are not on the same mounted file system.
> +	(Linux permits a file system to be mounted at multiple points,
> +	but reflink() does not work across different mount points, even if
> +	the same file system is mounted on both.)
> +
> +VERSIONS
> +--------
> +reflink() is available on Linux since kernel 2.6.31.
> +
> +CONFORMING TO
> +-------------
> +reflink() is Linux-specific.
> +
> +NOTES
> +-----
> +reflink() deferences symbolic links in the same manner that link(2)
> +does.  For precise control over the treatment of symbolic links, see
> +reflinkat().
> +
> +In the case of a crash, the new file must not appear partially complete
> +in the filesystem.
> +
> +SEE ALSO
> +--------
> +ln(1), reflink(1), reflinkat(2), path_resolution(7)
> +
> diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
> index f49eecf..01cd810 100644
> --- a/Documentation/filesystems/vfs.txt
> +++ b/Documentation/filesystems/vfs.txt
> @@ -333,6 +333,7 @@ struct inode_operations {
>  	ssize_t (*listxattr) (struct dentry *, char *, size_t);
>  	int (*removexattr) (struct dentry *, const char *);
>  	void (*truncate_range)(struct inode *, loff_t, loff_t);
> +	int (*reflink) (struct dentry *,struct inode *,struct dentry *);
>  };
>  
>  Again, all methods are called without any locks being held, unless
> @@ -431,6 +432,9 @@ otherwise noted.
>  
>    truncate_range: a method provided by the underlying filesystem to truncate a
>    	range of blocks , i.e. punch a hole somewhere in a file.
> +  reflink: called by the reflink(2) system call. Only required if you want
> +	to support reflinks.  For further information, see
> +	Documentation/filesystems/reflink.txt.
>  
>  
>  The Address Space Object

Please forgive my ignorance, again I would honestly like to understand, and
how else, then to just ask?

Thanks in advance
Boaz

WARNING: multiple messages have this Message-ID (diff)
From: Boaz Harrosh <bharrosh@panasas.com>
To: Joel Becker <joel.becker@oracle.com>
Cc: 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: Sun, 03 May 2009 16:08:59 +0300	[thread overview]
Message-ID: <49FD976B.3000508@panasas.com> (raw)
In-Reply-To: <1241331303-23753-2-git-send-email-joel.becker@oracle.com>

On 05/03/2009 09:15 AM, Joel Becker wrote:
> int reflink(const char *oldpath, const char *newpath);
> 
> The reflink(2) system call creates reference-counted links.  It creates
> a new file that shares the data extents of the source file in a
> copy-on-write fashion.  Its calling semantics are identical to link(2).
> Once complete, programs see the new file as a completely separate entry.
> 

Please forgive my complete Unix jargon novice-ness, but from here it looks like the
name is very wrong, and confusing.

if I put data to link graph then:

[data]<--[hard-link (one or more)]<--[soft-link(zero or more)]

The data is other-wise just there on disk but is un available until
it is linked to a dir-entry, at-least one. The middle hard-link is reference
counted and once all uses are removed data can be garbage collected. Soft links
don't follow on-disk data but follow a dir-entry. So if we have a completely
different on disk data we're still in agreement with the dir-entry.

In the graph above and has explained below. there is no reference counting
going on:
> +- The link count of the source file is unchanged, and the link count of
> +  the new file is one.

And and the "link" meaning is very vaguely kept, only half way until the next
write. (If it can be called a link at all being a different inode and cached
twice)

As my first impression when I read the title of the patch, an English reflink
I would imagine is something more to the left of above graph, between hard-link
and soft-link, something like: link to an invisible dir-entry that is gone once
all soft-links to it are gone.

So form my point of view. Call it something different like Copy-On-Write or
COW.

I do understand that there is something very fundamental in my misunderstanding,
but it was not explained below, in fact the below terminology confused me even
more. Please explain?

> Signed-off-by: Joel Becker <joel.becker@oracle.com>
> ---
>  Documentation/filesystems/reflink.txt |  129 +++++++++++++++++++++++++++++++++
>  Documentation/filesystems/vfs.txt     |    4 +
>  2 files changed, 133 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/filesystems/reflink.txt
> 
> diff --git a/Documentation/filesystems/reflink.txt b/Documentation/filesystems/reflink.txt
> new file mode 100644
> index 0000000..f3620f0
> --- /dev/null
> +++ b/Documentation/filesystems/reflink.txt
> @@ -0,0 +1,129 @@
> +reflink(2)
> +==========
> +
> +NAME
> +----
> +reflink - make a reference-counted link of a file
> +
> +
> +SYNOPSIS
> +--------
> +#include <unistd.h>
> +
> +int reflink(const char *oldpath, const char *newpath);
> +
> +DESCRIPTION
> +-----------
> +reflink() creates a new reflink (also known as a reference-counted link)
> +to an existing file.  This reflink is a new file object that shares the
> +attributes and data extents of the source object in a copy-on-write fashion.
> +

This is exactly my confusion how is the logical jump made from reflink (reference/link)
to copy-on-write. I fail to see any logical connection.

> +An easy way to think of it is that the semantics of the reflink() call
> +are identical to the link(2) system call, but the resulting file object
> +behaves as if it were a copy with identical attributes.
> +
> +Like the link(2) system call, if newpath exists, it will not be overwritten.
> +oldpath must be a regular file.  oldpath and newpath must be on the same
> +mounted filesystem.
> +
> +All data extents of the new file must be shared with the source file in
> +a copy-on-write fashion.  This includes data extents for extended
> +attributes.  If either the source or new files are written to, the
> +changes do not show up in the other file.
> +
> +All file attributes and extended attributes of the new file must
> +identical to the source file with the following exceptions:
> +
> +- The new file must have a new inode number.  This allows POSIX
> +  programs to treat the source and new files as separate objects.  From
> +  the view of the POSIX application, the files are distinct.  The
> +  sharing is invisible outside the filesystem.
> +- 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.
> +- The mtime of the source file is unmodified, and the mtime of the new file
> +  is set identical to the source file.  This reflects that the data is
> +  unchanged.
> +- The link count of the source file is unchanged, and the link count of
> +  the new file is one.
> +
> +RETURN VALUE
> +------------
> +On success, zero is returned.  On error, -1 is returned, and errno is
> +set appropriately.
> +
> +ERRORS
> +------
> +EACCES::
> +	Write access to the directory containing newpath is denied, or
> +	search permission is denied for one of the directories in the
> +	path prefix of oldpath or newpath.  (See also path_resolution(7).)
> +
> +EEXIST::
> +	newpath already exists.
> +
> +EFAULT::
> +	oldpath or newpath points outside your accessible address space.
> +
> +EIO::
> +	An I/O error occurred.
> +
> +ELOOP::
> +	Too many symbolic links were encountered in resolving oldpath or
> +	newpath.
> +
> +ENAMETOOLONG::
> +	oldpath or newpath was too long.
> +
> +ENOENT::
> +	A directory component in oldpath or newpath does not exist or is
> +	a dangling symbolic link.
> +
> +ENOMEM::
> +	Insufficient kernel memory was available.
> +
> +ENOSPC::
> +	The device containing the file has no room for the new directory
> +	entry or file object.
> +
> +ENOTDIR::
> +	A component used as a directory in oldpath or newpath is not, in
> +	fact, a directory.
> +
> +EPERM::
> +	oldpath is a directory.
> +
> +EPERM::
> +	The file system containing oldpath and newpath does not support
> +	the creation of reference-counted links.
> +
> +EROFS::
> +	The file is on a read-only file system.
> +
> +EXDEV::
> +	oldpath and newpath are not on the same mounted file system.
> +	(Linux permits a file system to be mounted at multiple points,
> +	but reflink() does not work across different mount points, even if
> +	the same file system is mounted on both.)
> +
> +VERSIONS
> +--------
> +reflink() is available on Linux since kernel 2.6.31.
> +
> +CONFORMING TO
> +-------------
> +reflink() is Linux-specific.
> +
> +NOTES
> +-----
> +reflink() deferences symbolic links in the same manner that link(2)
> +does.  For precise control over the treatment of symbolic links, see
> +reflinkat().
> +
> +In the case of a crash, the new file must not appear partially complete
> +in the filesystem.
> +
> +SEE ALSO
> +--------
> +ln(1), reflink(1), reflinkat(2), path_resolution(7)
> +
> diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
> index f49eecf..01cd810 100644
> --- a/Documentation/filesystems/vfs.txt
> +++ b/Documentation/filesystems/vfs.txt
> @@ -333,6 +333,7 @@ struct inode_operations {
>  	ssize_t (*listxattr) (struct dentry *, char *, size_t);
>  	int (*removexattr) (struct dentry *, const char *);
>  	void (*truncate_range)(struct inode *, loff_t, loff_t);
> +	int (*reflink) (struct dentry *,struct inode *,struct dentry *);
>  };
>  
>  Again, all methods are called without any locks being held, unless
> @@ -431,6 +432,9 @@ otherwise noted.
>  
>    truncate_range: a method provided by the underlying filesystem to truncate a
>    	range of blocks , i.e. punch a hole somewhere in a file.
> +  reflink: called by the reflink(2) system call. Only required if you want
> +	to support reflinks.  For further information, see
> +	Documentation/filesystems/reflink.txt.
>  
>  
>  The Address Space Object

Please forgive my ignorance, again I would honestly like to understand, and
how else, then to just ask?

Thanks in advance
Boaz

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

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