Re: [PATCH RFC 1/3] block: Add support for REQ_OP_ASSIGN_RANGE operation

From: Darrick J. Wong
Date: Thu Dec 19 2019 - 20:55:24 EST


On Thu, Dec 19, 2019 at 05:37:47PM -0500, Martin K. Petersen wrote:
>
> Kirill,
>
> > Hm. BLKDEV_ZERO_NOUNMAP is used in __blkdev_issue_write_zeroes() only.
> > So, do I understand right that we should the below two?:
> >
> > 1) Introduce a new flag BLKDEV_ZERO_ALLOCATE for
> > blkdev_issue_write_zeroes().
>
> > 2) Introduce a new flag REQ_NOZERO in enum req_opf.
>
> Something like that. If zeroing is a problem for you.
>
> Right now we offer the following semantics:
>
> Deallocate, no zeroing (discard)
>
> Optionally deallocate, zeroing (zeroout)
>
> Allocate, zeroing (zeroout + NOUNMAP)
>
> Some devices also implement a fourth option which would be:
>
> Anchor: Allocate, no zeroing

What happens if you anchor and then try to read the results? IO error?

(Yeah, I'm being lazy and not digging through SBC-3, sorry...)

--D

> > Won't this confuse a reader that we have blkdev_issue_write_zeroes(),
> > which does not write zeroes sometimes? Maybe we should rename
> > blkdev_issue_write_zeroes() in some more generic name?
>
> Maybe. The naming is what it is for hysterical raisins and reflects how
> things are implemented in the storage protocols. I wouldn't worry too
> much about that. We can rename things if need be but we shouldn't plumb
> an essentially identical operation through the block stack just to
> expose a different name at the top.
>
> --
> Martin K. Petersen Oracle Linux Engineering