Skip to content
Permalink
Browse files

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.)

Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
  • Loading branch information...
kusumi committed Jul 12, 2019
1 parent d230a65 commit 796daf65c422504a0f869c74b5ecc3c3652aa3d6
Showing with 13 additions and 4 deletions.
  1. +2 −0 include/sys/pathname.h
  2. +11 −4 module/zfs/pathname.c
@@ -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;

@@ -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
}

0 comments on commit 796daf6

Please sign in to comment.
You can’t perform that action at this time.