From: Dave Chinner <david@fromorbit.com>
To: Nitesh Shetty <nj.shetty@samsung.com>
Cc: javier@javigon.com, chaitanyak@nvidia.com,
linux-block@vger.kernel.org, linux-scsi@vger.kernel.org,
dm-devel@redhat.com, linux-nvme@lists.infradead.org,
linux-fsdevel@vger.kernel.org, axboe@kernel.dk,
msnitzer@redhat.com, bvanassche@acm.org,
martin.petersen@oracle.com, hare@suse.de, kbusch@kernel.org,
hch@lst.de, Frederick.Knight@netapp.com, osandov@fb.com,
lsf-pc@lists.linux-foundation.org, djwong@kernel.org,
josef@toxicpanda.com, clm@fb.com, dsterba@suse.com,
tytso@mit.edu, jack@suse.com, joshi.k@samsung.com,
arnav.dawn@samsung.com, nitheshshetty@gmail.com,
Alasdair Kergon <agk@redhat.com>,
Mike Snitzer <snitzer@redhat.com>,
Sagi Grimberg <sagi@grimberg.me>,
James Smart <james.smart@broadcom.com>,
Chaitanya Kulkarni <kch@nvidia.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 00/10] Add Copy offload support
Date: Wed, 23 Feb 2022 12:43:35 +1100 [thread overview]
Message-ID: <20220223014335.GH3061737@dread.disaster.area> (raw)
In-Reply-To: <20220217130215.GB3781@test-zns>
On Thu, Feb 17, 2022 at 06:32:15PM +0530, Nitesh Shetty wrote:
> Tue, Feb 15, 2022 at 09:08:12AM +1100, Dave Chinner wrote:
> > On Mon, Feb 14, 2022 at 01:29:50PM +0530, Nitesh Shetty wrote:
> > > [LSF/MM/BFP TOPIC] Storage: Copy Offload[0].
> > The biggest missing piece - and arguably the single most useful
> > piece of this functionality for users - is hooking this up to the
> > copy_file_range() syscall so that user file copies can be offloaded
> > to the hardware efficiently.
> >
> > This seems like it would relatively easy to do with an fs/iomap iter
> > loop that maps src + dst file ranges and issues block copy offload
> > commands on the extents. We already do similar "read from source,
> > write to destination" operations in iomap, so it's not a huge
> > stretch to extent the iomap interfaces to provide an copy offload
> > mechanism using this infrastructure.
> >
> > Also, hooking this up to copy-file-range() will also get you
> > immediate data integrity testing right down to the hardware via fsx
> > in fstests - it uses copy_file_range() as one of it's operations and
> > it will find all the off-by-one failures in both the linux IO stack
> > implementation and the hardware itself.
> >
> > And, in reality, I wouldn't trust a block copy offload mechanism
> > until it is integrated with filesystems, the page cache and has
> > solid end-to-end data integrity testing available to shake out all
> > the bugs that will inevitably exist in this stack....
>
> We had planned copy_file_range (CFR) in next phase of copy offload patch series.
> Thinking that we will get to CFR when everything else is robust.
> But if that is needed to make things robust, will start looking into that.
How do you make it robust when there is no locking/serialisation to
prevent overlapping concurrent IO while the copy-offload is in
progress? Or that you don't have overlapping concurrent
copy-offloads running at the same time?
You've basically created a block dev ioctl interface that looks
impossible to use safely. It doesn't appear to be coherent with the
blockdev page cache nor does it appear to have any documented data
integrity semantics, either. e.g. how does this interact with the
guarantees that fsync_bdev() and/or sync_blockdev() are supposed to
provide?
IOWs, if you don't have either CFR or some other strictly bound
kernel user with well defined access, synchronisation and integrity
semantics, how can anyone actually robustly test these ioctls to be
working correctly in all situations they might be called?
Cheers,
Dave.
--
Dave Chinner
david@fromorbit.com
prev parent reply other threads:[~2022-02-23 1:44 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220214080551epcas5p201d4d85e9d66077f97585bb3c64517c0@epcas5p2.samsung.com>
2022-02-14 7:59 ` [PATCH v3 00/10] Add Copy offload support Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 01/10] block: make bio_map_kern() non static Nitesh Shetty
2022-02-17 8:36 ` Luis Chamberlain
2022-02-17 13:30 ` Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 02/10] block: Introduce queue limits for copy-offload support Nitesh Shetty
2022-02-17 9:07 ` Luis Chamberlain
2022-02-17 10:16 ` Chaitanya Kulkarni
2022-02-17 17:49 ` Luis Chamberlain
2022-02-17 12:59 ` Nitesh Shetty
2022-02-23 0:55 ` Luis Chamberlain
2022-02-23 1:29 ` Damien Le Moal
2022-02-24 12:12 ` Nitesh Shetty
2022-02-24 12:02 ` Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 03/10] block: Add copy offload support infrastructure Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 04/10] block: Introduce a new ioctl for copy Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 05/10] block: add emulation " Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 06/10] nvme: add copy offload support Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 07/10] nvmet: add copy command support for bdev and file ns Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 08/10] dm: Add support for copy offload Nitesh Shetty
2022-02-22 16:00 ` Mike Snitzer
2022-02-24 12:26 ` Nitesh Shetty
2022-02-14 7:59 ` [PATCH v3 09/10] dm: Enable copy offload for dm-linear target Nitesh Shetty
2022-02-14 8:00 ` [PATCH v3 10/10] dm kcopyd: use copy offload support Nitesh Shetty
2022-02-14 22:08 ` [PATCH v3 00/10] Add Copy " Dave Chinner
2022-02-17 13:02 ` Nitesh Shetty
2022-02-23 1:43 ` Dave Chinner [this message]
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=20220223014335.GH3061737@dread.disaster.area \
--to=david@fromorbit.com \
--cc=Frederick.Knight@netapp.com \
--cc=agk@redhat.com \
--cc=arnav.dawn@samsung.com \
--cc=axboe@kernel.dk \
--cc=bvanassche@acm.org \
--cc=chaitanyak@nvidia.com \
--cc=clm@fb.com \
--cc=djwong@kernel.org \
--cc=dm-devel@redhat.com \
--cc=dsterba@suse.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jack@suse.com \
--cc=james.smart@broadcom.com \
--cc=javier@javigon.com \
--cc=josef@toxicpanda.com \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--cc=kch@nvidia.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-scsi@vger.kernel.org \
--cc=lsf-pc@lists.linux-foundation.org \
--cc=martin.petersen@oracle.com \
--cc=msnitzer@redhat.com \
--cc=nitheshshetty@gmail.com \
--cc=nj.shetty@samsung.com \
--cc=osandov@fb.com \
--cc=sagi@grimberg.me \
--cc=snitzer@redhat.com \
--cc=tytso@mit.edu \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox