On 2/17/19 4:09 PM, Dave Chinner wrote:
On Sun, Feb 17, 2019 at 03:36:10PM -0500, Ric Wheeler wrote:
One proposal for btrfs was that we should look at getting discard
out of the synchronous path in order to minimize the slowdown
associated with enabling discard at mount time. Seems like an
obvious win for "hint" like operations like discard.
We already have support for that. blkdev_issue_discard() is
synchornous, yes, but __blkdev_issue_discard() will only build the
discard bio chain - it is up to the caller to submit and wait for it.

Some callers (XFS, dm-thinp, nvmet, etc) use a bio completion to
handle the discard IO completion, hence allowing async dispatch and
processing of the discard chain without blocking the caller. Others
(like ext4) simply call submit_bio_wait() to do wait synchronously
on completion of the discard bio chain.

I do wonder where we stand now with the cost of the various discard
commands - how painful is it for modern SSD's?
AIUI, it still depends on the SSD implementation, unfortunately.

I think the variability makes life really miserable for layers above it.

Might be worth constructing some tooling that we can use to validate or shame vendors over - testing things like a full device discard, discard of fs block size and big chunks, discard against already discarded, etc.

Regards,

Ric



Reply via email to