summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Ahrens <mahrens@delphix.com>2016-06-09 10:38:27 -0400
committerMatthew Ahrens <mahrens@delphix.com>2016-06-09 15:55:53 -0400
commit9adfa60d484ce2435f5af77cc99dcd4e692b6660 (patch)
tree8317e936fc768f79567bf498076c3fbab777adc6
parent0c779ad424a92a84d1e07d47cab7f8009189202b (diff)
downloadillumos-gate-9adfa60d484ce2435f5af77cc99dcd4e692b6660.tar.gz
6314 buffer overflow in dsl_dataset_name
Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Prakash Surya <prakash.surya@delphix.com> Reviewed by: Igor Kozhukhov <ikozhukhov@gmail.com> Approved by: Dan McDonald <danmcd@omniti.com>
-rw-r--r--usr/src/cmd/beadm/beadm.c8
-rw-r--r--usr/src/cmd/boot/bootadm/bootadm.c17
-rw-r--r--usr/src/cmd/halt/halt.c7
-rw-r--r--usr/src/cmd/mdb/common/modules/zfs/zfs.c10
-rw-r--r--usr/src/cmd/ndmpd/include/tlm.h5
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd.h7
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd_chkpnt.c21
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd_dtime.c7
-rw-r--r--usr/src/cmd/ndmpd/ndmp/ndmpd_zfs.c57
-rw-r--r--usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c23
-rw-r--r--usr/src/cmd/ndmpd/tlm/tlm_lib.c15
-rw-r--r--usr/src/cmd/oamuser/user/homedir.c4
-rw-r--r--usr/src/cmd/zdb/zdb.c5
-rw-r--r--usr/src/cmd/zfs/zfs_main.c30
-rw-r--r--usr/src/cmd/zhack/zhack.c1
-rw-r--r--usr/src/cmd/zoneadm/zfs.c18
-rw-r--r--usr/src/cmd/ztest/ztest.c84
-rw-r--r--usr/src/common/zfs/zfs_namecheck.c18
-rw-r--r--usr/src/lib/libbe/common/be_create.c14
-rw-r--r--usr/src/lib/libbe/common/be_mount.c9
-rw-r--r--usr/src/lib/libbe/common/be_utils.c8
-rw-r--r--usr/src/lib/libbe/common/libbe_priv.h6
-rw-r--r--usr/src/lib/libzfs/common/libzfs.h2
-rw-r--r--usr/src/lib/libzfs/common/libzfs_changelist.c3
-rw-r--r--usr/src/lib/libzfs/common/libzfs_dataset.c30
-rw-r--r--usr/src/lib/libzfs/common/libzfs_diff.c3
-rw-r--r--usr/src/lib/libzfs/common/libzfs_impl.h10
-rw-r--r--usr/src/lib/libzfs/common/libzfs_iter.c6
-rw-r--r--usr/src/lib/libzfs/common/libzfs_mount.c2
-rw-r--r--usr/src/lib/libzfs/common/libzfs_pool.c8
-rw-r--r--usr/src/lib/libzfs/common/libzfs_sendrecv.c51
-rw-r--r--usr/src/lib/libzfs_core/common/libzfs_core.c14
-rw-r--r--usr/src/lib/libzfs_jni/common/libzfs_jni_dataset.c6
-rw-r--r--usr/src/lib/libzfs_jni/common/libzfs_jni_property.c5
-rw-r--r--usr/src/uts/common/fs/zfs/dmu_objset.c14
-rw-r--r--usr/src/uts/common/fs/zfs/dmu_send.c14
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_bookmark.c4
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_dataset.c50
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_deleg.c4
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_dir.c25
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_prop.c4
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_scan.c4
-rw-r--r--usr/src/uts/common/fs/zfs/dsl_userhold.c6
-rw-r--r--usr/src/uts/common/fs/zfs/spa.c11
-rw-r--r--usr/src/uts/common/fs/zfs/spa_history.c6
-rw-r--r--usr/src/uts/common/fs/zfs/sys/dmu.h2
-rw-r--r--usr/src/uts/common/fs/zfs/sys/dsl_dataset.h7
-rw-r--r--usr/src/uts/common/fs/zfs/sys/dsl_dir.h7
-rw-r--r--usr/src/uts/common/fs/zfs/sys/spa_impl.h2
-rw-r--r--usr/src/uts/common/fs/zfs/sys/zap.h2
-rw-r--r--usr/src/uts/common/fs/zfs/sys/zfs_znode.h13
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_ctldir.c36
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_ioctl.c23
-rw-r--r--usr/src/uts/common/fs/zfs/zfs_vfsops.c4
-rw-r--r--usr/src/uts/common/fs/zfs/zil.c2
-rw-r--r--usr/src/uts/common/sys/fs/zfs.h4
56 files changed, 391 insertions, 367 deletions
diff --git a/usr/src/cmd/beadm/beadm.c b/usr/src/cmd/beadm/beadm.c
index 1341c3ad6d..dc4aab5b59 100644
--- a/usr/src/cmd/beadm/beadm.c
+++ b/usr/src/cmd/beadm/beadm.c
@@ -21,12 +21,10 @@
/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 Toomas Soome <tsoome@me.com>
* Copyright 2015 Gary Mills
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -288,7 +286,7 @@ count_widths(enum be_fmt be_fmt, struct hdr_info *hdr, be_node_list_t *be_nodes)
len[i] = hdr->cols[i].width;
for (cur_be = be_nodes; cur_be != NULL; cur_be = cur_be->be_next_node) {
- char name[ZFS_MAXNAMELEN+1];
+ char name[ZFS_MAX_DATASET_NAME_LEN + 1];
const char *be_name = cur_be->be_node_name;
const char *root_ds = cur_be->be_root_ds;
char *pos;
@@ -432,7 +430,7 @@ print_be_snapshots(be_node_list_t *be, struct hdr_info *hdr, boolean_t parsable)
for (snap = be->be_node_snapshots; snap != NULL;
snap = snap->be_next_snapshot) {
- char name[ZFS_MAXNAMELEN+1];
+ char name[ZFS_MAX_DATASET_NAME_LEN + 1];
const char *datetime_fmt = "%F %R";
const char *be_name = be->be_node_name;
const char *root_ds = be->be_root_ds;
diff --git a/usr/src/cmd/boot/bootadm/bootadm.c b/usr/src/cmd/boot/bootadm/bootadm.c
index c520301579..6e653470f1 100644
--- a/usr/src/cmd/boot/bootadm/bootadm.c
+++ b/usr/src/cmd/boot/bootadm/bootadm.c
@@ -20,11 +20,12 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2012 Milan Jurik. All rights reserved.
*/
/*
+ * Copyright 2012 Milan Jurik. All rights reserved.
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -3228,7 +3229,7 @@ is_be(char *root)
be_node_list_t *be_nodes = NULL;
be_node_list_t *cur_be;
boolean_t be_exist = B_FALSE;
- char ds_path[ZFS_MAXNAMELEN];
+ char ds_path[ZFS_MAX_DATASET_NAME_LEN];
if (!is_zfs(root))
return (B_FALSE);
@@ -4972,12 +4973,12 @@ list_entry(menu_t *mp, char *menu_path, char *opt)
int
add_boot_entry(menu_t *mp,
- char *title,
- char *findroot,
- char *kernel,
- char *mod_kernel,
- char *module,
- char *bootfs)
+ char *title,
+ char *findroot,
+ char *kernel,
+ char *mod_kernel,
+ char *module,
+ char *bootfs)
{
int lineNum;
int entryNum;
diff --git a/usr/src/cmd/halt/halt.c b/usr/src/cmd/halt/halt.c
index 36867c88dc..59f089e0b3 100644
--- a/usr/src/cmd/halt/halt.c
+++ b/usr/src/cmd/halt/halt.c
@@ -24,6 +24,7 @@
*/
/*
* Copyright (c) 2013, Joyent, Inc. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
@@ -719,7 +720,7 @@ validate_zfs_err_out:
*/
static int
get_zfs_bootfs_arg(const char *arg, const char ** fpth, int *is_zfs,
- char *bootfs_arg)
+ char *bootfs_arg)
{
zfs_handle_t *zhp = NULL;
zpool_handle_t *zpoolp = NULL;
@@ -727,8 +728,8 @@ get_zfs_bootfs_arg(const char *arg, const char ** fpth, int *is_zfs,
struct mnttab mnt;
char *poolname = NULL;
char physpath[MAXPATHLEN];
- char mntsp[ZPOOL_MAXNAMELEN];
- char bootfs[ZPOOL_MAXNAMELEN];
+ char mntsp[ZFS_MAX_DATASET_NAME_LEN];
+ char bootfs[ZFS_MAX_DATASET_NAME_LEN];
int rc = 0;
size_t mntlen = 0;
size_t msz;
diff --git a/usr/src/cmd/mdb/common/modules/zfs/zfs.c b/usr/src/cmd/mdb/common/modules/zfs/zfs.c
index 2dc45f778b..697349b020 100644
--- a/usr/src/cmd/mdb/common/modules/zfs/zfs.c
+++ b/usr/src/cmd/mdb/common/modules/zfs/zfs.c
@@ -230,7 +230,7 @@ mdb_dsl_dir_name(uintptr_t addr, char *buf)
static int gotid;
static mdb_ctf_id_t dd_id;
uintptr_t dd_parent;
- char dd_myname[MAXNAMELEN];
+ char dd_myname[ZFS_MAX_DATASET_NAME_LEN];
if (!gotid) {
if (mdb_ctf_lookup_by_name(ZFS_STRUCT "dsl_dir",
@@ -265,7 +265,7 @@ objset_name(uintptr_t addr, char *buf)
static int gotid;
static mdb_ctf_id_t os_id, ds_id;
uintptr_t os_dsl_dataset;
- char ds_snapname[MAXNAMELEN];
+ char ds_snapname[ZFS_MAX_DATASET_NAME_LEN];
uintptr_t ds_dir;
buf[0] = '\0';
@@ -466,7 +466,7 @@ dbuf(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
mdb_dmu_buf_impl_t db;
char objectname[32];
char blkidname[32];
- char path[MAXNAMELEN];
+ char path[ZFS_MAX_DATASET_NAME_LEN];
int ptr_width = (int)(sizeof (void *)) * 2;
if (DCMD_HDRSPEC(flags))
@@ -725,7 +725,7 @@ dbufs_cb(uintptr_t addr, const void *unknown, void *arg)
dmu_buf_t db;
uint8_t level;
uint64_t blkid;
- char osname[MAXNAMELEN];
+ char osname[ZFS_MAX_DATASET_NAME_LEN];
if (GETMEMBID(addr, &data->id, db_objset, objset) ||
GETMEMBID(addr, &data->id, db, db) ||
@@ -1079,7 +1079,7 @@ arc_print(uintptr_t addr, uint_t flags, int argc, const mdb_arg_t *argv)
typedef struct mdb_spa_print {
pool_state_t spa_state;
- char spa_name[MAXNAMELEN];
+ char spa_name[ZFS_MAX_DATASET_NAME_LEN];
} mdb_spa_print_t;
/*
diff --git a/usr/src/cmd/ndmpd/include/tlm.h b/usr/src/cmd/ndmpd/include/tlm.h
index 799cf1e277..f382d2eca3 100644
--- a/usr/src/cmd/ndmpd/include/tlm.h
+++ b/usr/src/cmd/ndmpd/include/tlm.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -475,7 +476,7 @@ typedef struct ndmp_metadata_property {
} ndmp_metadata_property_t;
typedef struct ndmp_metadata_property_ext {
- char mp_name[ZFS_MAXNAMELEN];
+ char mp_name[ZFS_MAX_DATASET_NAME_LEN];
char mp_value[ZFS_MAXPROPLEN];
char mp_source[ZFS_MAXPROPLEN];
} ndmp_metadata_property_ext_t;
@@ -498,7 +499,7 @@ typedef struct ndmp_metadata_header {
/* Extended metadata format */
typedef struct ndmp_metadata_header_ext {
ndmp_metadata_top_header_t nh_hdr;
- char nh_dataset[ZFS_MAXNAMELEN];
+ char nh_dataset[ZFS_MAX_DATASET_NAME_LEN];
int32_t nh_total_bytes;
int32_t nh_major;
int32_t nh_minor;
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd.h b/usr/src/cmd/ndmpd/ndmp/ndmpd.h
index 3a39a04a7d..4f9fcd9a09 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd.h
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd.h
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -456,9 +457,9 @@ typedef struct {
typedef struct ndmpd_zfs_args {
zfs_type_t nz_type; /* type of ZFS dataset */
- char nz_dataset[ZFS_MAXNAMELEN]; /* dataset name */
- char nz_snapname[ZFS_MAXNAMELEN]; /* snapname (following '@') */
- char nz_fromsnap[ZFS_MAXNAMELEN]; /* snap of L-1 bkup */
+ char nz_dataset[ZFS_MAX_DATASET_NAME_LEN]; /* dataset name */
+ char nz_snapname[ZFS_MAX_DATASET_NAME_LEN]; /* snapname (following @) */
+ char nz_fromsnap[ZFS_MAX_DATASET_NAME_LEN]; /* snap of L-1 bkup */
char nz_snapprop[ZFS_MAXPROPLEN]; /* contents of snap incr prop */
boolean_t nz_ndmpd_snap; /* ndmpd-generated snap? */
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd_chkpnt.c b/usr/src/cmd/ndmpd/ndmp/ndmpd_chkpnt.c
index ea391590db..ac086b7cf8 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_chkpnt.c
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_chkpnt.c
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2015 by Delphix. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
* Copyright (c) 2016 Martin Matuska. All rights reserved.
*/
@@ -103,7 +103,7 @@ ndmp_has_backup_snapshot(char *volname, char *jobname)
{
zfs_handle_t *zhp;
snap_param_t snp;
- char chname[ZFS_MAXNAMELEN];
+ char chname[ZFS_MAX_DATASET_NAME_LEN];
(void) mutex_lock(&zlib_mtx);
if ((zhp = zfs_open(zlibh, volname, ZFS_TYPE_DATASET)) == 0) {
@@ -113,7 +113,7 @@ ndmp_has_backup_snapshot(char *volname, char *jobname)
}
snp.snp_found = 0;
- (void) snprintf(chname, ZFS_MAXNAMELEN, "@%s", jobname);
+ (void) snprintf(chname, ZFS_MAX_DATASET_NAME_LEN, "@%s", jobname);
snp.snp_name = chname;
(void) zfs_iter_snapshots(zhp, B_FALSE, ndmp_has_backup, &snp);
@@ -140,7 +140,7 @@ ndmp_has_backup_snapshot(char *volname, char *jobname)
int
ndmp_create_snapshot(char *vol_name, char *jname)
{
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
if (vol_name == 0 ||
get_zfsvolname(vol, sizeof (vol), vol_name) == -1)
@@ -174,7 +174,7 @@ ndmp_create_snapshot(char *vol_name, char *jname)
int
ndmp_remove_snapshot(char *vol_name, char *jname)
{
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
if (vol_name == 0 ||
get_zfsvolname(vol, sizeof (vol), vol_name) == -1)
@@ -247,13 +247,14 @@ int
snapshot_create(char *volname, char *jname, boolean_t recursive,
boolean_t hold)
{
- char snapname[ZFS_MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
int rv;
if (!volname || !*volname)
return (-1);
- (void) snprintf(snapname, ZFS_MAXNAMELEN, "%s@%s", volname, jname);
+ (void) snprintf(snapname, ZFS_MAX_DATASET_NAME_LEN,
+ "%s@%s", volname, jname);
(void) mutex_lock(&zlib_mtx);
if ((rv = zfs_snapshot(zlibh, snapname, recursive, NULL))
@@ -287,7 +288,7 @@ int
snapshot_destroy(char *volname, char *jname, boolean_t recursive,
boolean_t hold, int *zfs_err)
{
- char snapname[ZFS_MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *zhp;
zfs_type_t ztype;
char *namep;
@@ -303,8 +304,8 @@ snapshot_destroy(char *volname, char *jname, boolean_t recursive,
ztype = ZFS_TYPE_VOLUME | ZFS_TYPE_FILESYSTEM;
namep = volname;
} else {
- (void) snprintf(snapname, ZFS_MAXNAMELEN, "%s@%s", volname,
- jname);
+ (void) snprintf(snapname, ZFS_MAX_DATASET_NAME_LEN,
+ "%s@%s", volname, jname);
namep = snapname;
ztype = ZFS_TYPE_SNAPSHOT;
}
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd_dtime.c b/usr/src/cmd/ndmpd/ndmp/ndmpd_dtime.c
index 132f88a2da..bf197dd9b7 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_dtime.c
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_dtime.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -832,7 +833,7 @@ ndmpd_get_dumptime(char *path, int *level, time_t *ddate)
{
int i;
dumpdates_t ddhead, *ddp, *save;
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
nvlist_t *userprops;
zfs_handle_t *zhp;
nvlist_t *propval = NULL;
@@ -956,7 +957,7 @@ ndmpd_get_dumptime(char *path, int *level, time_t *ddate)
int
ndmpd_put_dumptime(char *path, int level, time_t ddate)
{
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *zhp;
char tbuf[64];
int rv;
@@ -993,7 +994,7 @@ ndmpd_put_dumptime(char *path, int level, time_t ddate)
int
ndmpd_append_dumptime(char *fname, char *path, int level, time_t ddate)
{
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *zhp;
char tbuf[64];
int rv;
diff --git a/usr/src/cmd/ndmpd/ndmp/ndmpd_zfs.c b/usr/src/cmd/ndmpd/ndmp/ndmpd_zfs.c
index e37cfb68c4..c124794fc4 100644
--- a/usr/src/cmd/ndmpd/ndmp/ndmpd_zfs.c
+++ b/usr/src/cmd/ndmpd/ndmp/ndmpd_zfs.c
@@ -1,6 +1,6 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
*/
/*
@@ -57,7 +57,7 @@
typedef struct {
char nzs_findprop[ZFS_MAXPROPLEN]; /* prop substring to find */
- char nzs_snapname[ZFS_MAXNAMELEN]; /* snap's name */
+ char nzs_snapname[ZFS_MAX_DATASET_NAME_LEN]; /* snap's name */
char nzs_snapprop[ZFS_MAXPROPLEN]; /* snap's prop value */
char nzs_snapskip[ZFS_MAXPROPLEN]; /* snap to skip */
uint32_t nzs_prop_major; /* property major version */
@@ -1071,13 +1071,14 @@ ndmpd_zfs_pre_restore(ndmpd_zfs_args_t *ndmpd_zfs_args)
ndmpd_session_t *session = (ndmpd_session_t *)
(ndmpd_zfs_params->mp_daemon_cookie);
ndmp_context_t *nctxp = &ndmpd_zfs_args->nz_nctx;
- char bkpath[ZFS_MAXNAMELEN];
+ char bkpath[ZFS_MAX_DATASET_NAME_LEN];
int err;
if (ndmp_pl == NULL || ndmp_pl->np_pre_restore == NULL)
return (0);
- err = ndmpd_zfs_backup_getpath(ndmpd_zfs_args, bkpath, ZFS_MAXNAMELEN);
+ err = ndmpd_zfs_backup_getpath(ndmpd_zfs_args, bkpath,
+ ZFS_MAX_DATASET_NAME_LEN);
if (err != 0) {
NDMP_LOG(LOG_DEBUG, "error getting bkup path: %d", err);
@@ -1152,7 +1153,7 @@ ndmpd_zfs_backup_parms_valid(ndmpd_zfs_args_t *ndmpd_zfs_args)
}
(void) strlcpy(ndmpd_zfs_args->nz_fromsnap,
- snapdata.nzs_snapname, ZFS_MAXNAMELEN);
+ snapdata.nzs_snapname, ZFS_MAX_DATASET_NAME_LEN);
}
return (B_TRUE);
@@ -1167,14 +1168,14 @@ ndmpd_zfs_backup_parms_valid(ndmpd_zfs_args_t *ndmpd_zfs_args)
static boolean_t
ndmpd_zfs_backup_pathvalid(ndmpd_zfs_args_t *ndmpd_zfs_args)
{
- char zpath[ZFS_MAXNAMELEN];
+ char zpath[ZFS_MAX_DATASET_NAME_LEN];
char propstr[ZFS_MAXPROPLEN];
zfs_handle_t *zhp;
zfs_type_t ztype = 0;
int err;
- if (ndmpd_zfs_backup_getpath(ndmpd_zfs_args, zpath, ZFS_MAXNAMELEN)
- != 0)
+ if (ndmpd_zfs_backup_getpath(ndmpd_zfs_args, zpath,
+ ZFS_MAX_DATASET_NAME_LEN) != 0)
return (B_FALSE);
if (ndmpd_zfs_args->nz_snapname[0] != '\0') {
@@ -1259,13 +1260,13 @@ ndmpd_zfs_backup_getpath(ndmpd_zfs_args_t *ndmpd_zfs_args, char *zpath,
(void) strlcpy(zpath, &env_path[1], zlen);
(void) strlcpy(ndmpd_zfs_args->nz_dataset, &env_path[1],
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
at = strchr(ndmpd_zfs_args->nz_dataset, '@');
if (at) {
*at = '\0';
(void) strlcpy(ndmpd_zfs_args->nz_snapname, ++at,
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
} else {
ndmpd_zfs_args->nz_snapname[0] = '\0';
}
@@ -1349,7 +1350,7 @@ static int
ndmpd_zfs_restore_getpath(ndmpd_zfs_args_t *ndmpd_zfs_args)
{
int version = ndmpd_zfs_params->mp_protocol_version;
- char zpath[ZFS_MAXNAMELEN];
+ char zpath[ZFS_MAX_DATASET_NAME_LEN];
mem_ndmp_name_v3_t *namep_v3;
char *dataset = ndmpd_zfs_args->nz_dataset;
char *nm;
@@ -1357,8 +1358,6 @@ ndmpd_zfs_restore_getpath(ndmpd_zfs_args_t *ndmpd_zfs_args)
int len;
int err;
- dataset = ndmpd_zfs_args->nz_dataset;
-
namep_v3 = (mem_ndmp_name_v3_t *)MOD_GETNAME(ndmpd_zfs_params, 0);
if (namep_v3 == NULL) {
@@ -1375,12 +1374,12 @@ ndmpd_zfs_restore_getpath(ndmpd_zfs_args_t *ndmpd_zfs_args)
}
(void) strlcpy(dataset, &(namep_v3->nm3_dpath[1]),
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
if (namep_v3->nm3_newnm) {
- (void) strlcat(dataset, "/", ZFS_MAXNAMELEN);
+ (void) strlcat(dataset, "/", ZFS_MAX_DATASET_NAME_LEN);
(void) strlcat(dataset, namep_v3->nm3_newnm,
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
} else {
if (version == NDMPV3) {
@@ -1392,13 +1391,15 @@ ndmpd_zfs_restore_getpath(ndmpd_zfs_args_t *ndmpd_zfs_args)
*/
p = strrchr(namep_v3->nm3_opath, '/');
nm = p? p : namep_v3->nm3_opath;
- (void) strlcat(dataset, "/", ZFS_MAXNAMELEN);
- (void) strlcat(dataset, nm, ZFS_MAXNAMELEN);
+ (void) strlcat(dataset, "/",
+ ZFS_MAX_DATASET_NAME_LEN);
+ (void) strlcat(dataset, nm,
+ ZFS_MAX_DATASET_NAME_LEN);
}
}
} else {
err = ndmpd_zfs_backup_getpath(ndmpd_zfs_args, zpath,
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
if (err)
return (err);
}
@@ -1784,8 +1785,8 @@ ndmpd_zfs_snapshot_cleanup(ndmpd_zfs_args_t *ndmpd_zfs_args, int err)
* upon for user-supplied snapshots.)
*/
- (void) snprintf(snapdata.nzs_snapskip, ZFS_MAXNAMELEN, "%s",
- ndmpd_zfs_args->nz_snapname);
+ (void) snprintf(snapdata.nzs_snapskip, ZFS_MAX_DATASET_NAME_LEN,
+ "%s", ndmpd_zfs_args->nz_snapname);
if (ndmpd_zfs_snapshot_find(ndmpd_zfs_args, &snapdata)) {
NDMP_LOG(LOG_DEBUG, "ndmpd_zfs_snapshot_find error\n");
@@ -1812,7 +1813,7 @@ ndmpd_zfs_snapshot_cleanup(ndmpd_zfs_args_t *ndmpd_zfs_args, int err)
_remove_tmp_snap:
- (void) snprintf(snapdata.nzs_snapname, ZFS_MAXNAMELEN, "%s",
+ (void) snprintf(snapdata.nzs_snapname, ZFS_MAX_DATASET_NAME_LEN, "%s",
ndmpd_zfs_args->nz_snapname);
(void) strlcpy(snapdata.nzs_snapprop, ndmpd_zfs_args->nz_snapprop,
@@ -1838,7 +1839,7 @@ ndmpd_zfs_snapshot_create(ndmpd_zfs_args_t *ndmpd_zfs_args)
boolean_t recursive = B_FALSE;
if (ndmpd_zfs_snapname_create(ndmpd_zfs_args,
- ndmpd_zfs_args->nz_snapname, ZFS_MAXNAMELEN -1) < 0) {
+ ndmpd_zfs_args->nz_snapname, ZFS_MAX_DATASET_NAME_LEN - 1) < 0) {
NDMP_LOG(LOG_ERR, "Error (%d) creating snapshot name for %s",
errno, ndmpd_zfs_args->nz_dataset);
return (-1);
@@ -2015,7 +2016,7 @@ ndmpd_zfs_snapshot_prop_find(zfs_handle_t *zhp, void *arg)
if (strcmp(justsnap, snapdata_p->nzs_snapskip) != 0) {
(void) strlcpy(snapdata_p->nzs_snapname, justsnap,
- ZFS_MAXNAMELEN);
+ ZFS_MAX_DATASET_NAME_LEN);
(void) strlcpy(snapdata_p->nzs_snapprop, propstr,
ZFS_MAXPROPLEN);
@@ -2088,13 +2089,13 @@ ndmpd_zfs_snapshot_prop_get(zfs_handle_t *zhp, char *propstr)
static int
ndmpd_zfs_snapshot_prop_add(ndmpd_zfs_args_t *ndmpd_zfs_args)
{
- char fullname[ZFS_MAXNAMELEN];
+ char fullname[ZFS_MAX_DATASET_NAME_LEN];
char propstr[ZFS_MAXPROPLEN];
zfs_handle_t *zhp;
boolean_t set;
int err;
- (void) snprintf(fullname, ZFS_MAXNAMELEN, "%s@%s",
+ (void) snprintf(fullname, ZFS_MAX_DATASET_NAME_LEN, "%s@%s",
ndmpd_zfs_args->nz_dataset,
ndmpd_zfs_args->nz_snapname);
@@ -2211,14 +2212,14 @@ ndmpd_zfs_snapshot_prop_remove(ndmpd_zfs_args_t *ndmpd_zfs_args,
ndmpd_zfs_snapfind_t *snapdata_p)
{
char findprop_plus_slash[ZFS_MAXPROPLEN];
- char fullname[ZFS_MAXNAMELEN];
+ char fullname[ZFS_MAX_DATASET_NAME_LEN];
char newprop[ZFS_MAXPROPLEN];
char tmpstr[ZFS_MAXPROPLEN];
zfs_handle_t *zhp;
char *ptr;
int err;
- (void) snprintf(fullname, ZFS_MAXNAMELEN, "%s@%s",
+ (void) snprintf(fullname, ZFS_MAX_DATASET_NAME_LEN, "%s@%s",
ndmpd_zfs_args->nz_dataset,
snapdata_p->nzs_snapname);
diff --git a/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c b/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c
index c677572015..a3ca1a2c40 100644
--- a/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c
+++ b/usr/src/cmd/ndmpd/tlm/tlm_backup_reader.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -1225,7 +1226,8 @@ zfs_put_prop_cb(int prop, void *pp)
return (ZPROP_CONT);
}
- (void) strlcpy(mpp->mp_name, zfs_prop_to_name(prop), ZFS_MAXNAMELEN);
+ (void) strlcpy(mpp->mp_name, zfs_prop_to_name(prop),
+ ZFS_MAX_DATASET_NAME_LEN);
(void) strlcpy(mpp->mp_value, vbuf, ZFS_MAXPROPLEN);
switch (stype) {
@@ -1281,12 +1283,13 @@ zfs_put_quota_cb(void *pp, const char *domain, uid_t rid, uint64_t space)
else
typestr = "groupquota";
- if (domain == NULL || *domain == '\0')
- (void) snprintf(mpp->mp_name, ZFS_MAXNAMELEN, "%s@%llu",
- typestr, (longlong_t)rid);
- else
- (void) snprintf(mpp->mp_name, ZFS_MAXNAMELEN, "%s@%s-%llu",
- typestr, domain, (longlong_t)rid);
+ if (domain == NULL || *domain == '\0') {
+ (void) snprintf(mpp->mp_name, ZFS_MAX_DATASET_NAME_LEN,
+ "%s@%llu", typestr, (longlong_t)rid);
+ } else {
+ (void) snprintf(mpp->mp_name, ZFS_MAX_DATASET_NAME_LEN,
+ "%s@%s-%llu", typestr, domain, (longlong_t)rid);
+ }
(void) snprintf(mpp->mp_value, ZFS_MAXPROPLEN, "%llu", space);
(void) strlcpy(mpp->mp_source, mhp->nh_dataset, ZFS_MAXPROPLEN);
@@ -1429,8 +1432,10 @@ ndmp_include_zfs(ndmp_context_t *nctx, const char *dataset)
free(mhp);
return (-1);
}
- if ((pname = nvpair_name(elp)) != NULL)
- (void) strlcpy(mpp->mp_name, pname, ZFS_MAXNAMELEN);
+ if ((pname = nvpair_name(elp)) != NULL) {
+ (void) strlcpy(mpp->mp_name, pname,
+ ZFS_MAX_DATASET_NAME_LEN);
+ }
(void) strlcpy(mpp->mp_value, sval, ZFS_MAXPROPLEN);
(void) strlcpy(mpp->mp_source, ssrc, ZFS_MAXPROPLEN);
diff --git a/usr/src/cmd/ndmpd/tlm/tlm_lib.c b/usr/src/cmd/ndmpd/tlm/tlm_lib.c
index fa15a8e7ad..666ea3feca 100644
--- a/usr/src/cmd/ndmpd/tlm/tlm_lib.c
+++ b/usr/src/cmd/ndmpd/tlm/tlm_lib.c
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -723,10 +724,10 @@ tlm_build_snapshot_name(char *name, char *sname, char *jname)
{
zfs_handle_t *zhp;
char *rest;
- char volname[ZFS_MAXNAMELEN];
+ char volname[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[PATH_MAX];
- if (get_zfsvolname(volname, ZFS_MAXNAMELEN, name) == -1)
+ if (get_zfsvolname(volname, ZFS_MAX_DATASET_NAME_LEN, name) == -1)
goto notzfs;
(void) mutex_lock(&zlib_mtx);
@@ -1271,7 +1272,7 @@ boolean_t
fs_is_chkpntvol(char *path)
{
zfs_handle_t *zhp;
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
if (!path || !*path)
return (FALSE);
@@ -1303,7 +1304,7 @@ boolean_t
fs_is_chkpnt_enabled(char *path)
{
zfs_handle_t *zhp;
- char vol[ZFS_MAXNAMELEN];
+ char vol[ZFS_MAX_DATASET_NAME_LEN];
if (!path || !*path)
return (FALSE);
@@ -1337,15 +1338,13 @@ fs_is_rdonly(char *path)
* Min/max functions
*/
unsigned
-min(a, b)
- unsigned a, b;
+min(unsigned a, unsigned b)
{
return (a < b ? a : b);
}
unsigned
-max(a, b)
- unsigned a, b;
+max(unsigned a, unsigned b)
{
return (a > b ? a : b);
}
diff --git a/usr/src/cmd/oamuser/user/homedir.c b/usr/src/cmd/oamuser/user/homedir.c
index a31ae0b9a2..770cba25c1 100644
--- a/usr/src/cmd/oamuser/user/homedir.c
+++ b/usr/src/cmd/oamuser/user/homedir.c
@@ -102,10 +102,10 @@ create_home(char *homedir, char *skeldir, uid_t uid, gid_t gid, int flags)
}
if ((dataset = get_mnt_special(pdir, stbuf.st_fstype))
!= NULL) {
- char nm[ZFS_MAXNAMELEN];
+ char nm[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *zhp;
- (void) snprintf(nm, ZFS_MAXNAMELEN, "%s/%s",
+ (void) snprintf(nm, sizeof (nm), "%s/%s",
dataset, bname);
if ((zfs_create(g_zfs, nm, ZFS_TYPE_FILESYSTEM, NULL)
diff --git a/usr/src/cmd/zdb/zdb.c b/usr/src/cmd/zdb/zdb.c
index bb02c51f23..812453b826 100644
--- a/usr/src/cmd/zdb/zdb.c
+++ b/usr/src/cmd/zdb/zdb.c
@@ -60,7 +60,6 @@
#include <sys/ddt.h>
#include <sys/zfeature.h>
#include <zfs_comutil.h>
-#undef ZFS_MAXNAMELEN
#undef verify
#include <libzfs.h>
@@ -1922,7 +1921,7 @@ dump_dir(objset_t *os)
uint64_t refdbytes, usedobjs, scratch;
char numbuf[32];
char blkbuf[BP_SPRINTF_LEN + 20];
- char osname[MAXNAMELEN];
+ char osname[ZFS_MAX_DATASET_NAME_LEN];
char *type = "UNKNOWN";
int verbosity = dump_opt['d'];
int print_header = 1;
@@ -3457,7 +3456,7 @@ find_zpool(char **target, nvlist_t **configp, int dirc, char **dirv)
nvlist_t *match = NULL;
char *name = NULL;
char *sepp = NULL;
- char sep;
+ char sep = '\0';
int count = 0;
importargs_t args = { 0 };
diff --git a/usr/src/cmd/zfs/zfs_main.c b/usr/src/cmd/zfs/zfs_main.c
index 5710b19472..fc55e465b1 100644
--- a/usr/src/cmd/zfs/zfs_main.c
+++ b/usr/src/cmd/zfs/zfs_main.c
@@ -1482,7 +1482,7 @@ get_callback(zfs_handle_t *zhp, void *data)
char buf[ZFS_MAXPROPLEN];
char rbuf[ZFS_MAXPROPLEN];
zprop_source_t sourcetype;
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
zprop_get_cbdata_t *cbp = data;
nvlist_t *user_props = zfs_get_user_props(zhp);
zprop_list_t *pl = cbp->cb_proplist;
@@ -1962,7 +1962,7 @@ typedef struct upgrade_cbdata {
uint64_t cb_version;
boolean_t cb_newer;
boolean_t cb_foundone;
- char cb_lastfs[ZFS_MAXNAMELEN];
+ char cb_lastfs[ZFS_MAX_DATASET_NAME_LEN];
} upgrade_cbdata_t;
static int
@@ -2408,7 +2408,7 @@ userspace_cb(void *arg, const char *domain, uid_t rid, uint64_t space)
if (domain != NULL && domain[0] != '\0') {
/* SMB */
- char sid[ZFS_MAXNAMELEN + 32];
+ char sid[MAXNAMELEN + 32];
uid_t id;
int err;
int flag = IDMAP_REQ_FLG_USE_CACHE;
@@ -2537,7 +2537,7 @@ print_us_node(boolean_t scripted, boolean_t parsable, int *fields, int types,
size_t *width, us_node_t *node)
{
nvlist_t *nvl = node->usn_nvl;
- char valstr[ZFS_MAXNAMELEN];
+ char valstr[MAXNAMELEN];
boolean_t first = B_TRUE;
int cfield = 0;
int field;
@@ -3405,7 +3405,7 @@ zfs_do_rollback(int argc, char **argv)
boolean_t force = B_FALSE;
rollback_cbdata_t cb = { 0 };
zfs_handle_t *zhp, *snap;
- char parentname[ZFS_MAXNAMELEN];
+ char parentname[ZFS_MAX_DATASET_NAME_LEN];
char *delim;
/* check options */
@@ -3805,7 +3805,7 @@ zfs_do_send(int argc, char **argv)
*/
if (strchr(argv[0], '@') == NULL ||
(fromname && strchr(fromname, '#') != NULL)) {
- char frombuf[ZFS_MAXNAMELEN];
+ char frombuf[ZFS_MAX_DATASET_NAME_LEN];
enum lzc_send_flags lzc_flags = 0;
if (flags.replicate || flags.doall || flags.props ||
@@ -3857,7 +3857,7 @@ zfs_do_send(int argc, char **argv)
* case if they specify the origin.
*/
if (fromname && (cp = strchr(fromname, '@')) != NULL) {
- char origin[ZFS_MAXNAMELEN];
+ char origin[ZFS_MAX_DATASET_NAME_LEN];
zprop_source_t src;
(void) zfs_prop_get(zhp, ZFS_PROP_ORIGIN,
@@ -3991,7 +3991,7 @@ zfs_do_receive(int argc, char **argv)
usage(B_FALSE);
}
- char namebuf[ZFS_MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
(void) snprintf(namebuf, sizeof (namebuf),
"%s/%%recv", argv[0]);
@@ -4849,7 +4849,7 @@ store_allow_perm(zfs_deleg_who_type_t type, boolean_t local, boolean_t descend,
{
int i;
char ld[2] = { '\0', '\0' };
- char who_buf[ZFS_MAXNAMELEN+32];
+ char who_buf[MAXNAMELEN + 32];
char base_type = '\0';
char set_type = '\0';
nvlist_t *base_nvl = NULL;
@@ -5217,7 +5217,7 @@ static void
print_fs_perms(fs_perm_set_t *fspset)
{
fs_perm_node_t *node = NULL;
- char buf[ZFS_MAXNAMELEN+32];
+ char buf[MAXNAMELEN + 32];
const char *dsname = buf;
for (node = uu_list_first(fspset->fsps_list); node != NULL;
@@ -5226,7 +5226,7 @@ print_fs_perms(fs_perm_set_t *fspset)
uu_avl_t *uge_avl = node->fspn_fsperm.fsp_uge_avl;
int left = 0;
- (void) snprintf(buf, ZFS_MAXNAMELEN+32,
+ (void) snprintf(buf, sizeof (buf),
gettext("---- Permissions on %s "),
node->fspn_fsperm.fsp_name);
(void) printf(dsname);
@@ -5423,7 +5423,7 @@ zfs_do_hold_rele_impl(int argc, char **argv, boolean_t holding)
for (i = 0; i < argc; ++i) {
zfs_handle_t *zhp;
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
const char *delim;
char *path = argv[i];
@@ -5551,7 +5551,7 @@ holds_callback(zfs_handle_t *zhp, void *data)
nvlist_t *nvl = NULL;
nvpair_t *nvp = NULL;
const char *zname = zfs_get_name(zhp);
- size_t znamelen = strnlen(zname, ZFS_MAXNAMELEN);
+ size_t znamelen = strlen(zname);
if (cbp->cb_recursive) {
const char *snapname;
@@ -5572,7 +5572,7 @@ holds_callback(zfs_handle_t *zhp, void *data)
while ((nvp = nvlist_next_nvpair(nvl, nvp)) != NULL) {
const char *tag = nvpair_name(nvp);
- size_t taglen = strnlen(tag, MAXNAMELEN);
+ size_t taglen = strlen(tag);
if (taglen > cbp->cb_max_taglen)
cbp->cb_max_taglen = taglen;
}
@@ -6822,7 +6822,7 @@ zfs_do_diff(int argc, char **argv)
static int
zfs_do_bookmark(int argc, char **argv)
{
- char snapname[ZFS_MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *zhp;
nvlist_t *nvl;
int ret = 0;
diff --git a/usr/src/cmd/zhack/zhack.c b/usr/src/cmd/zhack/zhack.c
index 8d8fccb15b..79ca3a7e6c 100644
--- a/usr/src/cmd/zhack/zhack.c
+++ b/usr/src/cmd/zhack/zhack.c
@@ -48,7 +48,6 @@
#include <sys/zio_compress.h>
#include <sys/zfeature.h>
#include <sys/dmu_tx.h>
-#undef ZFS_MAXNAMELEN
#undef verify
#include <libzfs.h>
diff --git a/usr/src/cmd/zoneadm/zfs.c b/usr/src/cmd/zoneadm/zfs.c
index 2041d0f4b5..15be33ddab 100644
--- a/usr/src/cmd/zoneadm/zfs.c
+++ b/usr/src/cmd/zoneadm/zfs.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2012, Joyent, Inc. All rights reserved.
* Copyright (c) 2016 Martin Matuska. All rights reserved.
*/
@@ -261,7 +261,7 @@ take_snapshot(zfs_handle_t *zhp, char *snapshot_name, int snap_size,
char *presnapbuf, char *postsnapbuf)
{
int res;
- char template[ZFS_MAXNAMELEN];
+ char template[ZFS_MAX_DATASET_NAME_LEN];
zfs_snapshot_data_t cb;
/*
@@ -563,8 +563,8 @@ static int
get_direct_clone(zfs_handle_t *zhp, void *data)
{
clone_data_t *cd = data;
- char origin[ZFS_MAXNAMELEN];
- char ds_path[ZFS_MAXNAMELEN];
+ char origin[ZFS_MAX_DATASET_NAME_LEN];
+ char ds_path[ZFS_MAX_DATASET_NAME_LEN];
if (zfs_get_type(zhp) != ZFS_TYPE_FILESYSTEM) {
zfs_close(zhp);
@@ -668,7 +668,7 @@ rename_snap(zfs_handle_t *zhp, void *data)
{
int res;
zfs_snapshot_data_t *cbp;
- char template[ZFS_MAXNAMELEN];
+ char template[ZFS_MAX_DATASET_NAME_LEN];
cbp = (zfs_snapshot_data_t *)data;
@@ -724,8 +724,8 @@ static int
promote_clone(zfs_handle_t *src_zhp, zfs_handle_t *cln_zhp)
{
zfs_snapshot_data_t sd;
- char nm[ZFS_MAXNAMELEN];
- char template[ZFS_MAXNAMELEN];
+ char nm[ZFS_MAX_DATASET_NAME_LEN];
+ char template[ZFS_MAX_DATASET_NAME_LEN];
(void) strlcpy(nm, zfs_get_name(cln_zhp), sizeof (nm));
/*
@@ -785,7 +785,7 @@ int
promote_all_clones(zfs_handle_t *zhp)
{
clone_data_t cd;
- char nm[ZFS_MAXNAMELEN];
+ char nm[ZFS_MAX_DATASET_NAME_LEN];
cd.clone_zhp = NULL;
cd.origin_creation = 0;
@@ -1195,7 +1195,7 @@ verify_datasets(zone_dochandle_t handle)
struct zone_dstab dstab;
zfs_handle_t *zhp;
char propbuf[ZFS_MAXPROPLEN];
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
zprop_source_t srctype;
if (zonecfg_setdsent(handle) != Z_OK) {
diff --git a/usr/src/cmd/ztest/ztest.c b/usr/src/cmd/ztest/ztest.c
index 0b238eba6f..a3800f60ce 100644
--- a/usr/src/cmd/ztest/ztest.c
+++ b/usr/src/cmd/ztest/ztest.c
@@ -139,8 +139,8 @@ typedef struct ztest_shared_hdr {
static ztest_shared_hdr_t *ztest_shared_hdr;
typedef struct ztest_shared_opts {
- char zo_pool[MAXNAMELEN];
- char zo_dir[MAXNAMELEN];
+ char zo_pool[ZFS_MAX_DATASET_NAME_LEN];
+ char zo_dir[ZFS_MAX_DATASET_NAME_LEN];
char zo_alt_ztest[MAXNAMELEN];
char zo_alt_libpath[MAXNAMELEN];
uint64_t zo_vdevs;
@@ -266,7 +266,7 @@ typedef struct ztest_od {
uint64_t od_crblocksize;
uint64_t od_gen;
uint64_t od_crgen;
- char od_name[MAXNAMELEN];
+ char od_name[ZFS_MAX_DATASET_NAME_LEN];
} ztest_od_t;
/*
@@ -278,7 +278,7 @@ typedef struct ztest_ds {
rwlock_t zd_zilog_lock;
zilog_t *zd_zilog;
ztest_od_t *zd_od; /* debugging aid */
- char zd_name[MAXNAMELEN];
+ char zd_name[ZFS_MAX_DATASET_NAME_LEN];
mutex_t zd_dirobj_lock;
rll_t zd_object_lock[ZTEST_OBJECT_LOCKS];
rll_t zd_range_lock[ZTEST_RANGE_LOCKS];
@@ -3225,7 +3225,7 @@ ztest_objset_destroy_cb(const char *name, void *arg)
static boolean_t
ztest_snapshot_create(char *osname, uint64_t id)
{
- char snapname[MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
int error;
(void) snprintf(snapname, sizeof (snapname), "%llu", (u_longlong_t)id);
@@ -3245,10 +3245,10 @@ ztest_snapshot_create(char *osname, uint64_t id)
static boolean_t
ztest_snapshot_destroy(char *osname, uint64_t id)
{
- char snapname[MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
int error;
- (void) snprintf(snapname, MAXNAMELEN, "%s@%llu", osname,
+ (void) snprintf(snapname, sizeof (snapname), "%s@%llu", osname,
(u_longlong_t)id);
error = dsl_destroy_snapshot(snapname, B_FALSE);
@@ -3265,12 +3265,12 @@ ztest_dmu_objset_create_destroy(ztest_ds_t *zd, uint64_t id)
int iters;
int error;
objset_t *os, *os2;
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
zilog_t *zilog;
(void) rw_rdlock(&ztest_name_lock);
- (void) snprintf(name, MAXNAMELEN, "%s/temp_%llu",
+ (void) snprintf(name, sizeof (name), "%s/temp_%llu",
ztest_opts.zo_pool, (u_longlong_t)id);
/*
@@ -3376,18 +3376,23 @@ ztest_dmu_snapshot_create_destroy(ztest_ds_t *zd, uint64_t id)
void
ztest_dsl_dataset_cleanup(char *osname, uint64_t id)
{
- char snap1name[MAXNAMELEN];
- char clone1name[MAXNAMELEN];
- char snap2name[MAXNAMELEN];
- char clone2name[MAXNAMELEN];
- char snap3name[MAXNAMELEN];
+ char snap1name[ZFS_MAX_DATASET_NAME_LEN];
+ char clone1name[ZFS_MAX_DATASET_NAME_LEN];
+ char snap2name[ZFS_MAX_DATASET_NAME_LEN];
+ char clone2name[ZFS_MAX_DATASET_NAME_LEN];
+ char snap3name[ZFS_MAX_DATASET_NAME_LEN];
int error;
- (void) snprintf(snap1name, MAXNAMELEN, "%s@s1_%llu", osname, id);
- (void) snprintf(clone1name, MAXNAMELEN, "%s/c1_%llu", osname, id);
- (void) snprintf(snap2name, MAXNAMELEN, "%s@s2_%llu", clone1name, id);
- (void) snprintf(clone2name, MAXNAMELEN, "%s/c2_%llu", osname, id);
- (void) snprintf(snap3name, MAXNAMELEN, "%s@s3_%llu", clone1name, id);
+ (void) snprintf(snap1name, sizeof (snap1name),
+ "%s@s1_%llu", osname, id);
+ (void) snprintf(clone1name, sizeof (clone1name),
+ "%s/c1_%llu", osname, id);
+ (void) snprintf(snap2name, sizeof (snap2name),
+ "%s@s2_%llu", clone1name, id);
+ (void) snprintf(clone2name, sizeof (clone2name),
+ "%s/c2_%llu", osname, id);
+ (void) snprintf(snap3name, sizeof (snap3name),
+ "%s@s3_%llu", clone1name, id);
error = dsl_destroy_head(clone2name);
if (error && error != ENOENT)
@@ -3413,11 +3418,11 @@ void
ztest_dsl_dataset_promote_busy(ztest_ds_t *zd, uint64_t id)
{
objset_t *os;
- char snap1name[MAXNAMELEN];
- char clone1name[MAXNAMELEN];
- char snap2name[MAXNAMELEN];
- char clone2name[MAXNAMELEN];
- char snap3name[MAXNAMELEN];
+ char snap1name[ZFS_MAX_DATASET_NAME_LEN];
+ char clone1name[ZFS_MAX_DATASET_NAME_LEN];
+ char snap2name[ZFS_MAX_DATASET_NAME_LEN];
+ char clone2name[ZFS_MAX_DATASET_NAME_LEN];
+ char snap3name[ZFS_MAX_DATASET_NAME_LEN];
char *osname = zd->zd_name;
int error;
@@ -3425,11 +3430,16 @@ ztest_dsl_dataset_promote_busy(ztest_ds_t *zd, uint64_t id)
ztest_dsl_dataset_cleanup(osname, id);
- (void) snprintf(snap1name, MAXNAMELEN, "%s@s1_%llu", osname, id);
- (void) snprintf(clone1name, MAXNAMELEN, "%s/c1_%llu", osname, id);
- (void) snprintf(snap2name, MAXNAMELEN, "%s@s2_%llu", clone1name, id);
- (void) snprintf(clone2name, MAXNAMELEN, "%s/c2_%llu", osname, id);
- (void) snprintf(snap3name, MAXNAMELEN, "%s@s3_%llu", clone1name, id);
+ (void) snprintf(snap1name, sizeof (snap1name),
+ "%s@s1_%llu", osname, id);
+ (void) snprintf(clone1name, sizeof (clone1name),
+ "%s/c1_%llu", osname, id);
+ (void) snprintf(snap2name, sizeof (snap2name),
+ "%s@s2_%llu", clone1name, id);
+ (void) snprintf(clone2name, sizeof (clone2name),
+ "%s/c2_%llu", osname, id);
+ (void) snprintf(snap3name, sizeof (snap3name),
+ "%s@s3_%llu", clone1name, id);
error = dmu_objset_snapshot_one(osname, strchr(snap1name, '@') + 1);
if (error && error != EEXIST) {
@@ -4248,7 +4258,7 @@ ztest_fzap(ztest_ds_t *zd, uint64_t id)
* 2050 entries we should see ptrtbl growth and leaf-block split.
*/
for (int i = 0; i < 2050; i++) {
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
uint64_t value = i;
dmu_tx_t *tx;
int error;
@@ -4653,7 +4663,7 @@ ztest_dmu_snapshot_hold(ztest_ds_t *zd, uint64_t id)
char fullname[100];
char clonename[100];
char tag[100];
- char osname[MAXNAMELEN];
+ char osname[ZFS_MAX_DATASET_NAME_LEN];
nvlist_t *holds;
(void) rw_rdlock(&ztest_name_lock);
@@ -5473,13 +5483,13 @@ ztest_thread(void *arg)
static void
ztest_dataset_name(char *dsname, char *pool, int d)
{
- (void) snprintf(dsname, MAXNAMELEN, "%s/ds_%d", pool, d);
+ (void) snprintf(dsname, ZFS_MAX_DATASET_NAME_LEN, "%s/ds_%d", pool, d);
}
static void
ztest_dataset_destroy(int d)
{
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
ztest_dataset_name(name, ztest_opts.zo_pool, d);
@@ -5528,7 +5538,7 @@ ztest_dataset_open(int d)
uint64_t committed_seq = ZTEST_GET_SHARED_DS(d)->zd_seq;
objset_t *os;
zilog_t *zilog;
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int error;
ztest_dataset_name(name, ztest_opts.zo_pool, d);
@@ -5751,8 +5761,8 @@ ztest_run(ztest_shared_t *zs)
* different name.
*/
if (ztest_random(2) == 0) {
- char name[MAXNAMELEN];
- (void) snprintf(name, MAXNAMELEN, "%s_import",
+ char name[ZFS_MAX_DATASET_NAME_LEN];
+ (void) snprintf(name, sizeof (name), "%s_import",
ztest_opts.zo_pool);
ztest_spa_import_export(ztest_opts.zo_pool, name);
ztest_spa_import_export(name, ztest_opts.zo_pool);
@@ -6316,7 +6326,7 @@ main(int argc, char **argv)
if (spa_open(ztest_opts.zo_pool, &spa, FTAG) == 0) {
spa_close(spa, FTAG);
} else {
- char tmpname[MAXNAMELEN];
+ char tmpname[ZFS_MAX_DATASET_NAME_LEN];
kernel_fini();
kernel_init(FREAD | FWRITE);
(void) snprintf(tmpname, sizeof (tmpname), "%s_tmp",
diff --git a/usr/src/common/zfs/zfs_namecheck.c b/usr/src/common/zfs/zfs_namecheck.c
index a32955fe2d..439d4491a0 100644
--- a/usr/src/common/zfs/zfs_namecheck.c
+++ b/usr/src/common/zfs/zfs_namecheck.c
@@ -69,7 +69,7 @@ zfs_component_namecheck(const char *path, namecheck_err_t *why, char *what)
{
const char *loc;
- if (strlen(path) >= MAXNAMELEN) {
+ if (strlen(path) >= ZFS_MAX_DATASET_NAME_LEN) {
if (why)
*why = NAME_ERR_TOOLONG;
return (-1);
@@ -140,14 +140,9 @@ dataset_namecheck(const char *path, namecheck_err_t *why, char *what)
/*
* Make sure the name is not too long.
- *
- * ZFS_MAXNAMELEN is the maximum dataset length used in the userland
- * which is the same as MAXNAMELEN used in the kernel.
- * If ZFS_MAXNAMELEN value is changed, make sure to cleanup all
- * places using MAXNAMELEN.
*/
- if (strlen(path) >= MAXNAMELEN) {
+ if (strlen(path) >= ZFS_MAX_DATASET_NAME_LEN) {
if (why)
*why = NAME_ERR_TOOLONG;
return (-1);
@@ -276,7 +271,7 @@ mountpoint_namecheck(const char *path, namecheck_err_t *why)
while (*end != '/' && *end != '\0')
end++;
- if (end - start >= MAXNAMELEN) {
+ if (end - start >= ZFS_MAX_DATASET_NAME_LEN) {
if (why)
*why = NAME_ERR_TOOLONG;
return (-1);
@@ -301,13 +296,8 @@ pool_namecheck(const char *pool, namecheck_err_t *why, char *what)
/*
* Make sure the name is not too long.
- *
- * ZPOOL_MAXNAMELEN is the maximum pool length used in the userland
- * which is the same as MAXNAMELEN used in the kernel.
- * If ZPOOL_MAXNAMELEN value is changed, make sure to cleanup all
- * places using MAXNAMELEN.
*/
- if (strlen(pool) >= MAXNAMELEN) {
+ if (strlen(pool) >= ZFS_MAX_DATASET_NAME_LEN) {
if (why)
*why = NAME_ERR_TOOLONG;
return (-1);
diff --git a/usr/src/lib/libbe/common/be_create.c b/usr/src/lib/libbe/common/be_create.c
index 6ea2324200..6aea6e4112 100644
--- a/usr/src/lib/libbe/common/be_create.c
+++ b/usr/src/lib/libbe/common/be_create.c
@@ -22,7 +22,7 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
- * Copyright (c) 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2014, 2015 by Delphix. All rights reserved.
* Copyright (c) 2016 Martin Matuska. All rights reserved.
*/
@@ -2275,7 +2275,7 @@ be_clone_fs_callback(zfs_handle_t *zhp, void *data)
be_transaction_data_t *bt = data;
zfs_handle_t *zhp_ss = NULL;
char prop_buf[MAXPATHLEN];
- char zhp_name[ZFS_MAXNAMELEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char clone_ds[MAXPATHLEN];
char ss[MAXPATHLEN];
int ret = 0;
@@ -2395,7 +2395,7 @@ be_send_fs_callback(zfs_handle_t *zhp, void *data)
{
be_transaction_data_t *bt = data;
recvflags_t flags = { 0 };
- char zhp_name[ZFS_MAXNAMELEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char clone_ds[MAXPATHLEN];
sendflags_t send_flags = { 0 };
int pid, status, retval;
@@ -2761,8 +2761,8 @@ static int
be_demote_get_one_clone(zfs_handle_t *zhp, void *data)
{
be_demote_data_t *dd = data;
- char origin[ZFS_MAXNAMELEN];
- char ds_path[ZFS_MAXNAMELEN];
+ char origin[ZFS_MAX_DATASET_NAME_LEN];
+ char ds_path[ZFS_MAX_DATASET_NAME_LEN];
if (zfs_get_type(zhp) != ZFS_TYPE_FILESYSTEM) {
ZFS_CLOSE(zhp);
@@ -2937,8 +2937,8 @@ be_prep_clone_send_fs(zfs_handle_t *zhp, be_transaction_data_t *bt,
char *clone_ds, int clone_ds_len)
{
zprop_source_t sourcetype;
- char source[ZFS_MAXNAMELEN];
- char zhp_name[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
+ char zhp_name[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *child_fs = NULL;
char *zhp_mountpoint = NULL;
diff --git a/usr/src/lib/libbe/common/be_mount.c b/usr/src/lib/libbe/common/be_mount.c
index 03cb03b128..40daff4cd6 100644
--- a/usr/src/lib/libbe/common/be_mount.c
+++ b/usr/src/lib/libbe/common/be_mount.c
@@ -21,10 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 EveryCity Ltd.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
/*
@@ -1147,7 +1146,7 @@ be_mount_callback(zfs_handle_t *zhp, void *data)
{
zprop_source_t sourcetype;
const char *fs_name = zfs_get_name(zhp);
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char *altroot = data;
char zhp_mountpoint[MAXPATHLEN];
char mountpoint[MAXPATHLEN];
@@ -1297,7 +1296,7 @@ be_unmount_callback(zfs_handle_t *zhp, void *data)
be_unmount_data_t *ud = data;
zprop_source_t sourcetype;
const char *fs_name = zfs_get_name(zhp);
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *zhp_mountpoint;
int ret = 0;
@@ -2036,7 +2035,7 @@ static int
fix_mountpoint_callback(zfs_handle_t *zhp, void *data)
{
zprop_source_t sourcetype;
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
char mountpoint[MAXPATHLEN];
char *zhp_mountpoint = NULL;
char *altroot = data;
diff --git a/usr/src/lib/libbe/common/be_utils.c b/usr/src/lib/libbe/common/be_utils.c
index 4841302db3..b92c32e527 100644
--- a/usr/src/lib/libbe/common/be_utils.c
+++ b/usr/src/lib/libbe/common/be_utils.c
@@ -21,11 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 Toomas Soome <tsoome@me.com>
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
@@ -206,7 +204,7 @@ be_get_defaults(struct be_defaults *defaults)
const char *res = defread_r(BE_DFLT_BENAME_STARTS, defp);
if (res != NULL && res[0] != NULL) {
(void) strlcpy(defaults->be_deflt_bename_starts_with,
- res, ZFS_MAXNAMELEN);
+ res, ZFS_MAX_DATASET_NAME_LEN);
defaults->be_deflt_rpool_container = B_TRUE;
}
defclose_r(defp);
@@ -318,7 +316,7 @@ be_make_container_ds(const char *zpool, char *container_ds,
char *
be_make_name_from_ds(const char *dataset, char *rc_loc)
{
- char ds[ZFS_MAXNAMELEN];
+ char ds[ZFS_MAX_DATASET_NAME_LEN];
char *tok = NULL;
char *name = NULL;
struct be_defaults be_defaults;
diff --git a/usr/src/lib/libbe/common/libbe_priv.h b/usr/src/lib/libbe/common/libbe_priv.h
index cd5658f6d6..2e99204f22 100644
--- a/usr/src/lib/libbe/common/libbe_priv.h
+++ b/usr/src/lib/libbe/common/libbe_priv.h
@@ -21,11 +21,9 @@
/*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
* Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2015 Toomas Soome <tsoome@me.com>
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
#ifndef _LIBBE_PRIV_H
@@ -137,7 +135,7 @@ typedef struct be_plcy_list {
struct be_defaults {
boolean_t be_deflt_rpool_container;
- char be_deflt_bename_starts_with[ZFS_MAXNAMELEN];
+ char be_deflt_bename_starts_with[ZFS_MAX_DATASET_NAME_LEN];
};
/* Library globals */
diff --git a/usr/src/lib/libzfs/common/libzfs.h b/usr/src/lib/libzfs/common/libzfs.h
index 82acd00609..9baff24146 100644
--- a/usr/src/lib/libzfs/common/libzfs.h
+++ b/usr/src/lib/libzfs/common/libzfs.h
@@ -50,8 +50,6 @@ extern "C" {
/*
* Miscellaneous ZFS constants
*/
-#define ZFS_MAXNAMELEN MAXNAMELEN
-#define ZPOOL_MAXNAMELEN MAXNAMELEN
#define ZFS_MAXPROPLEN MAXPATHLEN
#define ZPOOL_MAXPROPLEN MAXPATHLEN
diff --git a/usr/src/lib/libzfs/common/libzfs_changelist.c b/usr/src/lib/libzfs/common/libzfs_changelist.c
index 18a95db1a2..04666cce99 100644
--- a/usr/src/lib/libzfs/common/libzfs_changelist.c
+++ b/usr/src/lib/libzfs/common/libzfs_changelist.c
@@ -24,6 +24,7 @@
* Use is subject to license terms.
*
* Portions Copyright 2007 Ramprakash Jelari
+ * Copyright (c) 2014, 2015 by Delphix. All rights reserved.
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
*/
@@ -289,7 +290,7 @@ void
changelist_rename(prop_changelist_t *clp, const char *src, const char *dst)
{
prop_changenode_t *cn;
- char newname[ZFS_MAXNAMELEN];
+ char newname[ZFS_MAX_DATASET_NAME_LEN];
for (cn = uu_list_first(clp->cl_list); cn != NULL;
cn = uu_list_next(clp->cl_list, cn)) {
diff --git a/usr/src/lib/libzfs/common/libzfs_dataset.c b/usr/src/lib/libzfs/common/libzfs_dataset.c
index aa4a0e9115..aa557ae80b 100644
--- a/usr/src/lib/libzfs/common/libzfs_dataset.c
+++ b/usr/src/lib/libzfs/common/libzfs_dataset.c
@@ -556,7 +556,7 @@ zfs_bookmark_exists(const char *path)
{
nvlist_t *bmarks;
nvlist_t *props;
- char fsname[ZFS_MAXNAMELEN];
+ char fsname[ZFS_MAX_DATASET_NAME_LEN];
char *bmark_name;
char *pound;
int err;
@@ -2139,7 +2139,7 @@ struct get_clones_arg {
uint64_t numclones;
nvlist_t *value;
const char *origin;
- char buf[ZFS_MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
};
int
@@ -2194,7 +2194,7 @@ zfs_get_clones_nvl(zfs_handle_t *zhp)
if (gca.numclones != 0) {
zfs_handle_t *root;
- char pool[ZFS_MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
char *cp = pool;
/* get the pool name */
@@ -2966,7 +2966,7 @@ check_parents(libzfs_handle_t *hdl, const char *path, uint64_t *zoned,
boolean_t accept_ancestor, int *prefixlen)
{
zfs_cmd_t zc = { 0 };
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
char *slash;
zfs_handle_t *zhp;
char errbuf[1024];
@@ -3205,7 +3205,7 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
ost = LZC_DATSET_TYPE_ZFS;
/* open zpool handle for prop validation */
- char pool_path[MAXNAMELEN];
+ char pool_path[ZFS_MAX_DATASET_NAME_LEN];
(void) strlcpy(pool_path, path, sizeof (pool_path));
/* truncate pool_path at first slash */
@@ -3274,7 +3274,7 @@ zfs_create(libzfs_handle_t *hdl, const char *path, zfs_type_t type,
/* check for failure */
if (ret != 0) {
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
(void) parent_name(path, parent, sizeof (parent));
switch (errno) {
@@ -3364,7 +3364,7 @@ static int
zfs_check_snap_cb(zfs_handle_t *zhp, void *arg)
{
struct destroydata *dd = arg;
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int rv = 0;
(void) snprintf(name, sizeof (name),
@@ -3454,7 +3454,7 @@ zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer)
int
zfs_clone(zfs_handle_t *zhp, const char *target, nvlist_t *props)
{
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
int ret;
char errbuf[1024];
libzfs_handle_t *hdl = zhp->zfs_hdl;
@@ -3584,7 +3584,7 @@ static int
zfs_snapshot_cb(zfs_handle_t *zhp, void *arg)
{
snapdata_t *sd = arg;
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int rv = 0;
if (zfs_prop_get_int(zhp, ZFS_PROP_INCONSISTENT) == 0) {
@@ -3633,7 +3633,7 @@ zfs_snapshot_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, nvlist_t *props)
* get pool handle for prop validation. assumes all snaps are in the
* same pool, as does lzc_snapshot (below).
*/
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
elem = nvlist_next_nvpair(snaps, NULL);
(void) strlcpy(pool, nvpair_name(elem), sizeof (pool));
pool[strcspn(pool, "/@")] = '\0';
@@ -3687,7 +3687,7 @@ zfs_snapshot(libzfs_handle_t *hdl, const char *path, boolean_t recursive,
{
int ret;
snapdata_t sd = { 0 };
- char fsname[ZFS_MAXNAMELEN];
+ char fsname[ZFS_MAX_DATASET_NAME_LEN];
char *cp;
zfs_handle_t *zhp;
char errbuf[1024];
@@ -3866,7 +3866,7 @@ zfs_rename(zfs_handle_t *zhp, const char *target, boolean_t recursive,
prop_changelist_t *cl = NULL;
zfs_handle_t *zhrp = NULL;
char *parentname = NULL;
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
libzfs_handle_t *hdl = zhp->zfs_hdl;
char errbuf[1024];
@@ -4348,7 +4348,7 @@ static int
zfs_hold_one(zfs_handle_t *zhp, void *arg)
{
struct holdarg *ha = arg;
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int rv = 0;
(void) snprintf(name, sizeof (name),
@@ -4467,7 +4467,7 @@ static int
zfs_release_one(zfs_handle_t *zhp, void *arg)
{
struct holdarg *ha = arg;
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int rv = 0;
nvlist_t *existing_holds;
@@ -4596,7 +4596,7 @@ tryagain:
zc.zc_nvlist_dst_size = nvsz;
zc.zc_nvlist_dst = (uintptr_t)nvbuf;
- (void) strlcpy(zc.zc_name, zhp->zfs_name, ZFS_MAXNAMELEN);
+ (void) strlcpy(zc.zc_name, zhp->zfs_name, sizeof (zc.zc_name));
if (ioctl(hdl->libzfs_fd, ZFS_IOC_GET_FSACL, &zc) != 0) {
(void) snprintf(errbuf, sizeof (errbuf),
diff --git a/usr/src/lib/libzfs/common/libzfs_diff.c b/usr/src/lib/libzfs/common/libzfs_diff.c
index d58558ffa3..d6cf32714d 100644
--- a/usr/src/lib/libzfs/common/libzfs_diff.c
+++ b/usr/src/lib/libzfs/common/libzfs_diff.c
@@ -22,6 +22,7 @@
/*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
* Copyright 2016 Joyent, Inc.
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
*/
@@ -601,7 +602,7 @@ get_snapshot_names(differ_info_t *di, const char *fromsnap,
* not the same dataset name, might be okay if
* tosnap is a clone of a fromsnap descendant.
*/
- char origin[ZFS_MAXNAMELEN];
+ char origin[ZFS_MAX_DATASET_NAME_LEN];
zprop_source_t src;
zfs_handle_t *zhp;
diff --git a/usr/src/lib/libzfs/common/libzfs_impl.h b/usr/src/lib/libzfs/common/libzfs_impl.h
index a3fcaab075..c62685085d 100644
--- a/usr/src/lib/libzfs/common/libzfs_impl.h
+++ b/usr/src/lib/libzfs/common/libzfs_impl.h
@@ -22,17 +22,17 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011 Pawel Jakub Dawidek. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
*/
#ifndef _LIBZFS_IMPL_H
#define _LIBZFS_IMPL_H
-#include <sys/dmu.h>
#include <sys/fs/zfs.h>
-#include <sys/zfs_ioctl.h>
#include <sys/spa.h>
#include <sys/nvpair.h>
+#include <sys/dmu.h>
+#include <sys/zfs_ioctl.h>
#include <libuutil.h>
#include <libzfs.h>
@@ -87,7 +87,7 @@ struct libzfs_handle {
struct zfs_handle {
libzfs_handle_t *zfs_hdl;
zpool_handle_t *zpool_hdl;
- char zfs_name[ZFS_MAXNAMELEN];
+ char zfs_name[ZFS_MAX_DATASET_NAME_LEN];
zfs_type_t zfs_type; /* type including snapshot */
zfs_type_t zfs_head_type; /* type excluding snapshot */
dmu_objset_stats_t zfs_dmustats;
@@ -108,7 +108,7 @@ struct zfs_handle {
struct zpool_handle {
libzfs_handle_t *zpool_hdl;
zpool_handle_t *zpool_next;
- char zpool_name[ZPOOL_MAXNAMELEN];
+ char zpool_name[ZFS_MAX_DATASET_NAME_LEN];
int zpool_state;
size_t zpool_config_size;
nvlist_t *zpool_config;
diff --git a/usr/src/lib/libzfs/common/libzfs_iter.c b/usr/src/lib/libzfs/common/libzfs_iter.c
index fb6a475d34..91ae6f302b 100644
--- a/usr/src/lib/libzfs/common/libzfs_iter.c
+++ b/usr/src/lib/libzfs/common/libzfs_iter.c
@@ -197,7 +197,7 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zfs_iter_f func, void *data)
for (nvpair_t *pair = nvlist_next_nvpair(bmarks, NULL);
pair != NULL; pair = nvlist_next_nvpair(bmarks, pair)) {
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
char *bmark_name;
nvlist_t *bmark_props;
@@ -385,7 +385,7 @@ zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig,
* exists.
*/
if (ssa.ssa_last[0] != '\0') {
- char snapname[ZFS_MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
(void) snprintf(snapname, sizeof (snapname),
"%s@%s", zfs_get_name(fs_zhp),
ssa.ssa_last);
@@ -405,7 +405,7 @@ zfs_iter_snapspec(zfs_handle_t *fs_zhp, const char *spec_orig,
ret = ENOENT;
}
} else {
- char snapname[ZFS_MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *snap_zhp;
(void) snprintf(snapname, sizeof (snapname), "%s@%s",
zfs_get_name(fs_zhp), comma_separated);
diff --git a/usr/src/lib/libzfs/common/libzfs_mount.c b/usr/src/lib/libzfs/common/libzfs_mount.c
index 26f574bc8b..f74860ba67 100644
--- a/usr/src/lib/libzfs/common/libzfs_mount.c
+++ b/usr/src/lib/libzfs/common/libzfs_mount.c
@@ -231,7 +231,7 @@ static boolean_t
zfs_is_mountable(zfs_handle_t *zhp, char *buf, size_t buflen,
zprop_source_t *source)
{
- char sourceloc[ZFS_MAXNAMELEN];
+ char sourceloc[MAXNAMELEN];
zprop_source_t sourcetype;
if (!zfs_prop_valid_for_type(ZFS_PROP_MOUNTPOINT, zhp->zfs_type))
diff --git a/usr/src/lib/libzfs/common/libzfs_pool.c b/usr/src/lib/libzfs/common/libzfs_pool.c
index cfe6db8b4d..69b7314dcf 100644
--- a/usr/src/lib/libzfs/common/libzfs_pool.c
+++ b/usr/src/lib/libzfs/common/libzfs_pool.c
@@ -406,7 +406,7 @@ bootfs_name_valid(const char *pool, char *bootfs)
boolean_t
zpool_is_bootable(zpool_handle_t *zhp)
{
- char bootfs[ZPOOL_MAXNAMELEN];
+ char bootfs[ZFS_MAX_DATASET_NAME_LEN];
return (zpool_get_prop(zhp, ZPOOL_PROP_BOOTFS, bootfs,
sizeof (bootfs), NULL, B_FALSE) == 0 && strncmp(bootfs, "-",
@@ -3760,7 +3760,7 @@ zpool_obj_to_path(zpool_handle_t *zhp, uint64_t dsobj, uint64_t obj,
zfs_cmd_t zc = { 0 };
boolean_t mounted = B_FALSE;
char *mntpnt = NULL;
- char dsname[MAXNAMELEN];
+ char dsname[ZFS_MAX_DATASET_NAME_LEN];
if (dsobj == 0) {
/* special case for the MOS */
@@ -4017,7 +4017,7 @@ zvol_check_dump_config(char *arg)
uint_t toplevels;
libzfs_handle_t *hdl;
char errbuf[1024];
- char poolname[ZPOOL_MAXNAMELEN];
+ char poolname[ZFS_MAX_DATASET_NAME_LEN];
int pathlen = strlen(ZVOL_FULL_DEV_DIR);
int ret = 1;
@@ -4040,7 +4040,7 @@ zvol_check_dump_config(char *arg)
"malformed dataset name"));
(void) zfs_error(hdl, EZFS_INVALIDNAME, errbuf);
return (1);
- } else if (p - volname >= ZFS_MAXNAMELEN) {
+ } else if (p - volname >= ZFS_MAX_DATASET_NAME_LEN) {
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"dataset name is too long"));
(void) zfs_error(hdl, EZFS_NAMETOOLONG, errbuf);
diff --git a/usr/src/lib/libzfs/common/libzfs_sendrecv.c b/usr/src/lib/libzfs/common/libzfs_sendrecv.c
index c03b5a6b6e..70114fa812 100644
--- a/usr/src/lib/libzfs/common/libzfs_sendrecv.c
+++ b/usr/src/lib/libzfs/common/libzfs_sendrecv.c
@@ -745,7 +745,7 @@ send_iterate_prop(zfs_handle_t *zhp, nvlist_t *nv)
static uint64_t
get_snap_txg(libzfs_handle_t *hdl, const char *fs, const char *snap)
{
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
uint64_t txg = 0;
if (fs == NULL || fs[0] == '\0' || snap == NULL || snap[0] == '\0')
@@ -913,7 +913,7 @@ typedef struct send_dump_data {
/* these are all just the short snapname (the part after the @) */
const char *fromsnap;
const char *tosnap;
- char prevsnap[ZFS_MAXNAMELEN];
+ char prevsnap[ZFS_MAX_DATASET_NAME_LEN];
uint64_t prevsnap_obj;
boolean_t seenfrom, seento, replicate, doall, fromorigin;
boolean_t verbose, dryrun, parsable, progress, embed_data, std_out;
@@ -926,7 +926,7 @@ typedef struct send_dump_data {
snapfilter_cb_t *filter_cb;
void *filter_cb_arg;
nvlist_t *debugnv;
- char holdtag[ZFS_MAXNAMELEN];
+ char holdtag[ZFS_MAX_DATASET_NAME_LEN];
int cleanup_fd;
uint64_t size;
} send_dump_data_t;
@@ -1561,7 +1561,7 @@ zfs_send_resume(libzfs_handle_t *hdl, sendflags_t *flags, int outfd,
uint64_t resumeobj, resumeoff, toguid, fromguid, bytes;
zfs_handle_t *zhp;
int error = 0;
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
enum lzc_send_flags lzc_flags = 0;
(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,
@@ -2151,8 +2151,8 @@ recv_rename(libzfs_handle_t *hdl, const char *name, const char *tryname,
if (err != 0 && strncmp(name + baselen, "recv-", 5) != 0) {
seq++;
- (void) snprintf(newname, ZFS_MAXNAMELEN, "%.*srecv-%u-%u",
- baselen, name, getpid(), seq);
+ (void) snprintf(newname, ZFS_MAX_DATASET_NAME_LEN,
+ "%.*srecv-%u-%u", baselen, name, getpid(), seq);
(void) strlcpy(zc.zc_value, newname, sizeof (zc.zc_value));
if (flags->verbose) {
@@ -2280,7 +2280,7 @@ static int
guid_to_name(libzfs_handle_t *hdl, const char *parent, uint64_t guid,
boolean_t bookmark_ok, char *name)
{
- char pname[ZFS_MAXNAMELEN];
+ char pname[ZFS_MAX_DATASET_NAME_LEN];
guid_to_name_data_t gtnd;
gtnd.guid = guid;
@@ -2335,7 +2335,7 @@ created_before(libzfs_handle_t *hdl, avl_tree_t *avl,
{
nvlist_t *nvfs;
char *fsname, *snapname;
- char buf[ZFS_MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
int rv;
zfs_handle_t *guid1hdl, *guid2hdl;
uint64_t create1, create2;
@@ -2386,7 +2386,7 @@ recv_incremental_replication(libzfs_handle_t *hdl, const char *tofs,
avl_tree_t *local_avl;
nvpair_t *fselem, *nextfselem;
char *fromsnap;
- char newname[ZFS_MAXNAMELEN];
+ char newname[ZFS_MAX_DATASET_NAME_LEN];
int error;
boolean_t needagain, progress, recursive;
char *s1, *s2;
@@ -2502,7 +2502,7 @@ again:
/* check for delete */
if (found == NULL) {
- char name[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
if (!flags->force)
continue;
@@ -2540,8 +2540,8 @@ again:
/* check for different snapname */
if (strcmp(nvpair_name(snapelem),
stream_snapname) != 0) {
- char name[ZFS_MAXNAMELEN];
- char tryname[ZFS_MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
+ char tryname[ZFS_MAX_DATASET_NAME_LEN];
(void) snprintf(name, sizeof (name), "%s@%s",
fsname, nvpair_name(snapelem));
@@ -2603,7 +2603,7 @@ again:
((flags->isprefix || strcmp(tofs, fsname) != 0) &&
(s1 != NULL) && (s2 != NULL) && strcmp(s1, s2) != 0)) {
nvlist_t *parent;
- char tryname[ZFS_MAXNAMELEN];
+ char tryname[ZFS_MAX_DATASET_NAME_LEN];
parent = fsavl_find(local_avl,
stream_parent_fromsnap_guid, NULL);
@@ -2669,8 +2669,8 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
char *fromsnap = NULL;
char *sendsnap = NULL;
char *cp;
- char tofs[ZFS_MAXNAMELEN];
- char sendfs[ZFS_MAXNAMELEN];
+ char tofs[ZFS_MAX_DATASET_NAME_LEN];
+ char sendfs[ZFS_MAX_DATASET_NAME_LEN];
char errbuf[1024];
dmu_replay_record_t drre;
int error;
@@ -2754,7 +2754,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
nvlist_t *renamed = NULL;
nvpair_t *pair = NULL;
- (void) strlcpy(tofs, destname, ZFS_MAXNAMELEN);
+ (void) strlcpy(tofs, destname, sizeof (tofs));
if (flags->isprefix) {
struct drr_begin *drrb = &drr->drr_u.drr_begin;
int i;
@@ -2763,7 +2763,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
cp = strrchr(drrb->drr_toname, '/');
if (cp == NULL) {
(void) strlcat(tofs, "/",
- ZFS_MAXNAMELEN);
+ sizeof (tofs));
i = 0;
} else {
i = (cp - drrb->drr_toname);
@@ -2773,7 +2773,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
}
/* zfs_receive_one() will create_parents() */
(void) strlcat(tofs, &drrb->drr_toname[i],
- ZFS_MAXNAMELEN);
+ sizeof (tofs));
*strchr(tofs, '@') = '\0';
}
@@ -2815,7 +2815,7 @@ zfs_receive_package(libzfs_handle_t *hdl, int fd, const char *destname,
* zfs_receive_one().
*/
(void) strlcpy(sendfs, drr->drr_u.drr_begin.drr_toname,
- ZFS_MAXNAMELEN);
+ sizeof (sendfs));
if ((cp = strchr(sendfs, '@')) != NULL) {
*cp = '\0';
/*
@@ -2965,7 +2965,7 @@ static void
recv_ecksum_set_aux(libzfs_handle_t *hdl, const char *target_snap,
boolean_t resumable)
{
- char target_fs[ZFS_MAXNAMELEN];
+ char target_fs[ZFS_MAX_DATASET_NAME_LEN];
zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
"checksum mismatch or incomplete stream"));
@@ -3159,7 +3159,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
if (flags->verbose)
(void) printf("found clone origin %s\n", zc.zc_string);
} else if (originsnap) {
- (void) strncpy(zc.zc_string, originsnap, ZFS_MAXNAMELEN);
+ (void) strncpy(zc.zc_string, originsnap, sizeof (zc.zc_string));
if (flags->verbose)
(void) printf("using provided clone origin %s\n",
zc.zc_string);
@@ -3184,7 +3184,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
*cp = '\0';
if (cp &&
!zfs_dataset_exists(hdl, zc.zc_name, ZFS_TYPE_DATASET)) {
- char suffix[ZFS_MAXNAMELEN];
+ char suffix[ZFS_MAX_DATASET_NAME_LEN];
(void) strcpy(suffix, strrchr(zc.zc_value, '/'));
if (guid_to_name(hdl, zc.zc_name, parent_snapguid,
B_FALSE, zc.zc_value) == 0) {
@@ -3211,7 +3211,7 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap,
if ((flags->isprefix || (*(chopprefix = drrb->drr_toname +
strlen(sendfs)) != '\0' && *chopprefix != '@')) &&
!zfs_dataset_exists(hdl, zc.zc_name, ZFS_TYPE_DATASET)) {
- char snap[ZFS_MAXNAMELEN];
+ char snap[ZFS_MAX_DATASET_NAME_LEN];
(void) strcpy(snap, strchr(zc.zc_value, '@'));
if (guid_to_name(hdl, zc.zc_name, drrb->drr_fromguid,
B_FALSE, zc.zc_value) == 0) {
@@ -3660,7 +3660,7 @@ zfs_receive_impl(libzfs_handle_t *hdl, const char *tosnap,
}
if (DMU_GET_STREAM_HDRTYPE(drrb->drr_versioninfo) == DMU_SUBSTREAM) {
- char nonpackage_sendfs[ZFS_MAXNAMELEN];
+ char nonpackage_sendfs[ZFS_MAX_DATASET_NAME_LEN];
if (sendfs == NULL) {
/*
* We were not called from zfs_receive_package(). Get
@@ -3668,7 +3668,8 @@ zfs_receive_impl(libzfs_handle_t *hdl, const char *tosnap,
*/
char *cp;
(void) strlcpy(nonpackage_sendfs,
- drr.drr_u.drr_begin.drr_toname, ZFS_MAXNAMELEN);
+ drr.drr_u.drr_begin.drr_toname,
+ sizeof (nonpackage_sendfs));
if ((cp = strchr(nonpackage_sendfs, '@')) != NULL)
*cp = '\0';
sendfs = nonpackage_sendfs;
diff --git a/usr/src/lib/libzfs_core/common/libzfs_core.c b/usr/src/lib/libzfs_core/common/libzfs_core.c
index 0dd32a2b3b..cc5e2a781b 100644
--- a/usr/src/lib/libzfs_core/common/libzfs_core.c
+++ b/usr/src/lib/libzfs_core/common/libzfs_core.c
@@ -218,7 +218,7 @@ lzc_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t **errlist)
nvpair_t *elem;
nvlist_t *args;
int error;
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
*errlist = NULL;
@@ -270,7 +270,7 @@ lzc_destroy_snaps(nvlist_t *snaps, boolean_t defer, nvlist_t **errlist)
nvpair_t *elem;
nvlist_t *args;
int error;
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
/* determine the pool name */
elem = nvlist_next_nvpair(snaps, NULL);
@@ -297,7 +297,7 @@ lzc_snaprange_space(const char *firstsnap, const char *lastsnap,
nvlist_t *args;
nvlist_t *result;
int err;
- char fs[MAXNAMELEN];
+ char fs[ZFS_MAX_DATASET_NAME_LEN];
char *atp;
/* determine the fs name */
@@ -362,7 +362,7 @@ lzc_exists(const char *dataset)
int
lzc_hold(nvlist_t *holds, int cleanup_fd, nvlist_t **errlist)
{
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
nvlist_t *args;
nvpair_t *elem;
int error;
@@ -409,7 +409,7 @@ lzc_hold(nvlist_t *holds, int cleanup_fd, nvlist_t **errlist)
int
lzc_release(nvlist_t *holds, nvlist_t **errlist)
{
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
nvpair_t *elem;
/* determine the pool name */
@@ -724,7 +724,7 @@ lzc_bookmark(nvlist_t *bookmarks, nvlist_t **errlist)
{
nvpair_t *elem;
int error;
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
/* determine the pool name */
elem = nvlist_next_nvpair(bookmarks, NULL);
@@ -786,7 +786,7 @@ lzc_destroy_bookmarks(nvlist_t *bmarks, nvlist_t **errlist)
{
nvpair_t *elem;
int error;
- char pool[MAXNAMELEN];
+ char pool[ZFS_MAX_DATASET_NAME_LEN];
/* determine the pool name */
elem = nvlist_next_nvpair(bmarks, NULL);
diff --git a/usr/src/lib/libzfs_jni/common/libzfs_jni_dataset.c b/usr/src/lib/libzfs_jni/common/libzfs_jni_dataset.c
index 573daf940d..2aa11ba23b 100644
--- a/usr/src/lib/libzfs_jni/common/libzfs_jni_dataset.c
+++ b/usr/src/lib/libzfs_jni/common/libzfs_jni_dataset.c
@@ -24,7 +24,9 @@
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
+/*
+ * Copyright (c) 2015 by Delphix. All rights reserved.
+ */
#include "libzfs_jni_util.h"
#include "libzfs_jni_dataset.h"
@@ -568,7 +570,7 @@ create_DatasetBean(JNIEnv *env, zfs_handle_t *zhp)
static int
is_fs_snapshot(zfs_handle_t *zhp)
{
- char parent[ZFS_MAXNAMELEN];
+ char parent[ZFS_MAX_DATASET_NAME_LEN];
zfs_handle_t *parent_zhp;
int isfs;
diff --git a/usr/src/lib/libzfs_jni/common/libzfs_jni_property.c b/usr/src/lib/libzfs_jni/common/libzfs_jni_property.c
index 1b78bb50b4..8dbd9382c7 100644
--- a/usr/src/lib/libzfs_jni/common/libzfs_jni_property.c
+++ b/usr/src/lib/libzfs_jni/common/libzfs_jni_property.c
@@ -20,6 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 by Delphix. All rights reserved.
*/
#include "libzfs_jni_property.h"
@@ -168,7 +169,7 @@ create_BasicProperty(JNIEnv *env, zfs_handle_t *zhp, zfs_prop_t prop,
char *propClass, char *valueClass)
{
jobject propertyObject = NULL;
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
zprop_source_t srctype;
jobject propValue = NULL;
@@ -261,7 +262,7 @@ create_ObjectProperty(JNIEnv *env, zfs_handle_t *zhp, zfs_prop_t prop,
char *propClass, char *valueClass)
{
jobject propertyObject = NULL;
- char source[ZFS_MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
zprop_source_t srctype;
jobject propValue = NULL;
diff --git a/usr/src/uts/common/fs/zfs/dmu_objset.c b/usr/src/uts/common/fs/zfs/dmu_objset.c
index 82c585487e..78ab9624d3 100644
--- a/usr/src/uts/common/fs/zfs/dmu_objset.c
+++ b/usr/src/uts/common/fs/zfs/dmu_objset.c
@@ -621,7 +621,7 @@ dmu_objset_refresh_ownership(objset_t *os, void *tag)
{
dsl_pool_t *dp;
dsl_dataset_t *ds, *newds;
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
ds = os->os_dsl_dataset;
VERIFY3P(ds, !=, NULL);
@@ -839,6 +839,9 @@ dmu_objset_create_check(void *arg, dmu_tx_t *tx)
if (strchr(doca->doca_name, '@') != NULL)
return (SET_ERROR(EINVAL));
+ if (strlen(doca->doca_name) >= ZFS_MAX_DATASET_NAME_LEN)
+ return (SET_ERROR(ENAMETOOLONG));
+
error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail);
if (error != 0)
return (error);
@@ -923,6 +926,9 @@ dmu_objset_clone_check(void *arg, dmu_tx_t *tx)
if (strchr(doca->doca_clone, '@') != NULL)
return (SET_ERROR(EINVAL));
+ if (strlen(doca->doca_clone) >= ZFS_MAX_DATASET_NAME_LEN)
+ return (SET_ERROR(ENAMETOOLONG));
+
error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail);
if (error != 0)
return (error);
@@ -962,7 +968,7 @@ dmu_objset_clone_sync(void *arg, dmu_tx_t *tx)
const char *tail;
dsl_dataset_t *origin, *ds;
uint64_t obj;
- char namebuf[MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
VERIFY0(dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail));
VERIFY0(dsl_dataset_hold(dp, doca->doca_origin, FTAG, &origin));
@@ -1973,7 +1979,7 @@ dmu_objset_get_user(objset_t *os)
/*
* Determine name of filesystem, given name of snapshot.
- * buf must be at least MAXNAMELEN bytes
+ * buf must be at least ZFS_MAX_DATASET_NAME_LEN bytes
*/
int
dmu_fsname(const char *snapname, char *buf)
@@ -1981,7 +1987,7 @@ dmu_fsname(const char *snapname, char *buf)
char *atp = strchr(snapname, '@');
if (atp == NULL)
return (SET_ERROR(EINVAL));
- if (atp - snapname >= MAXNAMELEN)
+ if (atp - snapname >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
(void) strlcpy(buf, snapname, atp - snapname + 1);
return (0);
diff --git a/usr/src/uts/common/fs/zfs/dmu_send.c b/usr/src/uts/common/fs/zfs/dmu_send.c
index 50b8aba876..8d4e07c6c6 100644
--- a/usr/src/uts/common/fs/zfs/dmu_send.c
+++ b/usr/src/uts/common/fs/zfs/dmu_send.c
@@ -1308,7 +1308,7 @@ dmu_recv_begin_check(void *arg, dmu_tx_t *tx)
dsl_dataset_rele(ds, FTAG);
} else if (error == ENOENT) {
/* target fs does not exist; must be a full backup or clone */
- char buf[MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
/*
* If it's a non-clone incremental, we are missing the
@@ -1328,7 +1328,7 @@ dmu_recv_begin_check(void *arg, dmu_tx_t *tx)
return (SET_ERROR(EINVAL));
/* Open the parent of tofs */
- ASSERT3U(strlen(tofs), <, MAXNAMELEN);
+ ASSERT3U(strlen(tofs), <, sizeof (buf));
(void) strlcpy(buf, tofs, strrchr(tofs, '/') - tofs + 1);
error = dsl_dataset_hold(dp, buf, FTAG, &ds);
if (error != 0)
@@ -1512,7 +1512,8 @@ dmu_recv_resume_begin_check(void *arg, dmu_tx_t *tx)
!spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_LZ4_COMPRESS))
return (SET_ERROR(ENOTSUP));
- char recvname[ZFS_MAXNAMELEN];
+ /* 6 extra bytes for /%recv */
+ char recvname[ZFS_MAX_DATASET_NAME_LEN + 6];
(void) snprintf(recvname, sizeof (recvname), "%s/%s",
tofs, recv_clone_name);
@@ -1585,7 +1586,8 @@ dmu_recv_resume_begin_sync(void *arg, dmu_tx_t *tx)
const char *tofs = drba->drba_cookie->drc_tofs;
dsl_dataset_t *ds;
uint64_t dsobj;
- char recvname[ZFS_MAXNAMELEN];
+ /* 6 extra bytes for /%recv */
+ char recvname[ZFS_MAX_DATASET_NAME_LEN + 6];
(void) snprintf(recvname, sizeof (recvname), "%s/%s",
tofs, recv_clone_name);
@@ -2300,7 +2302,7 @@ dmu_recv_cleanup_ds(dmu_recv_cookie_t *drc)
txg_wait_synced(drc->drc_ds->ds_dir->dd_pool, 0);
dsl_dataset_disown(drc->drc_ds, dmu_recv_tag);
} else {
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(drc->drc_ds, name);
dsl_dataset_disown(drc->drc_ds, dmu_recv_tag);
(void) dsl_destroy_head(name);
@@ -3118,13 +3120,13 @@ static int
dmu_recv_existing_end(dmu_recv_cookie_t *drc)
{
int error;
- char name[MAXNAMELEN];
#ifdef _KERNEL
/*
* We will be destroying the ds; make sure its origin is unmounted if
* necessary.
*/
+ char name[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(drc->drc_ds, name);
zfs_destroy_unmount_origin(name);
#endif
diff --git a/usr/src/uts/common/fs/zfs/dsl_bookmark.c b/usr/src/uts/common/fs/zfs/dsl_bookmark.c
index bc08d1c10e..39d572c411 100644
--- a/usr/src/uts/common/fs/zfs/dsl_bookmark.c
+++ b/usr/src/uts/common/fs/zfs/dsl_bookmark.c
@@ -34,10 +34,10 @@ static int
dsl_bookmark_hold_ds(dsl_pool_t *dp, const char *fullname,
dsl_dataset_t **dsp, void *tag, char **shortnamep)
{
- char buf[MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
char *hashp;
- if (strlen(fullname) >= MAXNAMELEN)
+ if (strlen(fullname) >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
hashp = strchr(fullname, '#');
if (hashp == NULL)
diff --git a/usr/src/uts/common/fs/zfs/dsl_dataset.c b/usr/src/uts/common/fs/zfs/dsl_dataset.c
index d8d57357c5..4aa33b8098 100644
--- a/usr/src/uts/common/fs/zfs/dsl_dataset.c
+++ b/usr/src/uts/common/fs/zfs/dsl_dataset.c
@@ -665,22 +665,37 @@ dsl_dataset_name(dsl_dataset_t *ds, char *name)
dsl_dir_name(ds->ds_dir, name);
VERIFY0(dsl_dataset_get_snapname(ds));
if (ds->ds_snapname[0]) {
- (void) strcat(name, "@");
+ VERIFY3U(strlcat(name, "@", ZFS_MAX_DATASET_NAME_LEN),
+ <, ZFS_MAX_DATASET_NAME_LEN);
/*
* We use a "recursive" mutex so that we
* can call dprintf_ds() with ds_lock held.
*/
if (!MUTEX_HELD(&ds->ds_lock)) {
mutex_enter(&ds->ds_lock);
- (void) strcat(name, ds->ds_snapname);
+ VERIFY3U(strlcat(name, ds->ds_snapname,
+ ZFS_MAX_DATASET_NAME_LEN), <,
+ ZFS_MAX_DATASET_NAME_LEN);
mutex_exit(&ds->ds_lock);
} else {
- (void) strcat(name, ds->ds_snapname);
+ VERIFY3U(strlcat(name, ds->ds_snapname,
+ ZFS_MAX_DATASET_NAME_LEN), <,
+ ZFS_MAX_DATASET_NAME_LEN);
}
}
}
}
+int
+dsl_dataset_namelen(dsl_dataset_t *ds)
+{
+ VERIFY0(dsl_dataset_get_snapname(ds));
+ mutex_enter(&ds->ds_lock);
+ int len = dsl_dir_namelen(ds->ds_dir) + 1 + strlen(ds->ds_snapname);
+ mutex_exit(&ds->ds_lock);
+ return (len);
+}
+
void
dsl_dataset_rele(dsl_dataset_t *ds, void *tag)
{
@@ -1243,10 +1258,10 @@ dsl_dataset_snapshot_check(void *arg, dmu_tx_t *tx)
int error = 0;
dsl_dataset_t *ds;
char *name, *atp;
- char dsname[MAXNAMELEN];
+ char dsname[ZFS_MAX_DATASET_NAME_LEN];
name = nvpair_name(pair);
- if (strlen(name) >= MAXNAMELEN)
+ if (strlen(name) >= ZFS_MAX_DATASET_NAME_LEN)
error = SET_ERROR(ENAMETOOLONG);
if (error == 0) {
atp = strchr(name, '@');
@@ -1419,7 +1434,7 @@ dsl_dataset_snapshot_sync(void *arg, dmu_tx_t *tx)
pair != NULL; pair = nvlist_next_nvpair(ddsa->ddsa_snaps, pair)) {
dsl_dataset_t *ds;
char *name, *atp;
- char dsname[MAXNAMELEN];
+ char dsname[ZFS_MAX_DATASET_NAME_LEN];
name = nvpair_name(pair);
atp = strchr(name, '@');
@@ -1465,7 +1480,7 @@ dsl_dataset_snapshot(nvlist_t *snaps, nvlist_t *props, nvlist_t *errors)
suspended = fnvlist_alloc();
for (pair = nvlist_next_nvpair(snaps, NULL); pair != NULL;
pair = nvlist_next_nvpair(snaps, pair)) {
- char fsname[MAXNAMELEN];
+ char fsname[ZFS_MAX_DATASET_NAME_LEN];
char *snapname = nvpair_name(pair);
char *atp;
void *cookie;
@@ -1672,7 +1687,7 @@ get_clones_stat(dsl_dataset_t *ds, nvlist_t *nv)
zap_cursor_retrieve(&zc, &za) == 0;
zap_cursor_advance(&zc)) {
dsl_dataset_t *clone;
- char buf[ZFS_MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
VERIFY0(dsl_dataset_hold_obj(ds->ds_dir->dd_pool,
za.za_first_integer, FTAG, &clone));
dsl_dir_name(clone->ds_dir, buf);
@@ -1780,7 +1795,7 @@ dsl_dataset_stats(dsl_dataset_t *ds, nvlist_t *nv)
get_clones_stat(ds, nv);
} else {
if (ds->ds_prev != NULL && ds->ds_prev != dp->dp_origin_snap) {
- char buf[MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(ds->ds_prev, buf);
dsl_prop_nvlist_add_string(nv, ZFS_PROP_PREV_SNAP, buf);
}
@@ -1841,12 +1856,15 @@ dsl_dataset_stats(dsl_dataset_t *ds, nvlist_t *nv)
* stats set on our child named "%recv". Check the child
* for the prop.
*/
- char recvname[ZFS_MAXNAMELEN];
+ /* 6 extra bytes for /%recv */
+ char recvname[ZFS_MAX_DATASET_NAME_LEN + 6];
dsl_dataset_t *recv_ds;
dsl_dataset_name(ds, recvname);
- (void) strcat(recvname, "/");
- (void) strcat(recvname, recv_clone_name);
- if (dsl_dataset_hold(dp, recvname, FTAG, &recv_ds) == 0) {
+ if (strlcat(recvname, "/", sizeof (recvname)) <
+ sizeof (recvname) &&
+ strlcat(recvname, recv_clone_name, sizeof (recvname)) <
+ sizeof (recvname) &&
+ dsl_dataset_hold(dp, recvname, FTAG, &recv_ds) == 0) {
get_receive_resume_stats(recv_ds, nv);
dsl_dataset_rele(recv_ds, FTAG);
}
@@ -1973,7 +1991,7 @@ dsl_dataset_rename_snapshot_check_impl(dsl_pool_t *dp,
/* dataset name + 1 for the "@" + the new snapshot name must fit */
if (dsl_dir_namelen(hds->ds_dir) + 1 +
- strlen(ddrsa->ddrsa_newsnapname) >= MAXNAMELEN)
+ strlen(ddrsa->ddrsa_newsnapname) >= ZFS_MAX_DATASET_NAME_LEN)
error = SET_ERROR(ENAMETOOLONG);
return (error);
@@ -2201,7 +2219,7 @@ dsl_dataset_rollback_sync(void *arg, dmu_tx_t *tx)
dsl_pool_t *dp = dmu_tx_pool(tx);
dsl_dataset_t *ds, *clone;
uint64_t cloneobj;
- char namebuf[ZFS_MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
VERIFY0(dsl_dataset_hold(dp, ddra->ddra_fsname, FTAG, &ds));
@@ -2754,7 +2772,7 @@ promote_rele(dsl_dataset_promote_arg_t *ddpa, void *tag)
* Promote a clone.
*
* If it fails due to a conflicting snapshot name, "conflsnap" will be filled
- * in with the name. (It must be at least MAXNAMELEN bytes long.)
+ * in with the name. (It must be at least ZFS_MAX_DATASET_NAME_LEN bytes long.)
*/
int
dsl_dataset_promote(const char *name, char *conflsnap)
diff --git a/usr/src/uts/common/fs/zfs/dsl_deleg.c b/usr/src/uts/common/fs/zfs/dsl_deleg.c
index 32fe03803f..b2f69045a6 100644
--- a/usr/src/uts/common/fs/zfs/dsl_deleg.c
+++ b/usr/src/uts/common/fs/zfs/dsl_deleg.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
*/
/*
@@ -330,7 +330,7 @@ dsl_deleg_get(const char *ddname, nvlist_t **nvp)
zap_attribute_t baseza;
nvlist_t *sp_nvp;
uint64_t n;
- char source[MAXNAMELEN];
+ char source[ZFS_MAX_DATASET_NAME_LEN];
if (dsl_dir_phys(dd)->dd_deleg_zapobj == 0 ||
zap_count(mos,
diff --git a/usr/src/uts/common/fs/zfs/dsl_dir.c b/usr/src/uts/common/fs/zfs/dsl_dir.c
index 7d86f72ad1..164410d03d 100644
--- a/usr/src/uts/common/fs/zfs/dsl_dir.c
+++ b/usr/src/uts/common/fs/zfs/dsl_dir.c
@@ -298,13 +298,14 @@ dsl_dir_async_rele(dsl_dir_t *dd, void *tag)
dmu_buf_rele(dd->dd_dbuf, tag);
}
-/* buf must be long enough (MAXNAMELEN + strlen(MOS_DIR_NAME) + 1 should do) */
+/* buf must be at least ZFS_MAX_DATASET_NAME_LEN bytes */
void
dsl_dir_name(dsl_dir_t *dd, char *buf)
{
if (dd->dd_parent) {
dsl_dir_name(dd->dd_parent, buf);
- (void) strcat(buf, "/");
+ VERIFY3U(strlcat(buf, "/", ZFS_MAX_DATASET_NAME_LEN), <,
+ ZFS_MAX_DATASET_NAME_LEN);
} else {
buf[0] = '\0';
}
@@ -314,10 +315,12 @@ dsl_dir_name(dsl_dir_t *dd, char *buf)
* dprintf_dd() with dd_lock held
*/
mutex_enter(&dd->dd_lock);
- (void) strcat(buf, dd->dd_myname);
+ VERIFY3U(strlcat(buf, dd->dd_myname, ZFS_MAX_DATASET_NAME_LEN),
+ <, ZFS_MAX_DATASET_NAME_LEN);
mutex_exit(&dd->dd_lock);
} else {
- (void) strcat(buf, dd->dd_myname);
+ VERIFY3U(strlcat(buf, dd->dd_myname, ZFS_MAX_DATASET_NAME_LEN),
+ <, ZFS_MAX_DATASET_NAME_LEN);
}
}
@@ -366,12 +369,12 @@ getcomponent(const char *path, char *component, const char **nextp)
if (p != NULL &&
(p[0] != '@' || strpbrk(path+1, "/@") || p[1] == '\0'))
return (SET_ERROR(EINVAL));
- if (strlen(path) >= MAXNAMELEN)
+ if (strlen(path) >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
(void) strcpy(component, path);
p = NULL;
} else if (p[0] == '/') {
- if (p - path >= MAXNAMELEN)
+ if (p - path >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
(void) strncpy(component, path, p - path);
component[p - path] = '\0';
@@ -383,7 +386,7 @@ getcomponent(const char *path, char *component, const char **nextp)
*/
if (strchr(path, '/'))
return (SET_ERROR(EINVAL));
- if (p - path >= MAXNAMELEN)
+ if (p - path >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
(void) strncpy(component, path, p - path);
component[p - path] = '\0';
@@ -405,7 +408,7 @@ int
dsl_dir_hold(dsl_pool_t *dp, const char *name, void *tag,
dsl_dir_t **ddp, const char **tailp)
{
- char buf[MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
const char *spaname, *next, *nextnext = NULL;
int err;
dsl_dir_t *dd;
@@ -968,7 +971,7 @@ dsl_dir_stats(dsl_dir_t *dd, nvlist_t *nv)
if (dsl_dir_is_clone(dd)) {
dsl_dataset_t *ds;
- char buf[MAXNAMELEN];
+ char buf[ZFS_MAX_DATASET_NAME_LEN];
VERIFY0(dsl_dataset_hold_obj(dd->dd_pool,
dsl_dir_phys(dd)->dd_origin_obj, FTAG, &ds));
@@ -1676,11 +1679,11 @@ static int
dsl_valid_rename(dsl_pool_t *dp, dsl_dataset_t *ds, void *arg)
{
int *deltap = arg;
- char namebuf[MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(ds, namebuf);
- if (strlen(namebuf) + *deltap >= MAXNAMELEN)
+ if (strlen(namebuf) + *deltap >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
return (0);
}
diff --git a/usr/src/uts/common/fs/zfs/dsl_prop.c b/usr/src/uts/common/fs/zfs/dsl_prop.c
index 0bdd843546..aeefbf39fa 100644
--- a/usr/src/uts/common/fs/zfs/dsl_prop.c
+++ b/usr/src/uts/common/fs/zfs/dsl_prop.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2013 Martin Matuska. All rights reserved.
* Copyright 2015, Joyent, Inc.
*/
@@ -1058,7 +1058,7 @@ dsl_prop_get_all_ds(dsl_dataset_t *ds, nvlist_t **nvp,
dsl_pool_t *dp = dd->dd_pool;
objset_t *mos = dp->dp_meta_objset;
int err = 0;
- char setpoint[MAXNAMELEN];
+ char setpoint[ZFS_MAX_DATASET_NAME_LEN];
VERIFY(nvlist_alloc(nvp, NV_UNIQUE_NAME, KM_SLEEP) == 0);
diff --git a/usr/src/uts/common/fs/zfs/dsl_scan.c b/usr/src/uts/common/fs/zfs/dsl_scan.c
index 532c1bade6..21a5787e42 100644
--- a/usr/src/uts/common/fs/zfs/dsl_scan.c
+++ b/usr/src/uts/common/fs/zfs/dsl_scan.c
@@ -1087,7 +1087,7 @@ dsl_scan_visitds(dsl_scan_t *scn, uint64_t dsobj, dmu_tx_t *tx)
dmu_buf_will_dirty(ds->ds_dbuf, tx);
dsl_scan_visit_rootbp(scn, ds, &dsl_dataset_phys(ds)->ds_bp, tx);
- char *dsname = kmem_alloc(ZFS_MAXNAMELEN, KM_SLEEP);
+ char *dsname = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP);
dsl_dataset_name(ds, dsname);
zfs_dbgmsg("scanned dataset %llu (%s) with min=%llu max=%llu; "
"pausing=%u",
@@ -1095,7 +1095,7 @@ dsl_scan_visitds(dsl_scan_t *scn, uint64_t dsobj, dmu_tx_t *tx)
(longlong_t)scn->scn_phys.scn_cur_min_txg,
(longlong_t)scn->scn_phys.scn_cur_max_txg,
(int)scn->scn_pausing);
- kmem_free(dsname, ZFS_MAXNAMELEN);
+ kmem_free(dsname, ZFS_MAX_DATASET_NAME_LEN);
if (scn->scn_pausing)
goto out;
diff --git a/usr/src/uts/common/fs/zfs/dsl_userhold.c b/usr/src/uts/common/fs/zfs/dsl_userhold.c
index a67db5f19e..54a15e1669 100644
--- a/usr/src/uts/common/fs/zfs/dsl_userhold.c
+++ b/usr/src/uts/common/fs/zfs/dsl_userhold.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2013 Steven Hartland. All rights reserved.
*/
@@ -180,7 +180,7 @@ dsl_dataset_user_hold_sync_one_impl(nvlist_t *tmpholds, dsl_dataset_t *ds,
}
typedef struct zfs_hold_cleanup_arg {
- char zhca_spaname[MAXNAMELEN];
+ char zhca_spaname[ZFS_MAX_DATASET_NAME_LEN];
uint64_t zhca_spa_load_guid;
nvlist_t *zhca_holds;
} zfs_hold_cleanup_arg_t;
@@ -574,7 +574,7 @@ dsl_dataset_user_release_impl(nvlist_t *holds, nvlist_t *errlist,
error = dsl_dataset_hold_obj_string(tmpdp,
nvpair_name(pair), FTAG, &ds);
if (error == 0) {
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(ds, name);
dsl_pool_config_exit(tmpdp, FTAG);
dsl_dataset_rele(ds, FTAG);
diff --git a/usr/src/uts/common/fs/zfs/spa.c b/usr/src/uts/common/fs/zfs/spa.c
index 7e44943113..07abe37f57 100644
--- a/usr/src/uts/common/fs/zfs/spa.c
+++ b/usr/src/uts/common/fs/zfs/spa.c
@@ -350,8 +350,7 @@ spa_prop_get(spa_t *spa, nvlist_t **nvp)
break;
}
- strval = kmem_alloc(
- MAXNAMELEN + strlen(MOS_DIR_NAME) + 1,
+ strval = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN,
KM_SLEEP);
dsl_dataset_name(ds, strval);
dsl_dataset_rele(ds, FTAG);
@@ -364,8 +363,7 @@ spa_prop_get(spa_t *spa, nvlist_t **nvp)
spa_prop_add_list(*nvp, prop, strval, intval, src);
if (strval != NULL)
- kmem_free(strval,
- MAXNAMELEN + strlen(MOS_DIR_NAME) + 1);
+ kmem_free(strval, ZFS_MAX_DATASET_NAME_LEN);
break;
@@ -1930,11 +1928,8 @@ spa_load_verify_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp,
int
verify_dataset_name_len(dsl_pool_t *dp, dsl_dataset_t *ds, void *arg)
{
- char namebuf[MAXPATHLEN];
- dsl_dataset_name(ds, namebuf);
- if (strlen(namebuf) > MAXNAMELEN) {
+ if (dsl_dataset_namelen(ds) >= ZFS_MAX_DATASET_NAME_LEN)
return (SET_ERROR(ENAMETOOLONG));
- }
return (0);
}
diff --git a/usr/src/uts/common/fs/zfs/spa_history.c b/usr/src/uts/common/fs/zfs/spa_history.c
index 4c30736769..2b15e79a98 100644
--- a/usr/src/uts/common/fs/zfs/spa_history.c
+++ b/usr/src/uts/common/fs/zfs/spa_history.c
@@ -21,7 +21,7 @@
/*
* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2015 by Delphix. All rights reserved.
* Copyright (c) 2014 Integros [integros.com]
*/
@@ -494,7 +494,7 @@ spa_history_log_internal_ds(dsl_dataset_t *ds, const char *operation,
dmu_tx_t *tx, const char *fmt, ...)
{
va_list adx;
- char namebuf[MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
nvlist_t *nvl = fnvlist_alloc();
ASSERT(tx != NULL);
@@ -513,7 +513,7 @@ spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation,
dmu_tx_t *tx, const char *fmt, ...)
{
va_list adx;
- char namebuf[MAXNAMELEN];
+ char namebuf[ZFS_MAX_DATASET_NAME_LEN];
nvlist_t *nvl = fnvlist_alloc();
ASSERT(tx != NULL);
diff --git a/usr/src/uts/common/fs/zfs/sys/dmu.h b/usr/src/uts/common/fs/zfs/sys/dmu.h
index 6b8649af40..d68651b116 100644
--- a/usr/src/uts/common/fs/zfs/sys/dmu.h
+++ b/usr/src/uts/common/fs/zfs/sys/dmu.h
@@ -807,7 +807,7 @@ typedef struct dmu_objset_stats {
dmu_objset_type_t dds_type;
uint8_t dds_is_snapshot;
uint8_t dds_inconsistent;
- char dds_origin[MAXNAMELEN];
+ char dds_origin[ZFS_MAX_DATASET_NAME_LEN];
} dmu_objset_stats_t;
/*
diff --git a/usr/src/uts/common/fs/zfs/sys/dsl_dataset.h b/usr/src/uts/common/fs/zfs/sys/dsl_dataset.h
index 766ae3c811..17d15d70c8 100644
--- a/usr/src/uts/common/fs/zfs/sys/dsl_dataset.h
+++ b/usr/src/uts/common/fs/zfs/sys/dsl_dataset.h
@@ -221,7 +221,7 @@ typedef struct dsl_dataset {
uint8_t ds_feature_activation_needed[SPA_FEATURES];
/* Protected by ds_lock; keep at end of struct for better locality */
- char ds_snapname[MAXNAMELEN];
+ char ds_snapname[ZFS_MAX_DATASET_NAME_LEN];
} dsl_dataset_t;
inline dsl_dataset_phys_t *
@@ -256,6 +256,7 @@ int dsl_dataset_own_obj(struct dsl_pool *dp, uint64_t dsobj,
void dsl_dataset_disown(dsl_dataset_t *ds, void *tag);
void dsl_dataset_name(dsl_dataset_t *ds, char *name);
boolean_t dsl_dataset_tryown(dsl_dataset_t *ds, void *tag);
+int dsl_dataset_namelen(dsl_dataset_t *ds);
boolean_t dsl_dataset_has_owner(dsl_dataset_t *ds);
uint64_t dsl_dataset_create_sync(dsl_dir_t *pds, const char *lastname,
dsl_dataset_t *origin, uint64_t flags, cred_t *, dmu_tx_t *);
@@ -347,10 +348,10 @@ void dsl_dataset_deactivate_feature(uint64_t dsobj,
#ifdef ZFS_DEBUG
#define dprintf_ds(ds, fmt, ...) do { \
if (zfs_flags & ZFS_DEBUG_DPRINTF) { \
- char *__ds_name = kmem_alloc(MAXNAMELEN, KM_SLEEP); \
+ char *__ds_name = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP); \
dsl_dataset_name(ds, __ds_name); \
dprintf("ds=%s " fmt, __ds_name, __VA_ARGS__); \
- kmem_free(__ds_name, MAXNAMELEN); \
+ kmem_free(__ds_name, ZFS_MAX_DATASET_NAME_LEN); \
} \
_NOTE(CONSTCOND) } while (0)
#else
diff --git a/usr/src/uts/common/fs/zfs/sys/dsl_dir.h b/usr/src/uts/common/fs/zfs/sys/dsl_dir.h
index 93fb73f37e..ab2d740741 100644
--- a/usr/src/uts/common/fs/zfs/sys/dsl_dir.h
+++ b/usr/src/uts/common/fs/zfs/sys/dsl_dir.h
@@ -112,7 +112,7 @@ struct dsl_dir {
int64_t dd_space_towrite[TXG_SIZE];
/* protected by dd_lock; keep at end of struct for better locality */
- char dd_myname[MAXNAMELEN];
+ char dd_myname[ZFS_MAX_DATASET_NAME_LEN];
};
inline dsl_dir_phys_t *
@@ -176,11 +176,10 @@ boolean_t dsl_dir_is_zapified(dsl_dir_t *dd);
#ifdef ZFS_DEBUG
#define dprintf_dd(dd, fmt, ...) do { \
if (zfs_flags & ZFS_DEBUG_DPRINTF) { \
- char *__ds_name = kmem_alloc(MAXNAMELEN + strlen(MOS_DIR_NAME) + 1, \
- KM_SLEEP); \
+ char *__ds_name = kmem_alloc(ZFS_MAX_DATASET_NAME_LEN, KM_SLEEP); \
dsl_dir_name(dd, __ds_name); \
dprintf("dd=%s " fmt, __ds_name, __VA_ARGS__); \
- kmem_free(__ds_name, MAXNAMELEN + strlen(MOS_DIR_NAME) + 1); \
+ kmem_free(__ds_name, ZFS_MAX_DATASET_NAME_LEN); \
} \
_NOTE(CONSTCOND) } while (0)
#else
diff --git a/usr/src/uts/common/fs/zfs/sys/spa_impl.h b/usr/src/uts/common/fs/zfs/sys/spa_impl.h
index e92fd4aa79..b49507b22e 100644
--- a/usr/src/uts/common/fs/zfs/sys/spa_impl.h
+++ b/usr/src/uts/common/fs/zfs/sys/spa_impl.h
@@ -126,7 +126,7 @@ struct spa {
/*
* Fields protected by spa_namespace_lock.
*/
- char spa_name[MAXNAMELEN]; /* pool name */
+ char spa_name[ZFS_MAX_DATASET_NAME_LEN]; /* pool name */
char *spa_comment; /* comment */
avl_node_t spa_avl; /* node in spa_namespace_avl */
nvlist_t *spa_config; /* last synced config */
diff --git a/usr/src/uts/common/fs/zfs/sys/zap.h b/usr/src/uts/common/fs/zfs/sys/zap.h
index cbcb561260..7714fe87d5 100644
--- a/usr/src/uts/common/fs/zfs/sys/zap.h
+++ b/usr/src/uts/common/fs/zfs/sys/zap.h
@@ -344,7 +344,7 @@ typedef struct {
boolean_t za_normalization_conflict;
uint64_t za_num_integers;
uint64_t za_first_integer; /* no sign extension for <8byte ints */
- char za_name[MAXNAMELEN];
+ char za_name[ZAP_MAXNAMELEN];
} zap_attribute_t;
/*
diff --git a/usr/src/uts/common/fs/zfs/sys/zfs_znode.h b/usr/src/uts/common/fs/zfs/sys/zfs_znode.h
index 6a2a90ab45..9a611c024e 100644
--- a/usr/src/uts/common/fs/zfs/sys/zfs_znode.h
+++ b/usr/src/uts/common/fs/zfs/sys/zfs_znode.h
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright (c) 2014 Integros [integros.com]
*/
@@ -138,17 +138,6 @@ extern "C" {
#define ZFS_SA_ATTRS "SA_ATTRS"
/*
- * Path component length
- *
- * The generic fs code uses MAXNAMELEN to represent
- * what the largest component length is. Unfortunately,
- * this length includes the terminating NULL. ZFS needs
- * to tell the users via pathconf() and statvfs() what the
- * true maximum length of a component is, excluding the NULL.
- */
-#define ZFS_MAXNAMELEN (MAXNAMELEN - 1)
-
-/*
* Convert mode bits (zp_mode) to BSD-style DT_* values for storing in
* the directory entries.
*/
diff --git a/usr/src/uts/common/fs/zfs/zfs_ctldir.c b/usr/src/uts/common/fs/zfs/zfs_ctldir.c
index de2f948e08..aeebe410c2 100644
--- a/usr/src/uts/common/fs/zfs/zfs_ctldir.c
+++ b/usr/src/uts/common/fs/zfs/zfs_ctldir.c
@@ -20,7 +20,7 @@
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2015 by Delphix. All rights reserved.
* Copyright 2015, OmniTI Computer Consulting, Inc. All rights reserved.
*/
@@ -621,8 +621,8 @@ zfsctl_snapdir_rename(vnode_t *sdvp, char *snm, vnode_t *tdvp, char *tnm,
zfs_snapentry_t search, *sep;
zfsvfs_t *zfsvfs;
avl_index_t where;
- char from[MAXNAMELEN], to[MAXNAMELEN];
- char real[MAXNAMELEN], fsname[MAXNAMELEN];
+ char from[ZFS_MAX_DATASET_NAME_LEN], to[ZFS_MAX_DATASET_NAME_LEN];
+ char real[ZFS_MAX_DATASET_NAME_LEN], fsname[ZFS_MAX_DATASET_NAME_LEN];
int err;
zfsvfs = sdvp->v_vfsp->vfs_data;
@@ -630,7 +630,7 @@ zfsctl_snapdir_rename(vnode_t *sdvp, char *snm, vnode_t *tdvp, char *tnm,
if ((flags & FIGNORECASE) || zfsvfs->z_case == ZFS_CASE_INSENSITIVE) {
err = dmu_snapshot_realname(zfsvfs->z_os, snm, real,
- MAXNAMELEN, NULL);
+ sizeof (real), NULL);
if (err == 0) {
snm = real;
} else if (err != ENOTSUP) {
@@ -643,9 +643,9 @@ zfsctl_snapdir_rename(vnode_t *sdvp, char *snm, vnode_t *tdvp, char *tnm,
dmu_objset_name(zfsvfs->z_os, fsname);
- err = zfsctl_snapshot_zname(sdvp, snm, MAXNAMELEN, from);
+ err = zfsctl_snapshot_zname(sdvp, snm, sizeof (from), from);
if (err == 0)
- err = zfsctl_snapshot_zname(tdvp, tnm, MAXNAMELEN, to);
+ err = zfsctl_snapshot_zname(tdvp, tnm, sizeof (to), to);
if (err == 0)
err = zfs_secpolicy_rename_perms(from, to, cr);
if (err != 0)
@@ -686,8 +686,8 @@ zfsctl_snapdir_remove(vnode_t *dvp, char *name, vnode_t *cwd, cred_t *cr,
zfs_snapentry_t *sep;
zfs_snapentry_t search;
zfsvfs_t *zfsvfs;
- char snapname[MAXNAMELEN];
- char real[MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
+ char real[ZFS_MAX_DATASET_NAME_LEN];
int err;
zfsvfs = dvp->v_vfsp->vfs_data;
@@ -696,7 +696,7 @@ zfsctl_snapdir_remove(vnode_t *dvp, char *name, vnode_t *cwd, cred_t *cr,
if ((flags & FIGNORECASE) || zfsvfs->z_case == ZFS_CASE_INSENSITIVE) {
err = dmu_snapshot_realname(zfsvfs->z_os, name, real,
- MAXNAMELEN, NULL);
+ sizeof (real), NULL);
if (err == 0) {
name = real;
} else if (err != ENOTSUP) {
@@ -707,7 +707,7 @@ zfsctl_snapdir_remove(vnode_t *dvp, char *name, vnode_t *cwd, cred_t *cr,
ZFS_EXIT(zfsvfs);
- err = zfsctl_snapshot_zname(dvp, name, MAXNAMELEN, snapname);
+ err = zfsctl_snapshot_zname(dvp, name, sizeof (snapname), snapname);
if (err == 0)
err = zfs_secpolicy_destroy_perms(snapname, cr);
if (err != 0)
@@ -742,7 +742,7 @@ zfsctl_snapdir_mkdir(vnode_t *dvp, char *dirname, vattr_t *vap, vnode_t **vpp,
cred_t *cr, caller_context_t *cc, int flags, vsecattr_t *vsecp)
{
zfsvfs_t *zfsvfs = dvp->v_vfsp->vfs_data;
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
int err;
static enum symfollow follow = NO_FOLLOW;
static enum uio_seg seg = UIO_SYSSPACE;
@@ -781,8 +781,8 @@ zfsctl_snapdir_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, pathname_t *pnp,
{
zfsctl_snapdir_t *sdp = dvp->v_data;
objset_t *snap;
- char snapname[MAXNAMELEN];
- char real[MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
+ char real[ZFS_MAX_DATASET_NAME_LEN];
char *mountpoint;
zfs_snapentry_t *sep, search;
struct mounta margs;
@@ -820,7 +820,7 @@ zfsctl_snapdir_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, pathname_t *pnp,
boolean_t conflict = B_FALSE;
err = dmu_snapshot_realname(zfsvfs->z_os, nm, real,
- MAXNAMELEN, &conflict);
+ sizeof (real), &conflict);
if (err == 0) {
nm = real;
} else if (err != ENOTSUP) {
@@ -865,7 +865,7 @@ zfsctl_snapdir_lookup(vnode_t *dvp, char *nm, vnode_t **vpp, pathname_t *pnp,
/*
* The requested snapshot is not currently mounted, look it up.
*/
- err = zfsctl_snapshot_zname(dvp, nm, MAXNAMELEN, snapname);
+ err = zfsctl_snapshot_zname(dvp, nm, sizeof (snapname), snapname);
if (err != 0) {
mutex_exit(&sdp->sd_lock);
ZFS_EXIT(zfsvfs);
@@ -984,7 +984,7 @@ zfsctl_snapdir_readdir_cb(vnode_t *vp, void *dp, int *eofp,
offset_t *offp, offset_t *nextp, void *data, int flags)
{
zfsvfs_t *zfsvfs = vp->v_vfsp->vfs_data;
- char snapname[MAXNAMELEN];
+ char snapname[ZFS_MAX_DATASET_NAME_LEN];
uint64_t id, cookie;
boolean_t case_conflict;
int error;
@@ -993,8 +993,8 @@ zfsctl_snapdir_readdir_cb(vnode_t *vp, void *dp, int *eofp,
cookie = *offp;
dsl_pool_config_enter(dmu_objset_pool(zfsvfs->z_os), FTAG);
- error = dmu_snapshot_list_next(zfsvfs->z_os, MAXNAMELEN, snapname, &id,
- &cookie, &case_conflict);
+ error = dmu_snapshot_list_next(zfsvfs->z_os,
+ sizeof (snapname), snapname, &id, &cookie, &case_conflict);
dsl_pool_config_exit(dmu_objset_pool(zfsvfs->z_os), FTAG);
if (error) {
ZFS_EXIT(zfsvfs);
diff --git a/usr/src/uts/common/fs/zfs/zfs_ioctl.c b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
index a7feada44f..f82104e8e4 100644
--- a/usr/src/uts/common/fs/zfs/zfs_ioctl.c
+++ b/usr/src/uts/common/fs/zfs/zfs_ioctl.c
@@ -628,7 +628,7 @@ zfs_secpolicy_setprop(const char *dsname, zfs_prop_t prop, nvpair_t *propval,
case ZFS_PROP_SNAPSHOT_LIMIT:
if (!INGLOBALZONE(curproc)) {
uint64_t zoned;
- char setpoint[MAXNAMELEN];
+ char setpoint[ZFS_MAX_DATASET_NAME_LEN];
/*
* Unprivileged users are allowed to modify the
* limit on things *under* (ie. contained by)
@@ -860,7 +860,7 @@ zfs_secpolicy_destroy_snaps(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
int
zfs_secpolicy_rename_perms(const char *from, const char *to, cred_t *cr)
{
- char parentname[MAXNAMELEN];
+ char parentname[ZFS_MAX_DATASET_NAME_LEN];
int error;
if ((error = zfs_secpolicy_write_perms(from,
@@ -913,7 +913,7 @@ zfs_secpolicy_promote(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
error = dsl_dataset_hold(dp, zc->zc_name, FTAG, &clone);
if (error == 0) {
- char parentname[MAXNAMELEN];
+ char parentname[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_t *origin = NULL;
dsl_dir_t *dd;
dd = clone->ds_dir;
@@ -1082,7 +1082,7 @@ zfs_secpolicy_log_history(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
static int
zfs_secpolicy_create_clone(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
{
- char parentname[MAXNAMELEN];
+ char parentname[ZFS_MAX_DATASET_NAME_LEN];
int error;
char *origin;
@@ -1225,7 +1225,7 @@ zfs_secpolicy_hold(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
for (pair = nvlist_next_nvpair(holds, NULL); pair != NULL;
pair = nvlist_next_nvpair(holds, pair)) {
- char fsname[MAXNAMELEN];
+ char fsname[ZFS_MAX_DATASET_NAME_LEN];
error = dmu_fsname(nvpair_name(pair), fsname);
if (error != 0)
return (error);
@@ -1246,7 +1246,7 @@ zfs_secpolicy_release(zfs_cmd_t *zc, nvlist_t *innvl, cred_t *cr)
for (pair = nvlist_next_nvpair(innvl, NULL); pair != NULL;
pair = nvlist_next_nvpair(innvl, pair)) {
- char fsname[MAXNAMELEN];
+ char fsname[ZFS_MAX_DATASET_NAME_LEN];
error = dmu_fsname(nvpair_name(pair), fsname);
if (error != 0)
return (error);
@@ -2292,7 +2292,8 @@ zfs_ioc_snapshot_list_next(zfs_cmd_t *zc)
* A dataset name of maximum length cannot have any snapshots,
* so exit immediately.
*/
- if (strlcat(zc->zc_name, "@", sizeof (zc->zc_name)) >= MAXNAMELEN) {
+ if (strlcat(zc->zc_name, "@", sizeof (zc->zc_name)) >=
+ ZFS_MAX_DATASET_NAME_LEN) {
dmu_objset_rele(os, FTAG);
return (SET_ERROR(ESRCH));
}
@@ -3098,7 +3099,7 @@ zfs_fill_zplprops(const char *dataset, nvlist_t *createprops,
boolean_t fuids_ok, sa_ok;
uint64_t zplver = ZPL_VERSION;
objset_t *os = NULL;
- char parentname[MAXNAMELEN];
+ char parentname[ZFS_MAX_DATASET_NAME_LEN];
char *cp;
spa_t *spa;
uint64_t spa_vers;
@@ -3459,7 +3460,7 @@ zfs_destroy_unmount_origin(const char *fsname)
return;
ds = dmu_objset_ds(os);
if (dsl_dir_is_clone(ds->ds_dir) && DS_IS_DEFER_DESTROY(ds->ds_prev)) {
- char originname[MAXNAMELEN];
+ char originname[ZFS_MAX_DATASET_NAME_LEN];
dsl_dataset_name(ds->ds_prev, originname);
dmu_objset_rele(os, FTAG);
(void) zfs_unmount_snap(originname);
@@ -3654,7 +3655,7 @@ static int
recursive_unmount(const char *fsname, void *arg)
{
const char *snapname = arg;
- char fullname[MAXNAMELEN];
+ char fullname[ZFS_MAX_DATASET_NAME_LEN];
(void) snprintf(fullname, sizeof (fullname), "%s@%s", fsname, snapname);
return (zfs_unmount_snap(fullname));
@@ -4182,7 +4183,7 @@ zfs_ioc_recv(zfs_cmd_t *zc)
nvlist_t *delayprops = NULL; /* sent properties applied post-receive */
char *origin = NULL;
char *tosnap;
- char tofs[ZFS_MAXNAMELEN];
+ char tofs[ZFS_MAX_DATASET_NAME_LEN];
boolean_t first_recvd_props = B_FALSE;
if (dataset_namecheck(zc->zc_value, NULL, NULL) != 0 ||
diff --git a/usr/src/uts/common/fs/zfs/zfs_vfsops.c b/usr/src/uts/common/fs/zfs/zfs_vfsops.c
index 0d02fd5bec..71df239ac9 100644
--- a/usr/src/uts/common/fs/zfs/zfs_vfsops.c
+++ b/usr/src/uts/common/fs/zfs/zfs_vfsops.c
@@ -496,7 +496,7 @@ zfs_register_callbacks(vfs_t *vfsp)
} else if (vfs_optionisset(vfsp, MNTOPT_NBMAND, NULL)) {
nbmand = B_TRUE;
} else {
- char osname[MAXNAMELEN];
+ char osname[ZFS_MAX_DATASET_NAME_LEN];
dmu_objset_name(os, osname);
if (error = dsl_prop_get_integer(osname, "nbmand", &nbmand,
@@ -1696,7 +1696,7 @@ zfs_statvfs(vfs_t *vfsp, struct statvfs64 *statp)
statp->f_flag = vf_to_stf(vfsp->vfs_flag);
- statp->f_namemax = ZFS_MAXNAMELEN;
+ statp->f_namemax = MAXNAMELEN - 1;
/*
* We have all of 32 characters to stuff a string here.
diff --git a/usr/src/uts/common/fs/zfs/zil.c b/usr/src/uts/common/fs/zfs/zil.c
index e3889b3a30..590f1dfff8 100644
--- a/usr/src/uts/common/fs/zfs/zil.c
+++ b/usr/src/uts/common/fs/zfs/zil.c
@@ -1961,7 +1961,7 @@ typedef struct zil_replay_arg {
static int
zil_replay_error(zilog_t *zilog, lr_t *lr, int error)
{
- char name[MAXNAMELEN];
+ char name[ZFS_MAX_DATASET_NAME_LEN];
zilog->zl_replaying_seq--; /* didn't actually replay this one */
diff --git a/usr/src/uts/common/sys/fs/zfs.h b/usr/src/uts/common/sys/fs/zfs.h
index cf1df2378e..0356d7f05b 100644
--- a/usr/src/uts/common/sys/fs/zfs.h
+++ b/usr/src/uts/common/sys/fs/zfs.h
@@ -71,9 +71,13 @@ typedef enum dmu_objset_type {
#define ZFS_TYPE_DATASET \
(ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME | ZFS_TYPE_SNAPSHOT)
+/*
+ * All of these include the terminating NUL byte.
+ */
#define ZAP_MAXNAMELEN 256
#define ZAP_MAXVALUELEN (1024 * 8)
#define ZAP_OLDMAXVALUELEN 1024
+#define ZFS_MAX_DATASET_NAME_LEN 256
/*
* Dataset properties are identified by these constants and must be added to