@@ -396,12 +396,24 @@ ZFS_LIST=$(env LC_ALL=C zfs list -H -t filesystem,volume -s name \
396396
397397if [ -n " $opt_fast_zfs_list " ]
398398then
399- SNAPSHOTS_OLD=$( env LC_ALL=C zfs list -H -t snapshot -o name -s name | \
400- grep $opt_prefix | \
401- awk ' { print substr( $0, length($0) - 14, length($0) ) " " $0}' | \
402- sort -r -k1,1 -k2,2 | \
403- awk ' { print substr( $0, 17, length($0) )}' ) \
404- || { print_log error " zfs list $? : $SNAPSHOTS_OLD " ; exit 137; }
399+ # Check if a snapshot label is being used, in which case restrict the old
400+ # snapshot removal to only snapshots with the same label format
401+ if [ -n " $opt_label " ]
402+ then
403+ SNAPSHOTS_OLD=$( env LC_ALL=C zfs list -H -t snapshot -o name -s name | \
404+ grep " $opt_prefix " _" $opt_label " | \
405+ awk ' { print substr( $0, length($0) - 14, length($0) ) " " $0}' | \
406+ sort -r -k1,1 -k2,2 | \
407+ awk ' { print substr( $0, 17, length($0) )}' ) \
408+ || { print_log error " zfs list $? : $SNAPSHOTS_OLD " ; exit 137; }
409+ else
410+ SNAPSHOTS_OLD=$( env LC_ALL=C zfs list -H -t snapshot -o name -s name | \
411+ grep $opt_prefix | \
412+ awk ' { print substr( $0, length($0) - 14, length($0) ) " " $0}' | \
413+ sort -r -k1,1 -k2,2 | \
414+ awk ' { print substr( $0, 17, length($0) )}' ) \
415+ || { print_log error " zfs list $? : $SNAPSHOTS_OLD " ; exit 137; }
416+ fi
405417else
406418 SNAPSHOTS_OLD=$( env LC_ALL=C zfs list -H -t snapshot -S creation -o name) \
407419 || { print_log error " zfs list $? : $SNAPSHOTS_OLD " ; exit 137; }
0 commit comments