From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out4-smtp.messagingengine.com ([66.111.4.28]:36805 "EHLO out4-smtp.messagingengine.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726683AbeK2XZS (ORCPT ); Thu, 29 Nov 2018 18:25:18 -0500 Date: Thu, 29 Nov 2018 13:20:02 +0100 From: Greg KH To: Nikolay Borisov Cc: stable@vger.kernel.org, wqu@suse.com, David Sterba Subject: Re: [PATCH 3/3] btrfs: Ensure btrfs_trim_fs can trim the whole filesystem Message-ID: <20181129122002.GB3149@kroah.com> References: <1541967127232224@kroah.com> <20181120072556.362-1-nborisov@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181120072556.362-1-nborisov@suse.com> Sender: stable-owner@vger.kernel.org List-ID: On Tue, Nov 20, 2018 at 09:25:56AM +0200, Nikolay Borisov wrote: > From: Qu Wenruo > > [BUG] > fstrim on some btrfs only trims the unallocated space, not trimming any > space in existing block groups. > > [CAUSE] > Before fstrim_range passed to btrfs_trim_fs(), it gets truncated to > range [0, super->total_bytes). So later btrfs_trim_fs() will only be > able to trim block groups in range [0, super->total_bytes). > > While for btrfs, any bytenr aligned to sectorsize is valid, since btrfs > uses its logical address space, there is nothing limiting the location > where we put block groups. > > For filesystem with frequent balance, it's quite easy to relocate all > block groups and bytenr of block groups will start beyond > super->total_bytes. > > In that case, btrfs will not trim existing block groups. > > [FIX] > Just remove the truncation in btrfs_ioctl_fitrim(), so btrfs_trim_fs() > can get the unmodified range, which is normally set to [0, U64_MAX]. > > Reported-by: Chris Murphy > Fixes: f4c697e6406d ("btrfs: return EINVAL if start > total_bytes in fitrim ioctl") > CC: # v4.4+ > Signed-off-by: Qu Wenruo > Reviewed-by: Nikolay Borisov > Reviewed-by: David Sterba > Signed-off-by: David Sterba > --- > > Hello Greg, > > Please apply upstream commit 6ba9fc8e628becf0e3ec94083450d089b0dec5f5 to > 4.4.y and 4.9.y. This backport should apply cleanly to both trees. This is already in 4.9.141, so I only applied it to 4.4.y thanks, greg k-h