From: Alexander Motin Date: Wed, 8 May 2019 23:42:39 +0000 (-0400) Subject: Fix dataset name comparison in zfs_compare() X-Git-Tag: zfs-0.8.0~6 X-Git-Url: https://git.proxmox.com/?p=mirror_zfs.git;a=commitdiff_plain;h=4bb40c1c82f0c11d231cbb4e2bd3bee1b550ad0b Fix dataset name comparison in zfs_compare() The code never returned match comparing two datasets (not snapshots). As result, uu_avl_find(), called from zfs_callback(), never succeeded, allowing to add same dataset into the list multiple times, for example: # zfs get name pers pers pers@z pers@z NAME PROPERTY VALUE SOURCE pers name pers - pers name pers - pers@z name pers@z - With the patch: # zfs get name pers pers pers@z pers@z NAME PROPERTY VALUE SOURCE pers name pers - pers@z name pers@z - Reviewed by: Brian Behlendorf Reviewed-by: Igor Kozhukhov Signed-off-by: Alexander Motin Closes #8723 --- diff --git a/cmd/zfs/zfs_iter.c b/cmd/zfs/zfs_iter.c index d10bbed7d..f2359508c 100644 --- a/cmd/zfs/zfs_iter.c +++ b/cmd/zfs/zfs_iter.c @@ -240,7 +240,7 @@ zfs_compare(const void *larg, const void *rarg, void *unused) *rat = '\0'; ret = strcmp(lname, rname); - if (ret == 0) { + if (ret == 0 && (lat != NULL || rat != NULL)) { /* * If we're comparing a dataset to one of its snapshots, we * always make the full dataset first.