Author: avg
Date: Tue May 17 08:18:19 2016
New Revision: 300026
URL: https://svnweb.freebsd.org/changeset/base/300026

Log:
  MFC r298472: MFV r298471: 6052 decouple lzc_create() from the
  implementation details

Modified:
  stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
  stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
  stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h
  stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
Directory Properties:
  stable/9/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
  stable/9/cddl/contrib/opensolaris/lib/libzfs_core/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/cddl/contrib/opensolaris/   (props changed)

Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
==============================================================================
--- stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c        
Tue May 17 07:56:45 2016        (r300025)
+++ stable/9/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c        
Tue May 17 08:18:19 2016        (r300026)
@@ -3086,7 +3086,7 @@ zfs_create(libzfs_handle_t *hdl, const c
        uint64_t blocksize = zfs_prop_default_numeric(ZFS_PROP_VOLBLOCKSIZE);
        char errbuf[1024];
        uint64_t zoned;
-       dmu_objset_type_t ost;
+       enum lzc_dataset_type ost;
 
        (void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
            "cannot create '%s'"), path);
@@ -3113,9 +3113,9 @@ zfs_create(libzfs_handle_t *hdl, const c
        }
 
        if (type == ZFS_TYPE_VOLUME)
-               ost = DMU_OST_ZVOL;
+               ost = LZC_DATSET_TYPE_ZVOL;
        else
-               ost = DMU_OST_ZFS;
+               ost = LZC_DATSET_TYPE_ZFS;
 
        if (props && (props = zfs_valid_proplist(hdl, type, props,
            zoned, NULL, errbuf)) == 0)

Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
==============================================================================
--- stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c      
Tue May 17 07:56:45 2016        (r300025)
+++ stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c      
Tue May 17 08:18:19 2016        (r300026)
@@ -217,11 +217,11 @@ out:
 }
 
 int
-lzc_create(const char *fsname, dmu_objset_type_t type, nvlist_t *props)
+lzc_create(const char *fsname, enum lzc_dataset_type type, nvlist_t *props)
 {
        int error;
        nvlist_t *args = fnvlist_alloc();
-       fnvlist_add_int32(args, "type", type);
+       fnvlist_add_int32(args, "type", (dmu_objset_type_t)type);
        if (props != NULL)
                fnvlist_add_nvlist(args, "props", props);
        error = lzc_ioctl(ZFS_IOC_CREATE, fsname, args, NULL);

Modified: stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h
==============================================================================
--- stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h      
Tue May 17 07:56:45 2016        (r300025)
+++ stable/9/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h      
Tue May 17 08:18:19 2016        (r300026)
@@ -30,7 +30,6 @@
 #include <libnvpair.h>
 #include <sys/param.h>
 #include <sys/types.h>
-#include <sys/fs/zfs.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -39,8 +38,16 @@ extern "C" {
 int libzfs_core_init(void);
 void libzfs_core_fini(void);
 
+/*
+ * NB: this type should be kept binary compatible with dmu_objset_type_t.
+ */
+enum lzc_dataset_type {
+       LZC_DATSET_TYPE_ZFS = 2,
+       LZC_DATSET_TYPE_ZVOL
+};
+
 int lzc_snapshot(nvlist_t *, nvlist_t *, nvlist_t **);
-int lzc_create(const char *, dmu_objset_type_t, nvlist_t *);
+int lzc_create(const char *, enum lzc_dataset_type, nvlist_t *);
 int lzc_clone(const char *, const char *, nvlist_t *);
 int lzc_destroy_snaps(nvlist_t *, boolean_t, nvlist_t **);
 int lzc_bookmark(nvlist_t *, nvlist_t **);

Modified: stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
==============================================================================
--- stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h       Tue May 
17 07:56:45 2016        (r300025)
+++ stable/9/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h       Tue May 
17 08:18:19 2016        (r300026)
@@ -56,6 +56,10 @@ typedef enum {
        ZFS_TYPE_BOOKMARK       = (1 << 4)
 } zfs_type_t;
 
+/*
+ * NB: lzc_dataset_type should be updated whenever a new objset type is added,
+ * if it represents a real type of a dataset that can be created from userland.
+ */
 typedef enum dmu_objset_type {
        DMU_OST_NONE,
        DMU_OST_META,
_______________________________________________
svn-src-stable-9@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "svn-src-stable-9-unsubscr...@freebsd.org"

Reply via email to