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
*/
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;
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
}
/*
{
/* 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
}