[Ocfs2-devel] [RFC] The reflink(2) system call v2.

Chris Mason chris.mason at oracle.com
Mon May 11 17:54:37 PDT 2009


On Mon, 2009-05-11 at 16:46 -0700, Joel Becker wrote:
> On Mon, May 11, 2009 at 06:49:01PM -0400, jim owens wrote:
> > Joel Becker wrote:
> >> On Thu, May 07, 2009 at 10:59:04PM -0400, jim owens wrote:
> >>> - fix the
> >>> +	if (S_ISDIR(inode->i_mode))
> >>> +		return -EPERM;
> >>>
> >>>   to be an ISREG check unless you have an argument for
> >>>   special files and symlinks being COWed.
> >>
> >> 	Jim, if you have a real problem this prevents, I'm all ears.
> >> And if others concur that restricting it to regular files is the right
> >> way to go, I can be convinced.
> >
> > My only problem was my past experience on non-Linux systems
> > where once we said it works for multiple file types, we had
> > to support that forever across all filesystems.  We could add
> > support for more types but not eliminate supported ones.
> 
> 	Someone else pointed out that a naive user might reflink a block
> device file and expect the device contents to be copied-on-write.
> Obviously wrong if you understand filesystems, but let's just prevent
> that misunderstanding.  S_ISREG() it is.

Btrfs won't be doing single directories, and I'd rather keep using a
dedicated ioctl for snapshotting whole subvolumes.

The semantics described here all sound sane, if this looks like the
final-ish rev I'll try to find someone interested in wiring it up to the
btrfs clone ioctl.  It just needs a wrapper to create the new inode and
copy xattrs/acls over.

Thanks for doing all of this Joel.

-chris





More information about the Ocfs2-devel mailing list