Disable unused pathname::pn_path* (unneeded in Linux)

struct pathname is originally from Solaris VFS, and it has been used
in ZoL to merely call VOP from Linux VFS interface without API change,
therefore pathname::pn_path* are unused and unneeded. Technically,
struct pathname is a wrapper for C string in ZoL.

Saves stack a bit on lookup and unlink.

(#if0'd members instead of removing since comments refer to them.)

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Closes #9025
This commit is contained in:
Tomohiro Kusumi 2019-07-16 05:57:56 +09:00 committed by Tony Hutter
parent cf966cb19a
commit 0a223246e1
2 changed files with 13 additions and 4 deletions

View File

@ -54,8 +54,10 @@ extern "C" {
*/
typedef struct pathname {
char *pn_buf; /* underlying storage */
#if 0 /* unused in ZoL */
char *pn_path; /* remaining pathname */
size_t pn_pathlen; /* remaining length */
#endif
size_t pn_bufsize; /* total size of pn_buf */
} pathname_t;

View File

@ -71,9 +71,12 @@ pn_alloc(struct pathname *pnp)
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_buf = kmem_alloc(sz, KM_SLEEP);
pnp->pn_bufsize = sz;
#if 0 /* unused in ZoL */
pnp->pn_path = pnp->pn_buf;
pnp->pn_pathlen = 0;
#endif
}
/*
@ -84,6 +87,10 @@ 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;
pnp->pn_buf = NULL;
pnp->pn_bufsize = 0;
#if 0 /* unused in ZoL */
pnp->pn_path = NULL;
pnp->pn_pathlen = 0;
#endif
}