Print this page
11083 support NFS server in zone
Portions contributed by: Dan Kruchinin <dan.kruchinin@nexenta.com>
Portions contributed by: Stepan Zastupov <stepan.zastupov@gmail.com>
Portions contributed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
Portions contributed by: Mike Zeller <mike@mikezeller.net>
Portions contributed by: Dan McDonald <danmcd@joyent.com>
Portions contributed by: Gordon Ross <gordon.w.ross@gmail.com>
Portions contributed by: Vitaliy Gusev <gusev.vitaliy@gmail.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Sanjay Nadkarni <sanjay.nadkarni@nexenta.com>
Reviewed by: Jason King <jbk@joyent.com>
Reviewed by: C Fraire <cfraire@me.com>
Change-Id: I22f289d357503f9b48a0bc2482cc4328a6d43d16
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/uts/common/sharefs/sharefs.h
+++ new/usr/src/uts/common/sharefs/sharefs.h
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
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
|
↓ open down ↓ |
16 lines elided |
↑ open up ↑ |
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 */
26 26
27 +/*
28 + * Copyright 2018 Nexenta Systems, Inc.
29 + */
30 +
27 31 #ifndef _SHAREFS_SHAREFS_H
28 32 #define _SHAREFS_SHAREFS_H
29 33
30 -#pragma ident "%Z%%M% %I% %E% SMI"
31 -
32 34 /*
33 35 * This header provides service for the sharefs module.
34 36 */
35 37
36 38 #include <sys/modctl.h>
37 39 #include <sys/vfs.h>
38 40 #include <sys/vnode.h>
39 41 #include <sys/gfs.h>
40 42 #include <sharefs/share.h>
41 43 #include <sharefs/sharetab.h>
42 44
43 45 #ifdef __cplusplus
44 46 extern "C" {
45 47 #endif
46 48
47 49 #define SHAREFS_ROOT "/etc/dfs"
48 50 #define SHAREFS_BASE "sharetab"
49 51
50 52 /*
51 53 * Lengths of strings.
52 54 */
53 55 typedef struct sharefs_lens {
54 56 int shl_path;
55 57 int shl_res;
56 58 int shl_fstype;
57 59 int shl_opts;
58 60 int shl_descr;
59 61 } sharefs_lens_t;
|
↓ open down ↓ |
18 lines elided |
↑ open up ↑ |
60 62
61 63 /*
62 64 * VFS data object
63 65 */
64 66 typedef struct sharefs_vfs {
65 67 vnode_t *sharefs_vfs_root;
66 68 } sharefs_vfs_t;
67 69
68 70 #define SHAREFS_NAME_MAX MAXNAMELEN
69 71
70 -/*
71 - * The lock ordering whenever sharefs_lock and sharetab_lock both
72 - * need to be held is: sharefs_lock and then sharetab_lock.
73 - */
74 -extern krwlock_t sharefs_lock; /* lock for the vnode ops */
75 -extern sharetab_t *sharefs_sharetab; /* The sharetab. */
72 +typedef struct sharetab_globals {
73 + /*
74 + * The lock ordering whenever sharefs_lock and sharetab_lock both
75 + * need to be held is: sharefs_lock and then sharetab_lock.
76 + */
77 + krwlock_t sharefs_lock; /* lock for the vnode ops */
78 + sharetab_t *sharefs_sharetab; /* The sharetab. */
76 79
77 -extern uint_t sharetab_count; /* How many shares? */
78 -extern krwlock_t sharetab_lock; /* lock for the cached sharetab */
79 -extern size_t sharetab_size; /* How big is the sharetab file? */
80 + uint_t sharetab_count; /* How many shares? */
81 + krwlock_t sharetab_lock; /* lock for the cached sharetab */
82 + size_t sharetab_size; /* How big is the sharetab file? */
80 83
81 -extern timestruc_t sharetab_mtime; /* Last mod to sharetab */
82 -extern timestruc_t sharetab_snap_time; /* Last snap */
83 -extern uint_t sharetab_generation; /* Which copy is it? */
84 + timestruc_t sharetab_mtime; /* Last mod to sharetab */
85 + timestruc_t sharetab_snap_time; /* Last snap */
86 + uint_t sharetab_generation; /* Which copy is it? */
87 +} sharetab_globals_t;
84 88
85 89 #define SHAREFS_INO_FILE 0x80
86 90
87 91 extern vnode_t *sharefs_create_root_file(vfs_t *);
92 +extern sharetab_globals_t *sharetab_get_globals(zone_t *zone);
88 93
89 94 /*
90 95 * Sharetab file
91 96 *
92 97 * Note that even though the sharetab code does not explictly
93 98 * use 'sharefs_file', it is required by GFS that the first
94 99 * field of the private data be a gfs_file_t.
95 100 */
96 101 typedef struct shnode_t {
97 102 gfs_file_t sharefs_file; /* gfs file */
98 103 char *sharefs_snap; /* snapshot of the share */
99 104 size_t sharefs_size; /* size of the snapshot */
100 105 uint_t sharefs_count; /* number of shares */
101 106 uint_t sharefs_refs; /* reference count */
102 107 uint_t sharefs_real_vp; /* Are we a real or snap */
103 108 uint_t sharefs_generation; /* Which copy are we? */
104 109 timestruc_t sharefs_snap_time; /* When were we modded? */
105 110 } shnode_t;
106 111
107 112 /*
108 113 * Some conversion macros:
109 114 */
110 115 #define VTOSH(vp) ((shnode_t *)((vp)->v_data))
111 116
112 117 extern const fs_operation_def_t sharefs_tops_data[];
113 118 extern vnodeops_t *sharefs_ops_data;
114 119
115 120 extern void sharefs_data_init(void);
116 121
117 122 extern void sharefs_sharetab_init(void);
118 123
119 124 #ifdef __cplusplus
120 125 }
121 126 #endif
122 127
123 128 #endif /* !_SHAREFS_SHAREFS_H */
|
↓ open down ↓ |
26 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX