io-uring.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Damien Le Moal <Damien.LeMoal@wdc.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Kanchan Joshi <joshiiitr@gmail.com>,
	"hch@infradead.org" <hch@infradead.org>,
	Jens Axboe <axboe@kernel.dk>, Kanchan Joshi <joshi.k@samsung.com>,
	"viro@zeniv.linux.org.uk" <viro@zeniv.linux.org.uk>,
	"bcrl@kvack.org" <bcrl@kvack.org>,
	"asml.silence@gmail.com" <asml.silence@gmail.com>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	Matias Bj??rling <mb@lightnvm.io>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-aio@kvack.org" <linux-aio@kvack.org>,
	"io-uring@vger.kernel.org" <io-uring@vger.kernel.org>,
	"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
	Selvakumar S <selvakuma.s1@samsung.com>,
	Nitesh Shetty <nj.shetty@samsung.com>,
	Javier Gonzalez <javier.gonz@samsung.com>
Subject: Re: [PATCH v3 4/4] io_uring: add support for zone-append
Date: Tue, 21 Jul 2020 02:19:04 +0000	[thread overview]
Message-ID: <CY4PR04MB3751A6F034A6458AFA7A6550E7780@CY4PR04MB3751.namprd04.prod.outlook.com> (raw)
In-Reply-To: 20200721011509.GB15516@casper.infradead.org

On 2020/07/21 10:15, Matthew Wilcox wrote:
> On Tue, Jul 21, 2020 at 12:59:59AM +0000, Damien Le Moal wrote:
>> On 2020/07/21 5:17, Kanchan Joshi wrote:
>>> On Mon, Jul 20, 2020 at 10:44 PM Matthew Wilcox <willy@infradead.org> wrote:
>>>>  struct io_uring_cqe {
>>>>         __u64   user_data;      /* sqe->data submission passed back */
>>>> -       __s32   res;            /* result code for this event */
>>>> -       __u32   flags;
>>>> +       union {
>>>> +               struct {
>>>> +                       __s32   res;    /* result code for this event */
>>>> +                       __u32   flags;
>>>> +               };
>>>> +               __s64           res64;
>>>> +       };
>>>>  };
>>>>
>>>> Return the value in bytes in res64, or a negative errno.  Done.
>>>
>>> I concur. Can do away with bytes-copied. It's either in its entirety
>>> or not at all.
>>>
>>
>> SAS SMR drives may return a partial completion. So the size written may be less
>> than requested, but not necessarily 0, which would be an error anyway since any
>> condition that would lead to 0B being written will cause the drive to fail the
>> command with an error.
> 
> Why might it return a short write?  And, given how assiduous programmers
> are about checking for exceptional conditions, is it useful to tell
> userspace "only the first 512 bytes of your 2kB write made it to storage"?
> Or would we rather just tell userspace "you got an error" and _not_
> tell them that the first N bytes made it to storage?

If the write hits a bad sector on disk half-way through, a SAS drive may return
a short write with a non 0 residual. SATA drives will fail the entire command
and libata will retry the failed command. That said, if the drive fails to remap
a bad sector and return an error to the host, it is generally an indicator that
one should go to the store to get a new drive :)

Yes, you have a good point. Returning an error for the entire write would be
fine. The typical error handling for a failed write to a zone is for the user to
first do a zone report to inspect the zone condition and WP position, resync its
view of the zone state and restart the write in the same zone or somewhere else.
So failing the entire write is OK.
I am actually not 100% sure what the bio interface does if the "restart
remaining" of a partially failed request fails again after all retry attempts.
The entire BIO is I think failed. Need to check. So the high level user would
not see the partial failure as that stays within the scsi layer.

>> Also, the completed size should be in res in the first cqe to follow io_uring
>> current interface, no ?. The second cqe would use the res64 field to return the
>> written offset. Wasn't that the plan ?
> 
> two cqes for one sqe seems like a bad idea to me.

Yes, this is not very nice. I got lost in the thread. I thought that was the plan.


-- 
Damien Le Moal
Western Digital Research

  parent reply	other threads:[~2020-07-21  2:19 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20200705185204epcas5p3adeb4fc3473c5fc0472a7396783c5267@epcas5p3.samsung.com>
2020-07-05 18:47 ` [PATCH v3 0/4] zone-append support in io-uring and aio Kanchan Joshi
     [not found]   ` <CGME20200705185211epcas5p4059d05d2fcedb91829300a7a7d03fda3@epcas5p4.samsung.com>
2020-07-05 18:47     ` [PATCH v3 1/4] fs: introduce FMODE_ZONE_APPEND and IOCB_ZONE_APPEND Kanchan Joshi
     [not found]   ` <CGME20200705185217epcas5p1cc12d4b892f057a1fe06d73a00869daa@epcas5p1.samsung.com>
2020-07-05 18:47     ` [PATCH v3 2/4] block: add zone append handling for direct I/O path Kanchan Joshi
     [not found]   ` <CGME20200705185221epcas5p28b6d060df829b751109265222285da0e@epcas5p2.samsung.com>
2020-07-05 18:47     ` [PATCH v3 3/4] block: enable zone-append for iov_iter of bvec type Kanchan Joshi
     [not found]   ` <CGME20200705185227epcas5p16fba3cb92561794b960184c89fdf2bb7@epcas5p1.samsung.com>
2020-07-05 18:47     ` [PATCH v3 4/4] io_uring: add support for zone-append Kanchan Joshi
2020-07-05 21:00       ` Jens Axboe
2020-07-05 21:09         ` Matthew Wilcox
2020-07-05 21:12           ` Jens Axboe
2020-07-06 14:10             ` Matthew Wilcox
2020-07-06 14:27               ` Jens Axboe
2020-07-06 14:32                 ` Matthew Wilcox
2020-07-06 14:33                   ` Jens Axboe
2020-07-07 15:11                   ` Kanchan Joshi
2020-07-07 15:52                     ` Matthew Wilcox
2020-07-07 16:00                       ` Christoph Hellwig
2020-07-07 20:23                       ` Kanchan Joshi
2020-07-07 20:40                         ` Jens Axboe
2020-07-07 22:18                           ` Matthew Wilcox
2020-07-07 22:37                             ` Jens Axboe
2020-07-08 12:58                               ` Kanchan Joshi
2020-07-08 14:22                                 ` Matthew Wilcox
2020-07-08 16:41                                   ` Kanchan Joshi
2020-07-08 14:54                                 ` Jens Axboe
2020-07-08 14:58                                   ` Matthew Wilcox
2020-07-08 14:59                                     ` Jens Axboe
2020-07-08 15:02                                       ` Matthew Wilcox
2020-07-08 15:06                                         ` Jens Axboe
2020-07-08 16:08                                           ` Javier González
2020-07-08 16:33                                             ` Matthew Wilcox
2020-07-08 16:38                                               ` Jens Axboe
2020-07-08 17:13                                                 ` Kanchan Joshi
2020-07-08 16:43                                               ` Javier González
2020-07-06 13:58         ` Kanchan Joshi
2020-07-09 10:15         ` Christoph Hellwig
2020-07-09 13:58           ` Jens Axboe
2020-07-09 14:00             ` Christoph Hellwig
2020-07-09 14:05               ` Jens Axboe
2020-07-09 18:36                 ` Kanchan Joshi
2020-07-09 18:50                   ` Pavel Begunkov
2020-07-09 18:53                     ` Pavel Begunkov
2020-07-09 18:50                   ` Jens Axboe
2020-07-09 19:05                     ` Kanchan Joshi
2020-07-10 13:10                       ` Christoph Hellwig
2020-07-10 13:48                         ` Matthew Wilcox
2020-07-10 13:49                           ` Christoph Hellwig
2020-07-10 13:51                             ` Matthew Wilcox
2020-07-10 14:11                               ` Kanchan Joshi
2020-07-20 16:49                                 ` Kanchan Joshi
2020-07-20 17:14                                   ` Matthew Wilcox
2020-07-20 20:17                                     ` Kanchan Joshi
2020-07-21  0:59                                       ` Damien Le Moal
2020-07-21  1:15                                         ` Matthew Wilcox
2020-07-21  1:29                                           ` Jens Axboe
2020-07-21  2:19                                           ` Damien Le Moal [this message]
2020-07-10 14:09                         ` Jens Axboe
2020-07-20 16:46                           ` Kanchan Joshi
2020-07-10 13:09                     ` Christoph Hellwig
2020-07-10 13:29                       ` Kanchan Joshi
2020-07-10 13:43                         ` Christoph Hellwig
2020-07-20 17:02                           ` Kanchan Joshi
2020-07-10 13:57                         ` Kanchan Joshi

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=CY4PR04MB3751A6F034A6458AFA7A6550E7780@CY4PR04MB3751.namprd04.prod.outlook.com \
    --to=damien.lemoal@wdc.com \
    --cc=asml.silence@gmail.com \
    --cc=axboe@kernel.dk \
    --cc=bcrl@kvack.org \
    --cc=hch@infradead.org \
    --cc=io-uring@vger.kernel.org \
    --cc=javier.gonz@samsung.com \
    --cc=joshi.k@samsung.com \
    --cc=joshiiitr@gmail.com \
    --cc=linux-aio@kvack.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mb@lightnvm.io \
    --cc=nj.shetty@samsung.com \
    --cc=selvakuma.s1@samsung.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.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;
as well as URLs for NNTP newsgroup(s).