Skip to content
Permalink
Browse files

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 <behlendorf1@llnl.gov>
Reviewed-by: Igor Kozhukhov <igor@dilos.org>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Closes #8723
  • Loading branch information...
amotin authored and behlendorf committed May 8, 2019
1 parent 97aa3ba commit 4bb40c1c82f0c11d231cbb4e2bd3bee1b550ad0b
Showing with 1 addition and 1 deletion.
  1. +1 −1 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.

0 comments on commit 4bb40c1

Please sign in to comment.
You can’t perform that action at this time.