diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-12-20 12:56:57 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-12-20 12:56:57 +0000 |
| commit | b1fdc2e682407f4dc8c02732080d69266e914698 (patch) | |
| tree | fa7b78ed029cf9c6efdd1b7158002e57075a4b54 /usr/src | |
| parent | c6b06866f0307cf67293572a1a0e1340fd19628a (diff) | |
| parent | 540b2cc7a3cce4677bb918fec08d34cfd5f8c545 (diff) | |
| download | illumos-joyent-b1fdc2e682407f4dc8c02732080d69266e914698.tar.gz | |
[illumos-gate merge]
commit 540b2cc7a3cce4677bb918fec08d34cfd5f8c545
7670 c0 controller instance should be reserved for vhci
commit cead1df3b072a636f2f644cb38b83059f9f01fe8
7662 assertion triggered in syseventd zfs_mod.so
commit d3147737fcad3bbe69cbd5b065363137f4e61c52
7675 Python2.7 needs 5879-like exception_list fixes
commit 1a444326de2cbc1063a0ec1465543edcf4a5a997
5032 share_nfs(1m): Documentation for "noaclfab" is needed
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/cmd/devfsadm/cfg_link.c | 9 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/devfsadm.c | 8 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/devfsadm.h | 8 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/disk_link.c | 9 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/mapfile-vers | 2 | ||||
| -rw-r--r-- | usr/src/cmd/devfsadm/sgen_link.c | 10 | ||||
| -rw-r--r-- | usr/src/cmd/syseventd/modules/zfs_mod/zfs_mod.c | 4 | ||||
| -rw-r--r-- | usr/src/man/man1m/share_nfs.1m | 11 | ||||
| -rw-r--r-- | usr/src/uts/common/nfs/export.h | 6 |
9 files changed, 46 insertions, 21 deletions
diff --git a/usr/src/cmd/devfsadm/cfg_link.c b/usr/src/cmd/devfsadm/cfg_link.c index ce59039a75..ffdbc6d0af 100644 --- a/usr/src/cmd/devfsadm/cfg_link.c +++ b/usr/src/cmd/devfsadm/cfg_link.c @@ -20,6 +20,7 @@ */ /* + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -177,7 +178,7 @@ scsi_cfg_creat_cb(di_minor_t minor, di_node_t node) (void) strcat(path, mn); di_devfs_path_free(devfs_path); - if (devfsadm_enumerate_int(path, 1, &c_num, rules, 3) + if (ctrl_enumerate_int(path, 1, &c_num, rules, 3, 0, B_FALSE) == DEVFSADM_FAILURE) { /* * Unlike the disks module we don't retry on failure. @@ -226,7 +227,7 @@ usb_cfg_creat_cb(di_minor_t minor, di_node_t node) (void) snprintf(path, sizeof (path), "%s:%s", cp, di_minor_name(minor)); di_devfs_path_free(cp); - if (devfsadm_enumerate_int(path, 0, &cp, rules, 1)) { + if (ctrl_enumerate_int(path, 0, &cp, rules, 1, 0, B_FALSE)) { return (DEVFSADM_CONTINUE); } @@ -263,7 +264,7 @@ sata_cfg_creat_cb(di_minor_t minor, di_node_t node) di_devfs_path_free(devfspath); /* build the physical path from the components */ - if (devfsadm_enumerate_int(path, 0, &buf, rules, 1) == + if (ctrl_enumerate_int(path, 0, &buf, rules, 1, 0, B_FALSE) == DEVFSADM_FAILURE) { return (DEVFSADM_CONTINUE); } @@ -297,7 +298,7 @@ sdcard_cfg_creat_cb(di_minor_t minor, di_node_t node) di_devfs_path_free(devfspath); /* build the physical path from the components */ - if (devfsadm_enumerate_int(path, 0, &buf, rules, 1) == + if (ctrl_enumerate_int(path, 0, &buf, rules, 1, 0, B_FALSE) == DEVFSADM_FAILURE) { return (DEVFSADM_CONTINUE); } diff --git a/usr/src/cmd/devfsadm/devfsadm.c b/usr/src/cmd/devfsadm/devfsadm.c index 7d7904e9c0..6f2706c21a 100644 --- a/usr/src/cmd/devfsadm/devfsadm.c +++ b/usr/src/cmd/devfsadm/devfsadm.c @@ -21,6 +21,7 @@ /* * Copyright 2016 Toomas Soome <tsoome@me.com> + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. */ @@ -4845,11 +4846,12 @@ devfsadm_enumerate_int(char *devfs_path, int index, char **buf, } int -disk_enumerate_int(char *devfs_path, int index, char **buf, - devfsadm_enumerate_t rules[], int nrules) +ctrl_enumerate_int(char *devfs_path, int index, char **buf, + devfsadm_enumerate_t rules[], int nrules, int multiple, + boolean_t scsi_vhci) { return (find_enum_id(rules, nrules, - devfs_path, index, "0", INTEGER, buf, 1)); + devfs_path, index, scsi_vhci ? "0" : "1", INTEGER, buf, multiple)); } /* diff --git a/usr/src/cmd/devfsadm/devfsadm.h b/usr/src/cmd/devfsadm/devfsadm.h index 3d801f66db..ae630496f8 100644 --- a/usr/src/cmd/devfsadm/devfsadm.h +++ b/usr/src/cmd/devfsadm/devfsadm.h @@ -20,6 +20,7 @@ */ /* * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ #ifndef _DEVFSADM_H @@ -231,10 +232,11 @@ void devfsadm_free_dev_names(char **dev_names, int len); di_devlink_handle_t devfsadm_devlink_cache(void); /* - * Private enumerate interface for disks and sgen modules + * Private enumerate interface for controllers, disks, and sgen modules */ -int disk_enumerate_int(char *devfs_path, int index, char **buf, - devfsadm_enumerate_t rules[], int nrules); +int ctrl_enumerate_int(char *devfs_path, int index, char **buf, + devfsadm_enumerate_t rules[], int nrules, + int multiple, boolean_t scsi_vhci); /* * Private interfaces for ports module (port_link.c). */ diff --git a/usr/src/cmd/devfsadm/disk_link.c b/usr/src/cmd/devfsadm/disk_link.c index 3e966ac6bd..c68cba8bea 100644 --- a/usr/src/cmd/devfsadm/disk_link.c +++ b/usr/src/cmd/devfsadm/disk_link.c @@ -657,6 +657,7 @@ diskctrl(di_node_t node, di_minor_t minor) char path[PATH_MAX + 1]; char *devfspath; char *buf, *mn; + boolean_t is_vhci; devfsadm_enumerate_t rules[3] = { {"^r?dsk$/^c([0-9]+)", 1, MATCH_PARENT}, @@ -677,9 +678,10 @@ diskctrl(di_node_t node, di_minor_t minor) /* * Use controller component of disk path */ - if (disk_enumerate_int(path, RULE_INDEX, &buf, rules, 3) == - DEVFSADM_MULTIPLE) { + is_vhci = (strncmp(path, "/scsi_vhci/", 11) == 0); + if (ctrl_enumerate_int(path, RULE_INDEX, &buf, rules, 3, 1, is_vhci) == + DEVFSADM_MULTIPLE) { /* * We failed because there are multiple logical controller * numbers for a single physical controller. If we use node @@ -694,7 +696,8 @@ diskctrl(di_node_t node, di_minor_t minor) rules[0].flags = MATCH_NODE | MATCH_UNCACHED; /* disks */ rules[2].flags = MATCH_NODE | MATCH_UNCACHED; /* generic scsi */ - if (devfsadm_enumerate_int(path, RULE_INDEX, &buf, rules, 3)) { + if (ctrl_enumerate_int(path, RULE_INDEX, &buf, rules, 3, 0, + is_vhci)) { return (NULL); } } diff --git a/usr/src/cmd/devfsadm/mapfile-vers b/usr/src/cmd/devfsadm/mapfile-vers index 9c30e217de..ebb7593fb7 100644 --- a/usr/src/cmd/devfsadm/mapfile-vers +++ b/usr/src/cmd/devfsadm/mapfile-vers @@ -1,4 +1,5 @@ # +# Copyright 2016 Nexenta Systems, Inc. All rights reserved. # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. # # CDDL HEADER START @@ -39,6 +40,7 @@ $mapfile_version 2 # External interface requirements SYMBOL_SCOPE { global: + ctrl_enumerate_int { FLAGS = EXTERN }; devfsadm_devlink_cache { FLAGS = EXTERN }; devfsadm_enumerate_char_start { FLAGS = EXTERN }; devfsadm_enumerate_int { FLAGS = EXTERN }; diff --git a/usr/src/cmd/devfsadm/sgen_link.c b/usr/src/cmd/devfsadm/sgen_link.c index 92289050ac..e4ffa3f8fd 100644 --- a/usr/src/cmd/devfsadm/sgen_link.c +++ b/usr/src/cmd/devfsadm/sgen_link.c @@ -19,6 +19,7 @@ * CDDL HEADER END */ /* + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -186,6 +187,7 @@ find_ctrlr(di_node_t node, di_minor_t minor) char path[PATH_MAX + 1]; char *devfspath; char *buf, *mn; + boolean_t is_vhci; devfsadm_enumerate_t rules[3] = { {"^r?dsk$/^c([0-9]+)", 1, MATCH_PARENT}, @@ -206,9 +208,10 @@ find_ctrlr(di_node_t node, di_minor_t minor) /* * Use controller (parent) component of device path */ - if (disk_enumerate_int(path, RULE_INDEX, &buf, rules, 3) == - DEVFSADM_MULTIPLE) { + is_vhci = (strncmp(path, "/scsi_vhci/", 11) == 0); + if (ctrl_enumerate_int(path, RULE_INDEX, &buf, rules, 3, 1, is_vhci) == + DEVFSADM_MULTIPLE) { /* * We failed because there are multiple logical controller * numbers for a single physical controller. If we use node @@ -222,7 +225,8 @@ find_ctrlr(di_node_t node, di_minor_t minor) */ rules[0].flags = MATCH_NODE | MATCH_UNCACHED; /* disks */ rules[2].flags = MATCH_NODE | MATCH_UNCACHED; /* generic scsi */ - if (devfsadm_enumerate_int(path, RULE_INDEX, &buf, rules, 3)) { + if (ctrl_enumerate_int(path, RULE_INDEX, &buf, rules, 3, 0, + is_vhci)) { return (NULL); } } diff --git a/usr/src/cmd/syseventd/modules/zfs_mod/zfs_mod.c b/usr/src/cmd/syseventd/modules/zfs_mod/zfs_mod.c index dae69d1945..e98ee0c9b7 100644 --- a/usr/src/cmd/syseventd/modules/zfs_mod/zfs_mod.c +++ b/usr/src/cmd/syseventd/modules/zfs_mod/zfs_mod.c @@ -21,7 +21,7 @@ /* * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. - * Copyright 2015 Nexenta Systems, Inc. All rights reserved. + * Copyright 2016 Nexenta Systems, Inc. All rights reserved. */ /* @@ -822,6 +822,7 @@ slm_fini() { unavailpool_t *pool; + (void) thr_join(g_zfs_tid, NULL, NULL); if (g_tpool != NULL) { tpool_wait(g_tpool); tpool_destroy(g_tpool); @@ -831,7 +832,6 @@ slm_fini() zpool_close(pool->uap_zhp); free(pool); } - (void) thr_join(g_zfs_tid, NULL, NULL); list_destroy(&g_pool_list); libzfs_fini(g_zfshdl); } diff --git a/usr/src/man/man1m/share_nfs.1m b/usr/src/man/man1m/share_nfs.1m index f19aec79b6..fbd6943ba8 100644 --- a/usr/src/man/man1m/share_nfs.1m +++ b/usr/src/man/man1m/share_nfs.1m @@ -21,8 +21,9 @@ .\" .\" Copyright (C) 2008, Sun Microsystems, Inc. All Rights Reserved .\" Copyright 2014 Nexenta Systems, Inc. All rights reserved. +.\" Copyright 2016 Jason King. .\" -.Dd November 10, 2014 +.Dd December 16, 2016 .Dt SHARE_NFS 1M .Os .Sh NAME @@ -157,6 +158,13 @@ is specified, the default values associated with the global tag in .Pa /etc/nfs/nfslog.conf are used. Support of NFS server logging is only available for NFS Version 2 and Version 3 requests. +.It Sy noaclfab +By default, the NFS server will fabricate POSIX-draft style ACLs in response +to ACL requests from NFS Version 2 or Version 3 clients accessing shared +file systems that do not support POSIX-draft ACLs (such as ZFS). +Specifying +.Sy noaclfab +disables this behavior. .It Sy none Ns = Ns Ar access_list Access is not allowed to any client that matches the access list. The exception is when the access list is an asterisk (*), in which case @@ -519,6 +527,7 @@ share -o uidmap=100:joe:@10.0.0.1 /export .Xr getnetbyname 3SOCKET , .Xr netgroup 4 , .Xr nfslog.conf 4 , +.Xr acl 5 , .Xr attributes 5 , .Xr nfssec 5 .Sh NOTES diff --git a/usr/src/uts/common/nfs/export.h b/usr/src/uts/common/nfs/export.h index 66b86cdf8f..85f0476873 100644 --- a/usr/src/uts/common/nfs/export.h +++ b/usr/src/uts/common/nfs/export.h @@ -22,6 +22,7 @@ /* * Copyright 2016 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2016 Jason King. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ @@ -185,8 +186,9 @@ struct exportdata32 { #endif /* VOLATILE_FH_TEST */ #define EX_CHARMAP 0x1000 /* NFS may need a character set conversion */ -#define EX_NOACLFAB 0x2000 /* If set, NFSv2 and v3 servers doesn't */ - /* fabricate ACL for VOP_GETSECATTR OTW call */ +#define EX_NOACLFAB 0x2000 /* If set, NFSv2 and v3 servers won't */ + /* fabricate an aclent_t ACL on file systems */ + /* that don't support aclent_t ACLs */ #ifdef _KERNEL |
