public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <chris.mason@oracle.com>
To: Alberto Bertogli <albertito@blitiri.com.ar>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: Clone range ioctl
Date: Tue, 29 Sep 2009 12:51:22 -0400	[thread overview]
Message-ID: <20090929165122.GB2650@think> (raw)
In-Reply-To: <20090926194617.GW7592@blitiri.com.ar>

On Sat, Sep 26, 2009 at 04:46:20PM -0300, Alberto Bertogli wrote:
> 
> Hi!
> 
> Out of curiosity for btrfs, I'm modifying a project of mine
> (http://blitiri.com.ar/p/libjio) to use the clone range ioctl, and I've got a
> couple of questions. I thought this would be the place to ask them, I hope you
> don't mind:
> 
> - Once the ioctl() returns successfully, is data supposed to be on the disk,
>   or should I sync it manually (fdatasync()/sync_file_range())? From a quick
>   peek at the code it seems the former, but it'd be nice to get confirmation.

Yes, when the ioctl is done the file is on disk.  This is more of an
accident of the implementation than a requirement, but it isn't going to
change.

> - I've hit a couple of bugs (2.6.31's fs/btrfs/file.c:528, for example);
>   should I take a look and report them, or this code is not expected to work
>   yet?

I think this one was fixed by Sage, if you pull from the btrfs-unstable
git tree's master branch it should be resolved.

> - Are there any special considerations an application should take when using
>   it?

Since cloning reuses existing blocks, it may cause more seeking on reads
than a pure copy.

> - Since I need to use block-aligned offsets, how can I find out the
>   appropriate block size for a given file without being root? I've hardcoded
>   it to 4k for the time being, but I couldn't find out how to ask the
>   filesystem except for the BLKGETBSZ, which requires being root. I'm
>   obviously ok with a btrfs-only solution.

For btrfs you'll be safe using the page size.

> 
> If anyone could answer any of these (or point me to the relevant code), I'd
> really appreciate it.

Thanks for giving things a try.

-chris


  reply	other threads:[~2009-09-29 16:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-26 19:46 Clone range ioctl Alberto Bertogli
2009-09-29 16:51 ` Chris Mason [this message]
2009-10-10 19:26   ` Alberto Bertogli

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=20090929165122.GB2650@think \
    --to=chris.mason@oracle.com \
    --cc=albertito@blitiri.com.ar \
    --cc=linux-btrfs@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox