summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2019-12-02 13:05:42 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2019-12-02 13:05:42 +0000
commit98860832862cef20612fd5b10b324f5eba1b4015 (patch)
tree8fabd2b174a6ffe8afb37c485d8cd5bca906563d
parent09f69895a11ea4b8eb83c65cc9de22502d7d41a8 (diff)
parent4deedc8c9617c76c1e08a5265614b205754926c4 (diff)
downloadillumos-joyent-98860832862cef20612fd5b10b324f5eba1b4015.tar.gz
[illumos-gate merge]
commit 4deedc8c9617c76c1e08a5265614b205754926c4 12041 tem: x86 needs to use tems.ts_color_map() for 8-bit colors commit 2f572942f3e92c5f77d0b5d0778be90fa16681c1 12040 loader: vbe_print_mode() is missing newline commit e15e891852f98a4fc7afb32f0999b5bc38f7d1f8 12005 update to Intel microcode-20191115 commit f7db5903887928b2b43995473632ef63d130bbd4 2988 nfssrv: need ability to go to submounts for v3 and v2 protocols commit 19687f06a4a23ca82910eccd0f898c90ecd3cf62 12017 Assertion failure in kstat_waitq_to_runq from blkdev
-rw-r--r--manifest17
-rw-r--r--usr/src/boot/sys/boot/i386/libi386/vbe.c6
-rw-r--r--usr/src/cmd/fs.d/nfs/lib/sharetab.h3
-rw-r--r--usr/src/data/ucode/Makefile.links32
-rw-r--r--usr/src/data/ucode/README.ucode2
-rw-r--r--usr/src/data/ucode/intel/000406D8-01bin0 -> 84992 bytes
-rw-r--r--usr/src/data/ucode/intel/000406E3-40bin100352 -> 101376 bytes
-rw-r--r--usr/src/data/ucode/intel/00050653-01bin0 -> 32768 bytes
-rw-r--r--usr/src/data/ucode/intel/00050654-01bin33792 -> 34816 bytes
-rw-r--r--usr/src/data/ucode/intel/00050656-01bin0 -> 51200 bytes
-rw-r--r--usr/src/data/ucode/intel/00050657-01bin51200 -> 51200 bytes
-rw-r--r--usr/src/data/ucode/intel/000506E3-02bin100352 -> 101376 bytes
-rw-r--r--usr/src/data/ucode/intel/00060663-80bin0 -> 87040 bytes
-rw-r--r--usr/src/data/ucode/intel/000706A1-01bin73728 -> 73728 bytes
-rw-r--r--usr/src/data/ucode/intel/000706A8-01bin0 -> 74752 bytes
-rw-r--r--usr/src/data/ucode/intel/000706E5-80bin0 -> 102400 bytes
-rw-r--r--usr/src/data/ucode/intel/000806E9-10bin98304 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000806E9-40bin99328 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000806EA-40bin99328 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000806EB-10bin98304 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000806EC-04bin97280 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000906E9-02bin99328 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000906EA-02bin98304 -> 99328 bytes
-rw-r--r--usr/src/data/ucode/intel/000906EB-02bin99328 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000906EC-02bin98304 -> 99328 bytes
-rw-r--r--usr/src/data/ucode/intel/000906ED-02bin97280 -> 100352 bytes
-rw-r--r--usr/src/data/ucode/intel/000A0660-80bin0 -> 91136 bytes
-rw-r--r--usr/src/lib/libshare/nfs/libshare_nfs.c12
-rw-r--r--usr/src/lib/libshare/nfs/libshare_nfs.h1
-rw-r--r--usr/src/man/man1m/share_nfs.1m30
-rw-r--r--usr/src/pkg/manifests/system-kernel-platform.mf34
-rw-r--r--usr/src/uts/common/fs/nfs/nfs3_srv.c64
-rw-r--r--usr/src/uts/common/fs/nfs/nfs_srv.c116
-rw-r--r--usr/src/uts/common/io/blkdev/blkdev.c28
-rw-r--r--usr/src/uts/common/io/tem_safe.c15
-rw-r--r--usr/src/uts/common/nfs/export.h7
-rw-r--r--usr/src/uts/common/nfs/nfs.h4
37 files changed, 312 insertions, 59 deletions
diff --git a/manifest b/manifest
index cbc1f05c14..713d008873 100644
--- a/manifest
+++ b/manifest
@@ -2248,6 +2248,7 @@ f platform/i86pc/ucode/GenuineIntel/00040671-02 0444 root sys
h platform/i86pc/ucode/GenuineIntel/00040671-20=platform/i86pc/ucode/GenuineIntel/00040671-02
f platform/i86pc/ucode/GenuineIntel/000406C3-01 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000406C4-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000406D8-01 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000406E3-40 0444 root sys
h platform/i86pc/ucode/GenuineIntel/000406E3-80=platform/i86pc/ucode/GenuineIntel/000406E3-40
f platform/i86pc/ucode/GenuineIntel/000406F1-01 0444 root sys
@@ -2257,12 +2258,24 @@ h platform/i86pc/ucode/GenuineIntel/000406F1-08=platform/i86pc/ucode/GenuineInte
h platform/i86pc/ucode/GenuineIntel/000406F1-20=platform/i86pc/ucode/GenuineIntel/000406F1-01
h platform/i86pc/ucode/GenuineIntel/000406F1-40=platform/i86pc/ucode/GenuineIntel/000406F1-01
h platform/i86pc/ucode/GenuineIntel/000406F1-80=platform/i86pc/ucode/GenuineIntel/000406F1-01
+f platform/i86pc/ucode/GenuineIntel/00050653-01 0444 root sys
+h platform/i86pc/ucode/GenuineIntel/00050653-02=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-04=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-10=platform/i86pc/ucode/GenuineIntel/00050653-01
+h platform/i86pc/ucode/GenuineIntel/00050653-80=platform/i86pc/ucode/GenuineIntel/00050653-01
f platform/i86pc/ucode/GenuineIntel/00050654-01 0444 root sys
h platform/i86pc/ucode/GenuineIntel/00050654-02=platform/i86pc/ucode/GenuineIntel/00050654-01
h platform/i86pc/ucode/GenuineIntel/00050654-04=platform/i86pc/ucode/GenuineIntel/00050654-01
h platform/i86pc/ucode/GenuineIntel/00050654-10=platform/i86pc/ucode/GenuineIntel/00050654-01
h platform/i86pc/ucode/GenuineIntel/00050654-20=platform/i86pc/ucode/GenuineIntel/00050654-01
h platform/i86pc/ucode/GenuineIntel/00050654-80=platform/i86pc/ucode/GenuineIntel/00050654-01
+f platform/i86pc/ucode/GenuineIntel/00050656-01 0444 root sys
+h platform/i86pc/ucode/GenuineIntel/00050656-02=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-04=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-08=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-10=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-20=platform/i86pc/ucode/GenuineIntel/00050656-01
+h platform/i86pc/ucode/GenuineIntel/00050656-80=platform/i86pc/ucode/GenuineIntel/00050656-01
f platform/i86pc/ucode/GenuineIntel/00050657-01 0444 root sys
h platform/i86pc/ucode/GenuineIntel/00050657-02=platform/i86pc/ucode/GenuineIntel/00050657-01
h platform/i86pc/ucode/GenuineIntel/00050657-04=platform/i86pc/ucode/GenuineIntel/00050657-01
@@ -2272,6 +2285,7 @@ h platform/i86pc/ucode/GenuineIntel/00050657-20=platform/i86pc/ucode/GenuineInte
h platform/i86pc/ucode/GenuineIntel/00050657-80=platform/i86pc/ucode/GenuineIntel/00050657-01
f platform/i86pc/ucode/GenuineIntel/00050662-10 0444 root sys
f platform/i86pc/ucode/GenuineIntel/00050663-10 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/00060663-80 0444 root sys
f platform/i86pc/ucode/GenuineIntel/00050664-10 0444 root sys
f platform/i86pc/ucode/GenuineIntel/00050665-10 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000506C2-01 0444 root sys
@@ -2285,6 +2299,8 @@ h platform/i86pc/ucode/GenuineIntel/000506E3-10=platform/i86pc/ucode/GenuineInte
h platform/i86pc/ucode/GenuineIntel/000506E3-20=platform/i86pc/ucode/GenuineIntel/000506E3-02
f platform/i86pc/ucode/GenuineIntel/000506F1-01 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000706A1-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000706A8-01 0444 root sys
+f platform/i86pc/ucode/GenuineIntel/000706E5-80 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000806E9-10 0444 root sys
f platform/i86pc/ucode/GenuineIntel/000806E9-40 0444 root sys
h platform/i86pc/ucode/GenuineIntel/000806E9-80=platform/i86pc/ucode/GenuineIntel/000806E9-40
@@ -2306,6 +2322,7 @@ f platform/i86pc/ucode/GenuineIntel/000906EC-02 0444 root sys
h platform/i86pc/ucode/GenuineIntel/000906EC-20=platform/i86pc/ucode/GenuineIntel/000906EC-02
f platform/i86pc/ucode/GenuineIntel/000906ED-02 0444 root sys
h platform/i86pc/ucode/GenuineIntel/000906ED-20=platform/i86pc/ucode/GenuineIntel/000906ED-02
+f platform/i86pc/ucode/GenuineIntel/000A0660-80 0444 root sys
d proc 0755 root root
d root 0755 root root
f root/.bash_profile 0644 root root
diff --git a/usr/src/boot/sys/boot/i386/libi386/vbe.c b/usr/src/boot/sys/boot/i386/libi386/vbe.c
index 83876e1a66..ef8770f3c5 100644
--- a/usr/src/boot/sys/boot/i386/libi386/vbe.c
+++ b/usr/src/boot/sys/boot/i386/libi386/vbe.c
@@ -653,19 +653,19 @@ vbe_print_mode(void)
vbe_dump_mode(mode, vbe_mode);
printf("\n");
- printf("%ux%ux%u, stride=%u",
+ printf("%ux%ux%u, stride=%u\n",
gfx_fb.framebuffer_common.framebuffer_width,
gfx_fb.framebuffer_common.framebuffer_height,
gfx_fb.framebuffer_common.framebuffer_bpp,
(gfx_fb.framebuffer_common.framebuffer_pitch << 3) /
gfx_fb.framebuffer_common.framebuffer_bpp);
- printf("\n frame buffer: address=%jx, size=%jx",
+ printf(" frame buffer: address=%jx, size=%jx\n",
(uintmax_t)gfx_fb.framebuffer_common.framebuffer_addr,
(uintmax_t)gfx_fb.framebuffer_common.framebuffer_height *
gfx_fb.framebuffer_common.framebuffer_pitch);
if (vbe_mode->MemoryModel == 0x6) {
- printf("\n color mask: R=%08x, G=%08x, B=%08x\n",
+ printf(" color mask: R=%08x, G=%08x, B=%08x\n",
((1 << gfx_fb.u.fb2.framebuffer_red_mask_size) - 1) <<
gfx_fb.u.fb2.framebuffer_red_field_position,
((1 << gfx_fb.u.fb2.framebuffer_green_mask_size) - 1) <<
diff --git a/usr/src/cmd/fs.d/nfs/lib/sharetab.h b/usr/src/cmd/fs.d/nfs/lib/sharetab.h
index b51c5e7d85..da22aed881 100644
--- a/usr/src/cmd/fs.d/nfs/lib/sharetab.h
+++ b/usr/src/cmd/fs.d/nfs/lib/sharetab.h
@@ -28,7 +28,7 @@
*/
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* All Rights Reserved */
/*
* Portions of this source code were derived from Berkeley 4.3 BSD
@@ -65,6 +65,7 @@ extern "C" {
#define SHOPT_NOACLFAB "noaclfab"
#define SHOPT_UIDMAP "uidmap"
#define SHOPT_GIDMAP "gidmap"
+#define SHOPT_NOHIDE "nohide"
/* XXX The following are added for testing volatile fh's purposes only */
#ifdef VOLATILE_FH_TEST
diff --git a/usr/src/data/ucode/Makefile.links b/usr/src/data/ucode/Makefile.links
index df9318921e..258c8958fc 100644
--- a/usr/src/data/ucode/Makefile.links
+++ b/usr/src/data/ucode/Makefile.links
@@ -1,4 +1,4 @@
-INTEL_LINKS = 00000F32-04 00000F32-08 00000F33-04 00000F33-08 00000F34-04 00000F34-08 00000F34-10 00000F41-04 00000F41-08 00000F41-10 00000F41-20 00000F41-80 00000F43-04 00000F43-08 00000F43-10 00000F43-80 00000F44-04 00000F44-08 00000F44-10 00000F44-80 00000F47-04 00000F47-08 00000F47-10 00000F47-80 00000F48-08 00000F48-10 00000F48-40 00000F49-04 00000F49-08 00000F49-10 00000F49-20 00000F49-80 00000F4A-08 00000F4A-10 00000F4A-40 00000F64-10 00000F64-20 00000F68-20 0001067A-10 0001067A-40 0001067A-80 000106A4-02 000106A5-02 000106E5-02 000106E5-10 00020652-10 00020655-10 00020655-80 000206A7-10 000206C2-02 000206D6-04 000206D6-08 000206D6-20 000206D6-40 000206D7-04 000206D7-08 000206D7-20 000206D7-40 000206F2-04 00030678-08 00030679-02 00030679-04 00030679-08 000306A9-10 000306C3-10 000306C3-20 000306D4-80 000306E4-04 000306E4-08 000306E4-20 000306E4-40 000306E4-80 000306E6-04 000306E6-08 000306E6-20 000306E6-40 000306E6-80 000306E7-04 000306E7-08 000306E7-20 000306E7-40 000306E7-80 000306F2-02 000306F2-04 000306F2-08 000306F2-20 000306F2-40 00040651-10 00040651-20 00040651-40 00040661-10 00040661-20 00040671-20 000406E3-80 000406F1-02 000406F1-04 000406F1-08 000406F1-20 000406F1-40 000406F1-80 00050654-02 00050654-04 00050654-10 00050654-20 00050654-80 00050657-02 00050657-04 00050657-08 00050657-10 00050657-20 00050657-80 000506C9-02 000506CA-02 000506E3-04 000506E3-10 000506E3-20 000806E9-80 000806EA-80 000806EB-40 000806EB-80 000806EC-10 000806EC-80 000906E9-08 000906E9-20 000906EA-20 000906EC-20 000906ED-20
+INTEL_LINKS = 00000F32-04 00000F32-08 00000F33-04 00000F33-08 00000F34-04 00000F34-08 00000F34-10 00000F41-04 00000F41-08 00000F41-10 00000F41-20 00000F41-80 00000F43-04 00000F43-08 00000F43-10 00000F43-80 00000F44-04 00000F44-08 00000F44-10 00000F44-80 00000F47-04 00000F47-08 00000F47-10 00000F47-80 00000F48-08 00000F48-10 00000F48-40 00000F49-04 00000F49-08 00000F49-10 00000F49-20 00000F49-80 00000F4A-08 00000F4A-10 00000F4A-40 00000F64-10 00000F64-20 00000F68-20 0001067A-10 0001067A-40 0001067A-80 000106A4-02 000106A5-02 000106E5-02 000106E5-10 00020652-10 00020655-10 00020655-80 000206A7-10 000206C2-02 000206D6-04 000206D6-08 000206D6-20 000206D6-40 000206D7-04 000206D7-08 000206D7-20 000206D7-40 000206F2-04 00030678-08 00030679-02 00030679-04 00030679-08 000306A9-10 000306C3-10 000306C3-20 000306D4-80 000306E4-04 000306E4-08 000306E4-20 000306E4-40 000306E4-80 000306E6-04 000306E6-08 000306E6-20 000306E6-40 000306E6-80 000306E7-04 000306E7-08 000306E7-20 000306E7-40 000306E7-80 000306F2-02 000306F2-04 000306F2-08 000306F2-20 000306F2-40 00040651-10 00040651-20 00040651-40 00040661-10 00040661-20 00040671-20 000406E3-80 000406F1-02 000406F1-04 000406F1-08 000406F1-20 000406F1-40 000406F1-80 00050653-02 00050653-04 00050653-10 00050653-80 00050654-02 00050654-04 00050654-10 00050654-20 00050654-80 00050656-02 00050656-04 00050656-08 00050656-10 00050656-20 00050656-80 00050657-02 00050657-04 00050657-08 00050657-10 00050657-20 00050657-80 000506C9-02 000506CA-02 000506E3-04 000506E3-10 000506E3-20 000806E9-80 000806EA-80 000806EB-40 000806EB-80 000806EC-10 000806EC-80 000906E9-08 000906E9-20 000906EA-20 000906EC-20 000906ED-20
$(ROOTINTELDIR)/00000F32-04: $(ROOTINTELDIR)/00000F32-01
$(RM) $@; $(LN) $^ $@
@@ -300,6 +300,18 @@ $(ROOTINTELDIR)/000406F1-40: $(ROOTINTELDIR)/000406F1-01
$(ROOTINTELDIR)/000406F1-80: $(ROOTINTELDIR)/000406F1-01
$(RM) $@; $(LN) $^ $@
+$(ROOTINTELDIR)/00050653-02: $(ROOTINTELDIR)/00050653-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-04: $(ROOTINTELDIR)/00050653-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-10: $(ROOTINTELDIR)/00050653-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050653-80: $(ROOTINTELDIR)/00050653-01
+ $(RM) $@; $(LN) $^ $@
+
$(ROOTINTELDIR)/00050654-02: $(ROOTINTELDIR)/00050654-01
$(RM) $@; $(LN) $^ $@
@@ -315,6 +327,24 @@ $(ROOTINTELDIR)/00050654-20: $(ROOTINTELDIR)/00050654-01
$(ROOTINTELDIR)/00050654-80: $(ROOTINTELDIR)/00050654-01
$(RM) $@; $(LN) $^ $@
+$(ROOTINTELDIR)/00050656-02: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-04: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-08: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-10: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-20: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
+$(ROOTINTELDIR)/00050656-80: $(ROOTINTELDIR)/00050656-01
+ $(RM) $@; $(LN) $^ $@
+
$(ROOTINTELDIR)/00050657-02: $(ROOTINTELDIR)/00050657-01
$(RM) $@; $(LN) $^ $@
diff --git a/usr/src/data/ucode/README.ucode b/usr/src/data/ucode/README.ucode
index 2968fc5ec5..fa2ea2269d 100644
--- a/usr/src/data/ucode/README.ucode
+++ b/usr/src/data/ucode/README.ucode
@@ -38,4 +38,4 @@ of updating the manifest as necessary. Be careful about new files.
AMD: Updated in March 2012 as part of illumos#2546. Exact revision
unknown.
-Intel: Linux 20190918 release
+Intel: Linux 20191115 release
diff --git a/usr/src/data/ucode/intel/000406D8-01 b/usr/src/data/ucode/intel/000406D8-01
new file mode 100644
index 0000000000..7c66bec294
--- /dev/null
+++ b/usr/src/data/ucode/intel/000406D8-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/000406E3-40 b/usr/src/data/ucode/intel/000406E3-40
index 8f7afa6efd..1fabcf801d 100644
--- a/usr/src/data/ucode/intel/000406E3-40
+++ b/usr/src/data/ucode/intel/000406E3-40
Binary files differ
diff --git a/usr/src/data/ucode/intel/00050653-01 b/usr/src/data/ucode/intel/00050653-01
new file mode 100644
index 0000000000..9777db046e
--- /dev/null
+++ b/usr/src/data/ucode/intel/00050653-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/00050654-01 b/usr/src/data/ucode/intel/00050654-01
index 754d08173e..1dfee4c1db 100644
--- a/usr/src/data/ucode/intel/00050654-01
+++ b/usr/src/data/ucode/intel/00050654-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/00050656-01 b/usr/src/data/ucode/intel/00050656-01
new file mode 100644
index 0000000000..644fbd0f77
--- /dev/null
+++ b/usr/src/data/ucode/intel/00050656-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/00050657-01 b/usr/src/data/ucode/intel/00050657-01
index b5e3f112a1..b2c7588119 100644
--- a/usr/src/data/ucode/intel/00050657-01
+++ b/usr/src/data/ucode/intel/00050657-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/000506E3-02 b/usr/src/data/ucode/intel/000506E3-02
index 3dfc610744..a3119d52f3 100644
--- a/usr/src/data/ucode/intel/000506E3-02
+++ b/usr/src/data/ucode/intel/000506E3-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/00060663-80 b/usr/src/data/ucode/intel/00060663-80
new file mode 100644
index 0000000000..22e36d2b65
--- /dev/null
+++ b/usr/src/data/ucode/intel/00060663-80
Binary files differ
diff --git a/usr/src/data/ucode/intel/000706A1-01 b/usr/src/data/ucode/intel/000706A1-01
index 43a86f2be8..c9fcc07cbd 100644
--- a/usr/src/data/ucode/intel/000706A1-01
+++ b/usr/src/data/ucode/intel/000706A1-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/000706A8-01 b/usr/src/data/ucode/intel/000706A8-01
new file mode 100644
index 0000000000..7468c9f12a
--- /dev/null
+++ b/usr/src/data/ucode/intel/000706A8-01
Binary files differ
diff --git a/usr/src/data/ucode/intel/000706E5-80 b/usr/src/data/ucode/intel/000706E5-80
new file mode 100644
index 0000000000..1339fd29ed
--- /dev/null
+++ b/usr/src/data/ucode/intel/000706E5-80
Binary files differ
diff --git a/usr/src/data/ucode/intel/000806E9-10 b/usr/src/data/ucode/intel/000806E9-10
index c7fe3a961e..3bb022f42a 100644
--- a/usr/src/data/ucode/intel/000806E9-10
+++ b/usr/src/data/ucode/intel/000806E9-10
Binary files differ
diff --git a/usr/src/data/ucode/intel/000806E9-40 b/usr/src/data/ucode/intel/000806E9-40
index 49aea22aee..f85a30551e 100644
--- a/usr/src/data/ucode/intel/000806E9-40
+++ b/usr/src/data/ucode/intel/000806E9-40
Binary files differ
diff --git a/usr/src/data/ucode/intel/000806EA-40 b/usr/src/data/ucode/intel/000806EA-40
index 20ff87c8c8..3b4ef6b354 100644
--- a/usr/src/data/ucode/intel/000806EA-40
+++ b/usr/src/data/ucode/intel/000806EA-40
Binary files differ
diff --git a/usr/src/data/ucode/intel/000806EB-10 b/usr/src/data/ucode/intel/000806EB-10
index 9eae11d13c..5fb3f554a8 100644
--- a/usr/src/data/ucode/intel/000806EB-10
+++ b/usr/src/data/ucode/intel/000806EB-10
Binary files differ
diff --git a/usr/src/data/ucode/intel/000806EC-04 b/usr/src/data/ucode/intel/000806EC-04
index b0458f3abc..624e73e5d8 100644
--- a/usr/src/data/ucode/intel/000806EC-04
+++ b/usr/src/data/ucode/intel/000806EC-04
Binary files differ
diff --git a/usr/src/data/ucode/intel/000906E9-02 b/usr/src/data/ucode/intel/000906E9-02
index 51202b3fca..26e0452836 100644
--- a/usr/src/data/ucode/intel/000906E9-02
+++ b/usr/src/data/ucode/intel/000906E9-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/000906EA-02 b/usr/src/data/ucode/intel/000906EA-02
index 68aafca7ed..efec04d507 100644
--- a/usr/src/data/ucode/intel/000906EA-02
+++ b/usr/src/data/ucode/intel/000906EA-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/000906EB-02 b/usr/src/data/ucode/intel/000906EB-02
index 17fddc8670..f11c38e307 100644
--- a/usr/src/data/ucode/intel/000906EB-02
+++ b/usr/src/data/ucode/intel/000906EB-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/000906EC-02 b/usr/src/data/ucode/intel/000906EC-02
index 5feee15c02..c6e61a513c 100644
--- a/usr/src/data/ucode/intel/000906EC-02
+++ b/usr/src/data/ucode/intel/000906EC-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/000906ED-02 b/usr/src/data/ucode/intel/000906ED-02
index b438fbddcb..5f1e794cb2 100644
--- a/usr/src/data/ucode/intel/000906ED-02
+++ b/usr/src/data/ucode/intel/000906ED-02
Binary files differ
diff --git a/usr/src/data/ucode/intel/000A0660-80 b/usr/src/data/ucode/intel/000A0660-80
new file mode 100644
index 0000000000..0ab1930343
--- /dev/null
+++ b/usr/src/data/ucode/intel/000A0660-80
Binary files differ
diff --git a/usr/src/lib/libshare/nfs/libshare_nfs.c b/usr/src/lib/libshare/nfs/libshare_nfs.c
index f8f8ff0710..d5fc9fbbfc 100644
--- a/usr/src/lib/libshare/nfs/libshare_nfs.c
+++ b/usr/src/lib/libshare/nfs/libshare_nfs.c
@@ -175,8 +175,10 @@ struct option_defs optdefs[] = {
{SHOPT_UIDMAP, OPT_UIDMAP, OPT_TYPE_MAPPING},
#define OPT_GIDMAP 19
{SHOPT_GIDMAP, OPT_GIDMAP, OPT_TYPE_MAPPING},
+#define OPT_NOHIDE 20
+ {SHOPT_NOHIDE, OPT_NOHIDE, OPT_TYPE_BOOLEAN},
#ifdef VOLATILE_FH_TEST /* XXX added for testing volatile fh's only */
-#define OPT_VOLFH 20
+#define OPT_VOLFH 21
{SHOPT_VOLFH, OPT_VOLFH},
#endif /* VOLATILE_FH_TEST */
NULL
@@ -1028,6 +1030,14 @@ fill_export_from_optionset(struct exportdata *export, sa_optionset_t optionset)
else
export->ex_flags &= ~EX_NOACLFAB;
break;
+ case OPT_NOHIDE:
+ if (value != NULL && (strcasecmp(value, "true") == 0 ||
+ strcmp(value, "1") == 0))
+ export->ex_flags |= EX_NOHIDE;
+ else
+ export->ex_flags &= ~EX_NOHIDE;
+
+ break;
default:
/* have a syntactic error */
(void) printf(dgettext(TEXT_DOMAIN,
diff --git a/usr/src/lib/libshare/nfs/libshare_nfs.h b/usr/src/lib/libshare/nfs/libshare_nfs.h
index ac608f2b52..4a0660407e 100644
--- a/usr/src/lib/libshare/nfs/libshare_nfs.h
+++ b/usr/src/lib/libshare/nfs/libshare_nfs.h
@@ -56,6 +56,7 @@ extern "C" {
#define SHOPT_NOACLFAB "noaclfab"
#define SHOPT_UIDMAP "uidmap"
#define SHOPT_GIDMAP "gidmap"
+#define SHOPT_NOHIDE "nohide"
/*
* defined options types. These should be in a file rather than
diff --git a/usr/src/man/man1m/share_nfs.1m b/usr/src/man/man1m/share_nfs.1m
index c79b6b9438..8904de8ba1 100644
--- a/usr/src/man/man1m/share_nfs.1m
+++ b/usr/src/man/man1m/share_nfs.1m
@@ -172,6 +172,25 @@ is specified, the default values associated with the global tag in
are used.
Support of NFS server logging is only available for NFS Version 2 and
Version 3 requests.
+.It Sy nohide
+By default, if server exports two filesystems, one of which is mounted as a
+child of the other, NFS Version 2 and Version 3 clients must mount both
+filesystems explicitly in order to access them.
+If a client only mounts the parent, it will see an empty directory at the
+location where the other filesystem is mounted.
+.Pp
+Setting the
+.Sy nohide
+option on a filesystem causes it to no longer be hidden in this manner, and the
+client will be able to move from the parent filesystem to this one without
+noticing the change.
+However, some NFS clients or applications may not function correctly when
+this option is used.
+In particular, files on different underlying filesystems may appear to have
+the same inode numbers.
+The
+.Sy nohide
+option only applies to 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
@@ -786,3 +805,14 @@ use of
does not work as it does with NFS Version 2 and Version 3 and the client
receives an error when attempting to mount
.Pa /export/foo .
+.Pp
+The
+.Sy nohide
+option violates RFC 1094,
+.%T "Network File System Protocol Specification"
+and RFC 1813,
+.%T "NFS: Network File System Version 3 Protocol Specification"
+.Pp
+The
+.Sy nohide
+option is provided for compatibility with Linux NFS.
diff --git a/usr/src/pkg/manifests/system-kernel-platform.mf b/usr/src/pkg/manifests/system-kernel-platform.mf
index f91c304c1a..ed2baf264e 100644
--- a/usr/src/pkg/manifests/system-kernel-platform.mf
+++ b/usr/src/pkg/manifests/system-kernel-platform.mf
@@ -1096,12 +1096,18 @@ $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406C3-01 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406C4-01 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406D8-01 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406E3-40 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000406F1-01 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050653-01 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050654-01 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050656-01 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050657-01 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00050662-10 group=sys \
@@ -1122,8 +1128,14 @@ $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000506E3-02 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000506F1-01 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/00060663-80 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706A1-01 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706A8-01 group=sys \
+ mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000706E5-80 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000806E9-10 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000806E9-40 group=sys \
@@ -1144,6 +1156,8 @@ $(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000906EC-02 group=sys \
mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000906ED-02 group=sys \
mode=0444 reboot-needed=true
+$(i386_ONLY)file path=platform/i86pc/ucode/GenuineIntel/000A0660-80 group=sys \
+ mode=0444 reboot-needed=true
$(i386_ONLY)file path=platform/i86xpv/kernel/$(ARCH64)/unix group=sys \
mode=0755
$(i386_ONLY)file path=platform/i86xpv/kernel/cpu/$(ARCH64)/cpu.generic \
@@ -1596,6 +1610,14 @@ $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/000406F1-40 \
target=000406F1-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/000406F1-80 \
target=000406F1-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-02 \
+ target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-04 \
+ target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-10 \
+ target=00050653-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050653-80 \
+ target=00050653-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-02 \
target=00050654-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-04 \
@@ -1606,6 +1628,18 @@ $(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-20 \
target=00050654-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050654-80 \
target=00050654-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-02 \
+ target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-04 \
+ target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-08 \
+ target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-10 \
+ target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-20 \
+ target=00050656-01
+$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050656-80 \
+ target=00050656-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050657-02 \
target=00050657-01
$(i386_ONLY)hardlink path=platform/i86pc/ucode/GenuineIntel/00050657-04 \
diff --git a/usr/src/uts/common/fs/nfs/nfs3_srv.c b/usr/src/uts/common/fs/nfs/nfs3_srv.c
index b10ae94693..7f5f4611b3 100644
--- a/usr/src/uts/common/fs/nfs/nfs3_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs3_srv.c
@@ -382,6 +382,9 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
dvap = NULL;
+ if (exi != NULL)
+ exi_hold(exi);
+
/*
* Allow lookups from the root - the default
* location of the public filehandle.
@@ -420,8 +423,19 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
fhp = &args->what.dir;
if (strcmp(args->what.name, "..") == 0 &&
EQFID(&exi->exi_fid, FH3TOFIDP(fhp))) {
- resp->status = NFS3ERR_NOENT;
- goto out1;
+ if ((exi->exi_export.ex_flags & EX_NOHIDE) &&
+ (dvp->v_flag & VROOT)) {
+ /*
+ * special case for ".." and 'nohide'exported root
+ */
+ if (rfs_climb_crossmnt(&dvp, &exi, cr) != 0) {
+ resp->status = NFS3ERR_ACCES;
+ goto out1;
+ }
+ } else {
+ resp->status = NFS3ERR_NOENT;
+ goto out1;
+ }
}
ca = (struct sockaddr *)svc_getrpccaller(req->rq_xprt)->buf;
@@ -439,10 +453,12 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
*/
if (PUBLIC_FH3(&args->what.dir)) {
publicfh_flag = TRUE;
+
+ exi_rele(exi);
+
error = rfs_publicfh_mclookup(name, dvp, cr, &vp,
&exi, &sec);
- if (error && exi != NULL)
- exi_rele(exi); /* See comment below Re: publicfh_flag */
+
/*
* Since WebNFS may bypass MOUNT, we need to ensure this
* request didn't come from an unlabeled admin_low client.
@@ -464,8 +480,6 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
if (tp == NULL || tp->tpc_tp.tp_doi !=
l_admin_low->tsl_doi || tp->tpc_tp.host_type !=
SUN_CIPSO) {
- if (exi != NULL)
- exi_rele(exi);
VN_RELE(vp);
error = EACCES;
}
@@ -480,6 +494,12 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
if (name != args->what.name)
kmem_free(name, MAXPATHLEN + 1);
+ if (error == 0 && vn_ismntpt(vp)) {
+ error = rfs_cross_mnt(&vp, &exi);
+ if (error)
+ VN_RELE(vp);
+ }
+
if (is_system_labeled() && error == 0) {
bslabel_t *clabel = req->rq_label;
@@ -490,8 +510,6 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
if (!blequal(&l_admin_low->tsl_label, clabel)) {
if (!do_rfs_label_check(clabel, dvp,
DOMINANCE_CHECK, exi)) {
- if (publicfh_flag && exi != NULL)
- exi_rele(exi);
VN_RELE(vp);
error = EACCES;
}
@@ -512,15 +530,6 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
auth_weak = TRUE;
}
- /*
- * If publicfh_flag is true then we have called rfs_publicfh_mclookup
- * and have obtained a new exportinfo in exi which needs to be
- * released. Note that the original exportinfo pointed to by exi
- * will be released by the caller, common_dispatch.
- */
- if (publicfh_flag)
- exi_rele(exi);
-
if (error) {
VN_RELE(vp);
goto out;
@@ -529,6 +538,7 @@ rfs3_lookup(LOOKUP3args *args, LOOKUP3res *resp, struct exportinfo *exi,
va.va_mask = AT_ALL;
vap = rfs4_delegated_getattr(vp, &va, 0, cr) ? NULL : &va;
+ exi_rele(exi);
VN_RELE(vp);
resp->status = NFS3_OK;
@@ -556,6 +566,9 @@ out:
} else
resp->status = puterrno3(error);
out1:
+ if (exi != NULL)
+ exi_rele(exi);
+
DTRACE_NFSV3_4(op__lookup__done, struct svc_req *, req,
cred_t *, cr, vnode_t *, dvp, LOOKUP3res *, resp);
@@ -3609,13 +3622,18 @@ good:
if (vn_is_nfs_reparse(nvp, cr))
nvap->va_type = VLNK;
- vattr_to_post_op_attr(nvap, &infop[i].attr);
-
- error = makefh3(&infop[i].fh.handle, nvp, exi);
- if (!error)
- infop[i].fh.handle_follows = TRUE;
- else
+ if (vn_ismntpt(nvp)) {
+ infop[i].attr.attributes = FALSE;
infop[i].fh.handle_follows = FALSE;
+ } else {
+ vattr_to_post_op_attr(nvap, &infop[i].attr);
+
+ error = makefh3(&infop[i].fh.handle, nvp, exi);
+ if (!error)
+ infop[i].fh.handle_follows = TRUE;
+ else
+ infop[i].fh.handle_follows = FALSE;
+ }
VN_RELE(nvp);
dp = nextdp(dp);
diff --git a/usr/src/uts/common/fs/nfs/nfs_srv.c b/usr/src/uts/common/fs/nfs/nfs_srv.c
index 0588c5643e..2535ab3219 100644
--- a/usr/src/uts/common/fs/nfs/nfs_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs_srv.c
@@ -18,9 +18,10 @@
*
* CDDL HEADER END
*/
+
/*
* Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 2016 by Delphix. All rights reserved.
*/
@@ -329,6 +330,80 @@ rfs_setattr_getfh(struct nfssaargs *args)
return (&args->saa_fh);
}
+/* Change and release @exip and @vpp only in success */
+int
+rfs_cross_mnt(vnode_t **vpp, struct exportinfo **exip)
+{
+ struct exportinfo *exi;
+ vnode_t *vp = *vpp;
+ fid_t fid;
+ int error;
+
+ VN_HOLD(vp);
+
+ if ((error = traverse(&vp)) != 0) {
+ VN_RELE(vp);
+ return (error);
+ }
+
+ bzero(&fid, sizeof (fid));
+ fid.fid_len = MAXFIDSZ;
+ error = VOP_FID(vp, &fid, NULL);
+ if (error) {
+ VN_RELE(vp);
+ return (error);
+ }
+
+ exi = checkexport(&vp->v_vfsp->vfs_fsid, &fid);
+ if (exi == NULL ||
+ (exi->exi_export.ex_flags & EX_NOHIDE) == 0) {
+ /*
+ * It is not error, just subdir is not exported
+ * or "nohide" is not set
+ */
+ if (exi != NULL)
+ exi_rele(exi);
+ VN_RELE(vp);
+ } else {
+ /* go to submount */
+ exi_rele(*exip);
+ *exip = exi;
+
+ VN_RELE(*vpp);
+ *vpp = vp;
+ }
+
+ return (0);
+}
+
+/*
+ * Given mounted "dvp" and "exi", go upper mountpoint
+ * with dvp/exi correction
+ * Return 0 in success
+ */
+int
+rfs_climb_crossmnt(vnode_t **dvpp, struct exportinfo **exip, cred_t *cr)
+{
+ struct exportinfo *exi;
+ vnode_t *dvp = *dvpp;
+
+ ASSERT(dvp->v_flag & VROOT);
+
+ VN_HOLD(dvp);
+ dvp = untraverse(dvp);
+ exi = nfs_vptoexi(NULL, dvp, cr, NULL, NULL, FALSE);
+ if (exi == NULL) {
+ VN_RELE(dvp);
+ return (-1);
+ }
+
+ exi_rele(*exip);
+ *exip = exi;
+ VN_RELE(*dvpp);
+ *dvpp = dvp;
+
+ return (0);
+}
/*
* Directory lookup.
* Returns an fhandle and file attributes for file name in a directory.
@@ -381,6 +456,8 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
}
}
+ exi_hold(exi);
+
/*
* Not allow lookup beyond root.
* If the filehandle matches a filehandle of the exi,
@@ -388,9 +465,19 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
*/
if (strcmp(da->da_name, "..") == 0 &&
EQFID(&exi->exi_fid, (fid_t *)&fhp->fh_len)) {
- VN_RELE(dvp);
- dr->dr_status = NFSERR_NOENT;
- return;
+ if ((exi->exi_export.ex_flags & EX_NOHIDE) &&
+ (dvp->v_flag & VROOT)) {
+ /*
+ * special case for ".." and 'nohide'exported root
+ */
+ if (rfs_climb_crossmnt(&dvp, &exi, cr) != 0) {
+ error = NFSERR_ACCES;
+ goto out;
+ }
+ } else {
+ error = NFSERR_NOENT;
+ goto out;
+ }
}
ca = (struct sockaddr *)svc_getrpccaller(req->rq_xprt)->buf;
@@ -398,8 +485,8 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
MAXPATHLEN);
if (name == NULL) {
- dr->dr_status = NFSERR_ACCES;
- return;
+ error = NFSERR_ACCES;
+ goto out;
}
/*
@@ -413,6 +500,9 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
*/
if (PUBLIC_FH2(fhp)) {
publicfh_flag = TRUE;
+
+ exi_rele(exi);
+
error = rfs_publicfh_mclookup(name, dvp, cr, &vp, &exi,
&sec);
} else {
@@ -426,6 +516,11 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (name != da->da_name)
kmem_free(name, MAXPATHLEN);
+ if (error == 0 && vn_ismntpt(vp)) {
+ error = rfs_cross_mnt(&vp, &exi);
+ if (error)
+ VN_RELE(vp);
+ }
if (!error) {
va.va_mask = AT_ALL; /* we want everything */
@@ -452,15 +547,10 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
VN_RELE(vp);
}
+out:
VN_RELE(dvp);
- /*
- * If publicfh_flag is true then we have called rfs_publicfh_mclookup
- * and have obtained a new exportinfo in exi which needs to be
- * released. Note the the original exportinfo pointed to by exi
- * will be released by the caller, comon_dispatch.
- */
- if (publicfh_flag && exi != NULL)
+ if (exi != NULL)
exi_rele(exi);
/*
diff --git a/usr/src/uts/common/io/blkdev/blkdev.c b/usr/src/uts/common/io/blkdev/blkdev.c
index 2b185dff2b..07fa32da1d 100644
--- a/usr/src/uts/common/io/blkdev/blkdev.c
+++ b/usr/src/uts/common/io/blkdev/blkdev.c
@@ -122,9 +122,10 @@
* There are 4 instance global locks d_ocmutex, d_ksmutex, d_errmutex and
* d_statemutex. As well a q_iomutex per waitq/runq pair.
*
- * Currently, there is no lock hierarchy. Nowhere do we ever own more than
- * one lock, any change needs to be documented here with a defined
- * hierarchy.
+ * Lock Hierarchy
+ * --------------
+ * The only two locks which may be held simultaneously are q_iomutex and
+ * d_ksmutex. In all cases q_iomutex must be acquired before d_ksmutex.
*/
#define BD_MAXPART 64
@@ -1668,6 +1669,10 @@ bd_sched(bd_t *bd, bd_queue_t *bq)
while ((bq->q_qactive < bq->q_qsize) &&
((xi = list_remove_head(&bq->q_waitq)) != NULL)) {
+ mutex_enter(&bd->d_ksmutex);
+ kstat_waitq_to_runq(bd->d_kiop);
+ mutex_exit(&bd->d_ksmutex);
+
bq->q_qactive++;
list_insert_tail(&bq->q_runq, xi);
@@ -1679,10 +1684,6 @@ bd_sched(bd_t *bd, bd_queue_t *bq)
mutex_exit(&bq->q_iomutex);
- mutex_enter(&bd->d_ksmutex);
- kstat_waitq_to_runq(bd->d_kiop);
- mutex_exit(&bd->d_ksmutex);
-
rv = xi->i_func(bd->d_private, &xi->i_public);
if (rv != 0) {
bp = xi->i_bp;
@@ -1690,11 +1691,13 @@ bd_sched(bd_t *bd, bd_queue_t *bq)
biodone(bp);
atomic_inc_32(&bd->d_kerr->bd_transerrs.value.ui32);
+
+ mutex_enter(&bq->q_iomutex);
+
mutex_enter(&bd->d_ksmutex);
kstat_runq_exit(bd->d_kiop);
mutex_exit(&bd->d_ksmutex);
- mutex_enter(&bq->q_iomutex);
bq->q_qactive--;
list_remove(&bq->q_runq, xi);
bd_xfer_free(xi);
@@ -1717,13 +1720,15 @@ bd_submit(bd_t *bd, bd_xfer_impl_t *xi)
xi->i_qnum = q;
mutex_enter(&bq->q_iomutex);
+
list_insert_tail(&bq->q_waitq, xi);
- mutex_exit(&bq->q_iomutex);
mutex_enter(&bd->d_ksmutex);
kstat_waitq_enter(bd->d_kiop);
mutex_exit(&bd->d_ksmutex);
+ mutex_exit(&bq->q_iomutex);
+
bd_sched(bd, bq);
}
@@ -1736,13 +1741,14 @@ bd_runq_exit(bd_xfer_impl_t *xi, int err)
mutex_enter(&bq->q_iomutex);
bq->q_qactive--;
- list_remove(&bq->q_runq, xi);
- mutex_exit(&bq->q_iomutex);
mutex_enter(&bd->d_ksmutex);
kstat_runq_exit(bd->d_kiop);
mutex_exit(&bd->d_ksmutex);
+ list_remove(&bq->q_runq, xi);
+ mutex_exit(&bq->q_iomutex);
+
if (err == 0) {
if (bp->b_flags & B_READ) {
atomic_inc_uint(&bd->d_kiop->reads);
diff --git a/usr/src/uts/common/io/tem_safe.c b/usr/src/uts/common/io/tem_safe.c
index 572f9c16bd..5008d4a4d6 100644
--- a/usr/src/uts/common/io/tem_safe.c
+++ b/usr/src/uts/common/io/tem_safe.c
@@ -2213,9 +2213,17 @@ tem_safe_pix_cursor(struct tem_vt_state *tem, short action,
switch (tems.ts_pdepth) {
case 4:
+ ca.fg_color.mono = fg;
+ ca.bg_color.mono = bg;
+ break;
case 8:
+#ifdef _HAVE_TEM_FIRMWARE
ca.fg_color.mono = fg;
ca.bg_color.mono = bg;
+#else
+ ca.fg_color.mono = tems.ts_color_map(fg);
+ ca.bg_color.mono = tems.ts_color_map(bg);
+#endif
break;
case 15:
case 16:
@@ -2256,8 +2264,8 @@ tem_safe_pix_cursor(struct tem_vt_state *tem, short action,
ca.bg_color.twentyfour[0] = (color >> 16) & 0xFF;
ca.bg_color.twentyfour[1] = (color >> 8) & 0xFF;
ca.bg_color.twentyfour[2] = color & 0xFF;
- break;
#endif
+ break;
}
ca.action = action;
@@ -2292,6 +2300,11 @@ bit_to_pix8(struct tem_vt_state *tem, tem_char_t c, text_color_t fg_color,
text_color_t bg_color)
{
uint8_t *dest = (uint8_t *)tem->tvs_pix_data;
+
+#ifndef _HAVE_TEM_FIRMWARE
+ fg_color = (text_color_t)tems.ts_color_map(fg_color);
+ bg_color = (text_color_t)tems.ts_color_map(bg_color);
+#endif
font_bit_to_pix8(&tems.ts_font, dest, c, fg_color, bg_color);
}
diff --git a/usr/src/uts/common/nfs/export.h b/usr/src/uts/common/nfs/export.h
index 0252e18b34..60c6320db7 100644
--- a/usr/src/uts/common/nfs/export.h
+++ b/usr/src/uts/common/nfs/export.h
@@ -20,8 +20,8 @@
*/
/*
- * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
* Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
* Copyright 2016 Jason King.
*/
@@ -68,7 +68,7 @@ struct secinfo {
int32_t s_refcnt; /* reference count for tracking */
/* how many children (self included) */
/* use this flavor. */
- int s_window; /* window */
+ int s_window; /* window */
uint_t s_rootid; /* UID to use for authorized roots */
int s_rootcnt; /* count of root names */
caddr_t *s_rootnames; /* array of root names */
@@ -83,7 +83,7 @@ struct secinfo32 {
int32_t s_refcnt; /* reference count for tracking */
/* how many children (self included) */
/* use this flavor. */
- int32_t s_window; /* window */
+ int32_t s_window; /* window */
uint32_t s_rootid; /* UID to use for authorized roots */
int32_t s_rootcnt; /* count of root names */
caddr32_t s_rootnames; /* array of root names */
@@ -189,6 +189,7 @@ struct exportdata32 {
#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 */
+#define EX_NOHIDE 0x4000 /* traversable from exported parent */
#ifdef _KERNEL
diff --git a/usr/src/uts/common/nfs/nfs.h b/usr/src/uts/common/nfs/nfs.h
index fe69ae4e87..e26025b003 100644
--- a/usr/src/uts/common/nfs/nfs.h
+++ b/usr/src/uts/common/nfs/nfs.h
@@ -31,7 +31,7 @@
#ifndef _NFS_NFS_H
#define _NFS_NFS_H
-/* nfs.h 2.38 88/08/19 SMI */
+/* nfs.h 2.38 88/08/19 SMI */
#include <sys/isa_defs.h>
#include <sys/vfs.h>
@@ -2278,6 +2278,8 @@ extern int rfs_publicfh_mclookup(char *, vnode_t *, cred_t *, vnode_t **,
struct exportinfo **, struct sec_ol *);
extern int rfs_pathname(char *, vnode_t **, vnode_t **, vnode_t *,
cred_t *, int);
+extern int rfs_cross_mnt(vnode_t **, struct exportinfo **);
+extern int rfs_climb_crossmnt(vnode_t **, struct exportinfo **, cred_t *);
extern vtype_t nf3_to_vt[];
extern kstat_named_t *rfsproccnt_v3_ptr;