forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
In order to remove the HAVE_PN_UTILS wrappers the pn_alloc() and pn_free() functions must be implemented. The existing illumos implementation were used for this purpose. The `flags` argument which was used in places wrapped by the HAVE_PN_UTILS condition has beed added back to zfs_remove() and zfs_link() functions. This removes a small point of divergence between the ZoL code and upstream. Signed-off-by: Brian Behlendorf <[email protected]> Closes openzfs#4522
- Loading branch information
1 parent
8fc5674
commit da5e151
Showing
10 changed files
with
178 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
/* | ||
* CDDL HEADER START | ||
* | ||
* The contents of this file are subject to the terms of the | ||
* Common Development and Distribution License (the "License"). | ||
* You may not use this file except in compliance with the License. | ||
* | ||
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||
* or http://www.opensolaris.org/os/licensing. | ||
* See the License for the specific language governing permissions | ||
* and limitations under the License. | ||
* | ||
* When distributing Covered Code, include this CDDL HEADER in each | ||
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||
* If applicable, add the following below this CDDL HEADER, with the | ||
* fields enclosed by brackets "[]" replaced with your own identifying | ||
* information: Portions Copyright [yyyy] [name of copyright owner] | ||
* | ||
* CDDL HEADER END | ||
*/ | ||
|
||
/* | ||
* Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. | ||
*/ | ||
|
||
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ | ||
/* All Rights Reserved */ | ||
|
||
/* | ||
* Portions of this source code were derived from Berkeley 4.3 BSD | ||
* under license from the Regents of the University of California. | ||
*/ | ||
|
||
#ifndef _SYS_PATHNAME_H | ||
#define _SYS_PATHNAME_H | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/* | ||
* Pathname structure. | ||
* System calls that operate on path names gather the path name | ||
* from the system call into this structure and reduce it by | ||
* peeling off translated components. If a symbolic link is | ||
* encountered the new path name to be translated is also | ||
* assembled in this structure. | ||
* | ||
* By convention pn_buf is not changed once it's been set to point | ||
* to the underlying storage; routines which manipulate the pathname | ||
* do so by changing pn_path and pn_pathlen. pn_pathlen is redundant | ||
* since the path name is null-terminated, but is provided to make | ||
* some computations faster. | ||
*/ | ||
typedef struct pathname { | ||
char *pn_buf; /* underlying storage */ | ||
char *pn_path; /* remaining pathname */ | ||
size_t pn_pathlen; /* remaining length */ | ||
size_t pn_bufsize; /* total size of pn_buf */ | ||
} pathname_t; | ||
|
||
extern void pn_alloc(struct pathname *); | ||
extern void pn_alloc_sz(struct pathname *, size_t); | ||
extern void pn_free(struct pathname *); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* _SYS_PATHNAME_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
/* | ||
* CDDL HEADER START | ||
* | ||
* The contents of this file are subject to the terms of the | ||
* Common Development and Distribution License (the "License"). | ||
* You may not use this file except in compliance with the License. | ||
* | ||
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE | ||
* or http://www.opensolaris.org/os/licensing. | ||
* See the License for the specific language governing permissions | ||
* and limitations under the License. | ||
* | ||
* When distributing Covered Code, include this CDDL HEADER in each | ||
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. | ||
* If applicable, add the following below this CDDL HEADER, with the | ||
* fields enclosed by brackets "[]" replaced with your own identifying | ||
* information: Portions Copyright [yyyy] [name of copyright owner] | ||
* | ||
* CDDL HEADER END | ||
*/ | ||
/* | ||
* Copyright 2007 Sun Microsystems, Inc. All rights reserved. | ||
* Use is subject to license terms. | ||
*/ | ||
|
||
/* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */ | ||
/* All Rights Reserved */ | ||
|
||
/* | ||
* University Copyright- Copyright (c) 1982, 1986, 1988 | ||
* The Regents of the University of California | ||
* All Rights Reserved | ||
* | ||
* University Acknowledgment- Portions of this document are derived from | ||
* software developed by the University of California, Berkeley, and its | ||
* contributors. | ||
*/ | ||
|
||
|
||
#include <sys/types.h> | ||
#include <sys/systm.h> | ||
#include <sys/pathname.h> | ||
#include <sys/kmem.h> | ||
|
||
/* | ||
* Pathname utilities. | ||
* | ||
* In translating file names we copy each argument file | ||
* name into a pathname structure where we operate on it. | ||
* Each pathname structure can hold "pn_bufsize" characters | ||
* including a terminating null, and operations here support | ||
* allocating and freeing pathname structures, fetching | ||
* strings from user space, getting the next character from | ||
* a pathname, combining two pathnames (used in symbolic | ||
* link processing), and peeling off the first component | ||
* of a pathname. | ||
*/ | ||
|
||
/* | ||
* Allocate contents of pathname structure. Structure is typically | ||
* an automatic variable in calling routine for convenience. | ||
* | ||
* May sleep in the call to kmem_alloc() and so must not be called | ||
* from interrupt level. | ||
*/ | ||
void | ||
pn_alloc(struct pathname *pnp) | ||
{ | ||
pn_alloc_sz(pnp, MAXPATHLEN); | ||
} | ||
void | ||
pn_alloc_sz(struct pathname *pnp, size_t sz) | ||
{ | ||
pnp->pn_path = pnp->pn_buf = kmem_alloc(sz, KM_SLEEP); | ||
pnp->pn_pathlen = 0; | ||
pnp->pn_bufsize = sz; | ||
} | ||
|
||
/* | ||
* Free pathname resources. | ||
*/ | ||
void | ||
pn_free(struct pathname *pnp) | ||
{ | ||
/* pn_bufsize is usually MAXPATHLEN, but may not be */ | ||
kmem_free(pnp->pn_buf, pnp->pn_bufsize); | ||
pnp->pn_path = pnp->pn_buf = NULL; | ||
pnp->pn_pathlen = pnp->pn_bufsize = 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.