diff options
author | delphij <delphij@FreeBSD.org> | 2013-07-30 21:02:09 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2013-07-30 21:02:09 +0000 |
commit | c5affee6a3a59d69c44d3493fa98bec9080bb11f (patch) | |
tree | 23a5763925ca6f88812017c8afbc82918ed35156 /cddl/contrib/opensolaris/lib/libzfs | |
parent | ef92cf9910e5912fe431aaad8b444da2aaae9741 (diff) | |
download | FreeBSD-src-c5affee6a3a59d69c44d3493fa98bec9080bb11f.zip FreeBSD-src-c5affee6a3a59d69c44d3493fa98bec9080bb11f.tar.gz |
MFV r253781 + r253871:
Illumos ZFS issues:
3894 zfs should not allow snapshot of inconsistent dataset
MFC after: 2 weeks
Diffstat (limited to 'cddl/contrib/opensolaris/lib/libzfs')
-rw-r--r-- | cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c index 3d96da2..7186c6f 100644 --- a/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c +++ b/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c @@ -1885,6 +1885,10 @@ get_numeric_property(zfs_handle_t *zhp, zfs_prop_t prop, zprop_source_t *src, zcmd_free_nvlists(&zc); break; + case ZFS_PROP_INCONSISTENT: + *val = zhp->zfs_dmustats.dds_inconsistent; + break; + default: switch (zfs_prop_get_type(prop)) { case PROP_TYPE_NUMBER: @@ -3379,13 +3383,16 @@ zfs_snapshot_cb(zfs_handle_t *zhp, void *arg) char name[ZFS_MAXNAMELEN]; int rv = 0; - (void) snprintf(name, sizeof (name), - "%s@%s", zfs_get_name(zhp), sd->sd_snapname); + if (zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) == 0) { + (void) snprintf(name, sizeof (name), + "%s@%s", zfs_get_name(zhp), sd->sd_snapname); - fnvlist_add_boolean(sd->sd_nvl, name); + fnvlist_add_boolean(sd->sd_nvl, name); - rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); + rv = zfs_iter_filesystems(zhp, zfs_snapshot_cb, sd); + } zfs_close(zhp); + return (rv); } |