4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25
26 #pragma ident "%Z%%M% %I% %E% SMI"
27
28 /*
29 * return mount association with meta device
30 */
31
32 #include <meta.h>
33
34 #include <sys/mnttab.h>
35
36 #include "meta_lib_prv.h"
37
38 /*
39 * return associated mount point with this mdname_t
40 */
41 char *
42 meta_get_mountp(
43 mdsetname_t *sp,
44 mdname_t *np,
45 md_error_t *ep
46 )
56
57 /* look in mnttab */
58 if ((mfp = open_mnttab()) == NULL) {
59 (void) mdsyserror(ep, errno, MNTTAB);
60 return (NULL);
61 }
62
63 while ((!mountp) && (getmntent(mfp, &m) == 0)) {
64 mdname_t *mnp;
65
66 if ((m.mnt_special == NULL) || (m.mnt_mountp == NULL))
67 continue;
68
69 if (m.mnt_mountp[0] != '/')
70 continue;
71
72 if ((strcmp(m.mnt_fstype, "nfs") == 0) ||
73 (strcmp(m.mnt_fstype, "autofs") == 0) ||
74 (strcmp(m.mnt_fstype, "proc") == 0) ||
75 (strcmp(m.mnt_fstype, "tmpfs") == 0) ||
76 (strcmp(m.mnt_fstype, "cachefs") == 0) ||
77 (strcmp(m.mnt_fstype, "lofs") == 0) ||
78 (strcmp(m.mnt_fstype, "rfs") == 0) ||
79 (strcmp(m.mnt_fstype, "fd") == 0))
80 continue;
81
82 (void) strcpy(mnt_mountp, m.mnt_mountp);
83 (void) strcpy(mnt_special, m.mnt_special);
84 if ((mnp = metaname(&sp, mnt_special, UNKNOWN, ep)) == NULL) {
85 mdclrerror(ep);
86 continue;
87 }
88
89 if (np->dev == mnp->dev) {
90 mountp = mnt_mountp;
91 }
92 }
93
94 /* return success, if found */
95 return (mountp? Strdup(mountp): NULL);
96 }
|
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
25 */
26
27
28 /*
29 * return mount association with meta device
30 */
31
32 #include <meta.h>
33
34 #include <sys/mnttab.h>
35
36 #include "meta_lib_prv.h"
37
38 /*
39 * return associated mount point with this mdname_t
40 */
41 char *
42 meta_get_mountp(
43 mdsetname_t *sp,
44 mdname_t *np,
45 md_error_t *ep
46 )
56
57 /* look in mnttab */
58 if ((mfp = open_mnttab()) == NULL) {
59 (void) mdsyserror(ep, errno, MNTTAB);
60 return (NULL);
61 }
62
63 while ((!mountp) && (getmntent(mfp, &m) == 0)) {
64 mdname_t *mnp;
65
66 if ((m.mnt_special == NULL) || (m.mnt_mountp == NULL))
67 continue;
68
69 if (m.mnt_mountp[0] != '/')
70 continue;
71
72 if ((strcmp(m.mnt_fstype, "nfs") == 0) ||
73 (strcmp(m.mnt_fstype, "autofs") == 0) ||
74 (strcmp(m.mnt_fstype, "proc") == 0) ||
75 (strcmp(m.mnt_fstype, "tmpfs") == 0) ||
76 (strcmp(m.mnt_fstype, "lofs") == 0) ||
77 (strcmp(m.mnt_fstype, "rfs") == 0) ||
78 (strcmp(m.mnt_fstype, "fd") == 0))
79 continue;
80
81 (void) strcpy(mnt_mountp, m.mnt_mountp);
82 (void) strcpy(mnt_special, m.mnt_special);
83 if ((mnp = metaname(&sp, mnt_special, UNKNOWN, ep)) == NULL) {
84 mdclrerror(ep);
85 continue;
86 }
87
88 if (np->dev == mnp->dev) {
89 mountp = mnt_mountp;
90 }
91 }
92
93 /* return success, if found */
94 return (mountp? Strdup(mountp): NULL);
95 }
|