Print this page
NEX-16818 Add fksmbcl development tool
NEX-17264 SMB client test tp_smbutil_013 fails after NEX-14666
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Matt Barden <matt.barden@nexenta.com>
and: (fix ref leaks)
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-5665 SMB2 oplock leases
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Evan Layton <evan.layton@nexenta.com>
Reviewed by: Roman Strashkin <roman.strashkin@nexenta.com>
NEX-5566 libsqlite always rebuilds after illumos 6648
Reviewed by: Steve Peng <steve.peng@nexenta.com>
NEX-5357 recursive mutex detection in libfakekernel
Reviewed by: Matt Barden <matt.barden@nexenta.com>
NEX-4083 Upstream changes from illumos 5917 and 5995
Reviewed by: Matt Barden <matt.barden@nexenta.com>
Reviewed by: Kevin Crowe <kevin.crowe@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
SMB-70 Hang during boot after SMB-50
SMB-50 User-mode SMB server
Includes work by these authors:
Thomas Keiser <thomas.keiser@nexenta.com>
Albert Lee <trisk@nexenta.com>
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/lib/libfakekernel/common/printf.c
+++ new/usr/src/lib/libfakekernel/common/printf.c
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 9 * or http://www.opensolaris.org/os/licensing.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
|
↓ open down ↓ |
13 lines elided |
↑ open up ↑ |
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21 /*
22 22 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
23 23 * Copyright (c) 2012 by Delphix. All rights reserved.
24 - * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
24 + * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
25 25 * Copyright 2017 RackTop Systems.
26 26 */
27 27
28 28 #include <sys/param.h>
29 29 #include <sys/types.h>
30 30 #include <sys/varargs.h>
31 31 #include <sys/systm.h>
32 32 #include <sys/cmn_err.h>
33 33 #include <sys/log.h>
34 34
35 35 #include <fakekernel.h>
36 36
37 37 void abort(void) __NORETURN;
38 +void debug_enter(char *);
38 39
39 40 char *volatile panicstr;
40 41 va_list panicargs;
41 42 char panicbuf[512];
42 43
43 44 volatile int aok;
44 45
45 46 static const int
46 47 ce_flags[CE_IGNORE] = { SL_NOTE, SL_NOTE, SL_WARN, SL_FATAL };
47 48 static const char
48 49 ce_prefix[CE_IGNORE][10] = { "", "NOTICE: ", "WARNING: ", "" };
49 50 static const char
50 51 ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" };
51 52
52 53
53 54 /*
54 55 * This function is just a stub, exported NODIRECT so that
55 56 * comsumers like fksmbd can provide their own.
56 57 * (One that actually prints the messages.)
57 58 *
58 59 * It's used by fakekernel_cprintf() below.
59 60 * The flags are SL_... from strlog.h
60 61 */
61 62 /* ARGSUSED */
62 63 void
63 64 fakekernel_putlog(char *msg, size_t len, int flags)
64 65 {
65 66 }
66 67
67 68 /*
68 69 * fakekernel_cprintf() corresponds to os/printf.c:cprintf()
69 70 * This formats the message and calls fakekernel_putlog().
70 71 * It's exported NODIRECT to allow replacment.
71 72 * The flags are SL_... from strlog.h
72 73 */
73 74 void
74 75 fakekernel_cprintf(const char *fmt, va_list adx, int flags,
75 76 const char *prefix, const char *suffix)
76 77 {
77 78 size_t bufsize = LOG_MSGSIZE;
78 79 char buf[LOG_MSGSIZE];
79 80 char *bufp = buf;
80 81 char *msgp, *bufend;
81 82 size_t len;
82 83
83 84 if (strchr("^!?", fmt[0]) != NULL) {
84 85 if (fmt[0] == '^')
85 86 flags |= SL_CONSONLY;
86 87 else if (fmt[0] == '!')
87 88 flags |= SL_LOGONLY;
88 89 fmt++;
89 90 }
90 91
91 92 bufend = bufp + bufsize;
|
↓ open down ↓ |
44 lines elided |
↑ open up ↑ |
92 93 msgp = bufp;
93 94 msgp += snprintf(msgp, bufend - msgp, "[fake_kernel] ");
94 95 msgp += snprintf(msgp, bufend - msgp, prefix);
95 96 msgp += vsnprintf(msgp, bufend - msgp, fmt, adx);
96 97 msgp += snprintf(msgp, bufend - msgp, suffix);
97 98 len = msgp - bufp;
98 99
99 100 fakekernel_putlog(bufp, len, flags);
100 101 }
101 102
103 +/* ARGSUSED */
104 +void
105 +vzprintf(zoneid_t zoneid, const char *fmt, va_list adx)
106 +{
107 + fakekernel_cprintf(fmt, adx, SL_CONSOLE | SL_NOTE, "", "");
108 +}
109 +
110 +/*PRINTFLIKE2*/
111 +void
112 +zprintf(zoneid_t zoneid, const char *fmt, ...)
113 +{
114 + va_list adx;
115 +
116 + va_start(adx, fmt);
117 + vzprintf(zoneid, fmt, adx);
118 + va_end(adx);
119 +}
120 +
102 121 /*
103 122 * "User-level crash dump", if you will.
104 123 */
105 124 void
106 125 vpanic(const char *fmt, va_list adx)
107 126 {
108 127 va_list tmpargs;
109 128
110 129 panicstr = (char *)fmt;
111 130 va_copy(panicargs, adx);
112 131
113 132 va_copy(tmpargs, adx);
114 133 fakekernel_cprintf(fmt, tmpargs, SL_FATAL, "fatal: ", "\n");
115 134
116 135 /* Call libc`assfail() so that mdb ::status works */
117 136 (void) vsnprintf(panicbuf, sizeof (panicbuf), fmt, adx);
118 - assfail(panicbuf, "(panic)", 0);
137 + debug_enter(panicbuf);
138 + (void) assfail(panicbuf, "(panic)", 0);
119 139
120 140 abort(); /* avoid "noreturn" warnings */
121 141 }
122 142
123 143 void
124 144 panic(const char *fmt, ...)
125 145 {
126 146 va_list adx;
127 147
128 148 va_start(adx, fmt);
129 149 vpanic(fmt, adx);
130 150 va_end(adx);
131 151 }
132 152
133 153 void
134 154 fm_panic(const char *fmt, ...)
135 155 {
136 156 va_list adx;
137 157
138 158 va_start(adx, fmt);
139 159 vpanic(fmt, adx);
140 160 va_end(adx);
141 161 }
142 162
143 163 void
144 164 vcmn_err(int ce, const char *fmt, va_list adx)
145 165 {
146 166
147 167 if (ce == CE_PANIC)
148 168 vpanic(fmt, adx);
149 169 if (ce >= CE_IGNORE)
150 170 return;
151 171
152 172 fakekernel_cprintf(fmt, adx, ce_flags[ce] | SL_CONSOLE,
153 173 ce_prefix[ce], ce_suffix[ce]);
154 174 }
|
↓ open down ↓ |
26 lines elided |
↑ open up ↑ |
155 175
156 176 /*PRINTFLIKE2*/
157 177 void
158 178 cmn_err(int ce, const char *fmt, ...)
159 179 {
160 180 va_list adx;
161 181
162 182 va_start(adx, fmt);
163 183 vcmn_err(ce, fmt, adx);
164 184 va_end(adx);
185 +}
186 +
187 +/* ARGSUSED */
188 +void
189 +debug_enter(char *str)
190 +{
191 + /* Just a place for a break point. */
165 192 }
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX