Re: [LSF/MM TOPIC] More async operations for file systems - async discard?
From: Ric Wheeler <hidden>
Date: 2019-02-17 23:43:06
Also in:
linux-block, linux-btrfs, linux-fsdevel, linux-xfs
From: Ric Wheeler <hidden>
Date: 2019-02-17 23:43:06
Also in:
linux-block, linux-btrfs, linux-fsdevel, linux-xfs
On 2/17/19 4:09 PM, Dave Chinner wrote:
On Sun, Feb 17, 2019 at 03:36:10PM -0500, Ric Wheeler wrote:quoted
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.quoted
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