From afa382f2e087b71c9e626144f2f313abc42ad594 Mon Sep 17 00:00:00 2001 From: Stanislav Brabec Date: Wed, 25 Jan 2017 18:30:26 +0100 Subject: fstrim: de-duplicate btrfs sub-volumes There was a comparison of roots in uniq_fs_source_cmp(). As we care only on device names, comparing roots makes only a little sense, and it breaks on btrfs. As a result, FITRIM ioctl() is called for each subvolume. But by design, only one TRIM is needed for the whole btrfs volume. Remove it to be able to de-duplicate btrfs subvolumes. Fixes opensuse #1020077. Signed-off-by: Stanislav Brabec --- sys-utils/fstrim.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) (limited to 'sys-utils/fstrim.c') diff --git a/sys-utils/fstrim.c b/sys-utils/fstrim.c index e92a822f0..f252edba0 100644 --- a/sys-utils/fstrim.c +++ b/sys-utils/fstrim.c @@ -158,23 +158,11 @@ static int uniq_fs_source_cmp( struct libmnt_fs *a, struct libmnt_fs *b) { - int eq; - if (mnt_fs_is_pseudofs(a) || mnt_fs_is_netfs(a) || mnt_fs_is_pseudofs(b) || mnt_fs_is_netfs(b)) return 1; - eq = mnt_fs_streq_srcpath(a, mnt_fs_get_srcpath(b)); - if (eq) { - const char *aroot = mnt_fs_get_root(a), - *broot = mnt_fs_get_root(b); - if (!aroot || !broot) - eq = 0; - else if (strcmp(aroot, broot) != 0) - eq = 0; - } - - return !eq; + return !mnt_fs_streq_srcpath(a, mnt_fs_get_srcpath(b)); } /* -- cgit v1.2.3-55-g7522