Author: delphij
Date: Mon Jul 29 20:31:44 2013
New Revision: 253781
URL: http://svnweb.freebsd.org/changeset/base/253781

Log:
  Update vendor/illumos/dist and vendor-sys/illumos/dist
  to illumos-gate 14089:520f3adc5d46:
  
  Illumos ZFS issues:
    3894 zfs should not allow snapshot of inconsistent dataset

Modified:
  vendor/illumos/dist/cmd/zfs/zfs_main.c
  vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c

Changes in other areas also in this revision:
Modified:
  vendor-sys/illumos/dist/common/zfs/zfs_prop.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/dmu_send.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/dsl_dataset.c
  vendor-sys/illumos/dist/uts/common/fs/zfs/sys/dsl_dataset.h

Modified: vendor/illumos/dist/cmd/zfs/zfs_main.c
==============================================================================
--- vendor/illumos/dist/cmd/zfs/zfs_main.c      Mon Jul 29 20:26:33 2013        
(r253780)
+++ vendor/illumos/dist/cmd/zfs/zfs_main.c      Mon Jul 29 20:31:44 2013        
(r253781)
@@ -3461,6 +3461,12 @@ zfs_snapshot_cb(zfs_handle_t *zhp, void 
        int rv = 0;
        int error;
 
+       if (sd->sd_recursive &&
+           zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) != 0) {
+               zfs_close(zhp);
+               return (0);
+       }
+
        error = asprintf(&name, "%s@%s", zfs_get_name(zhp), sd->sd_snapname);
        if (error == -1)
                nomem();

Modified: vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c
==============================================================================
--- vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c      Mon Jul 29 
20:26:33 2013        (r253780)
+++ vendor/illumos/dist/lib/libzfs/common/libzfs_dataset.c      Mon Jul 29 
20:31:44 2013        (r253781)
@@ -1843,6 +1843,10 @@ get_numeric_property(zfs_handle_t *zhp, 
                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:
@@ -3325,13 +3329,16 @@ zfs_snapshot_cb(zfs_handle_t *zhp, void 
        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);
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to