diff --git a/lib/libautofs/libautofs.3 b/lib/libautofs/libautofs.3 index 784813ed64d1..fd9f1c304c41 100644 --- a/lib/libautofs/libautofs.3 +++ b/lib/libautofs/libautofs.3 @@ -63,6 +63,8 @@ .Ft void .Fn autoreq_getoffset "autoreq_t req" "off_t *offp" .Ft void +.Fn autoreq_getxid "autoreq_t req" "int *xidp" +.Ft void .Fn autoreq_setino "autoreq_t req" "autoino_t ino" .Ft void .Fn autoreq_seterrno "autoreq_t req" "int errno" @@ -176,6 +178,10 @@ return the auxilliray data associated with the request return the offset request associated with the request .Fa req . (used for readdir request) +.It Fn autoreq_getxid +return the transaction id associated with an autofs request, these +are unique per mount point, but not system wide. They can be used +for debugging to ensure requests are being accepted by the kernel. .El .Pp The following functions allow one to set the response sent to diff --git a/lib/libautofs/libautofs.c b/lib/libautofs/libautofs.c index a47535a32261..459b32d2048b 100644 --- a/lib/libautofs/libautofs.c +++ b/lib/libautofs/libautofs.c @@ -206,10 +206,13 @@ autoh_getall(autoh_t **arrayp, int *cntp) void autoh_freeall(autoh_t *ah) { + autoh_t *ahp; - while (*ah != NULL) { - autoh_free(*ah); - ah++; + ahp = ah; + + while (*ahp != NULL) { + autoh_free(*ahp); + ahp++; } safe_free(ah); } @@ -396,6 +399,13 @@ autoreq_getoffset(autoreq_t req, off_t *offp) *offp = req->au_offset - AUTOFS_USEROFF; } +void +autoreq_getxid(autoreq_t req, int *xid) +{ + + *xid = req->au_xid; +} + /* toggle by path. args = handle, AUTO_?, pid (-1 to disable), path. */ int autoh_togglepath(autoh_t ah, int op, pid_t pid, const char *path) diff --git a/lib/libautofs/libautofs.h b/lib/libautofs/libautofs.h index 5fb29a962f3c..f391bad3096f 100644 --- a/lib/libautofs/libautofs.h +++ b/lib/libautofs/libautofs.h @@ -92,8 +92,9 @@ autoino_t autoreq_getdirino(autoreq_t); void autoreq_seterrno(autoreq_t, int); void autoreq_setaux(autoreq_t, void *, size_t); void autoreq_getaux(autoreq_t, void **, size_t *); -void autoreq_seteof(autoreq_t req, int eof); -void autoreq_getoffset(autoreq_t req, off_t *offp); +void autoreq_seteof(autoreq_t, int); +void autoreq_getoffset(autoreq_t, off_t *); +void autoreq_getxid(autoreq_t, int *); /* toggle by path. args = handle, AUTO_?, pid (-1 to disable), path. */ int autoh_togglepath(autoh_t, int, pid_t, const char *);