On Thu, Sep 06, 2018 at 05:18:13PM -0400, jeffm@xxxxxxxx wrote: > From: Jeff Mahoney <jeffm@xxxxxxxx> > > This patch set fixes a few issues with trim. > > 1) Fix device list iteration. We're iterating the ->alloc_list while > holding the device_list_mutex. The ->alloc_list is protected by > the chunk mutex and we don't want to hold it across the entire > trim execution. Instead, use the ->devices list, which is protected > by the device_list_mutex. > > 2) Skip trim on devices that don't support it. Rather than letting > the block layer reject it, bounce out early. > > 3) Don't keep the commit_root_sem locked and the transaction pinned > across the block layer component of trim. We only need these to > ensure the pending chunks list doesn't go away underneath us, so > it's safe to drop across the trim itself. Historically, this > caused issues when fstrim and balance would run at the same time > since balance would produce lots of transactions and would > have to wait constantly, causing problems for everything else that > wanted to start a transaction. > > -Jeff > --- > > Jeff Mahoney (3): > btrfs: use ->devices list instead of ->alloc_list in btrfs_trim_fs > btrfs: don't attempt to trim devices that don't support it > btrfs: keep trim from interfering with transaction commits The patches have been in for-next for some time, I'm moving them to misc-next now and will probably forward them to the next rc (5) with other trim fixes from Qu. Please note that the commit subject in the Fixes: tag should be in "...", I've fixed that.
