Restore ABI compatibility, broken in r273127. Note that while this fixes
ABI with 10.1, it breaks ABI for 11-CURRENT, so rebuild of automountd(8) is neccessary. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
d6a5aeb05f
commit
e13ac6cd7e
@ -583,6 +583,34 @@ autofs_ioctl_request(struct autofs_daemon_request *adr)
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
autofs_ioctl_done_101(struct autofs_daemon_done_101 *add)
|
||||
{
|
||||
struct autofs_request *ar;
|
||||
|
||||
sx_xlock(&autofs_softc->sc_lock);
|
||||
TAILQ_FOREACH(ar, &autofs_softc->sc_requests, ar_next) {
|
||||
if (ar->ar_id == add->add_id)
|
||||
break;
|
||||
}
|
||||
|
||||
if (ar == NULL) {
|
||||
sx_xunlock(&autofs_softc->sc_lock);
|
||||
AUTOFS_DEBUG("id %d not found", add->add_id);
|
||||
return (ESRCH);
|
||||
}
|
||||
|
||||
ar->ar_error = add->add_error;
|
||||
ar->ar_wildcards = true;
|
||||
ar->ar_done = true;
|
||||
ar->ar_in_progress = false;
|
||||
cv_broadcast(&autofs_softc->sc_cv);
|
||||
|
||||
sx_xunlock(&autofs_softc->sc_lock);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
autofs_ioctl_done(struct autofs_daemon_done *add)
|
||||
{
|
||||
@ -658,6 +686,9 @@ autofs_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int mode,
|
||||
case AUTOFSREQUEST:
|
||||
return (autofs_ioctl_request(
|
||||
(struct autofs_daemon_request *)arg));
|
||||
case AUTOFSDONE101:
|
||||
return (autofs_ioctl_done_101(
|
||||
(struct autofs_daemon_done_101 *)arg));
|
||||
case AUTOFSDONE:
|
||||
return (autofs_ioctl_done(
|
||||
(struct autofs_daemon_done *)arg));
|
||||
|
@ -71,6 +71,21 @@ struct autofs_daemon_request {
|
||||
char adr_options[MAXPATHLEN];
|
||||
};
|
||||
|
||||
/*
|
||||
* Compatibility with 10.1-RELEASE automountd(8).
|
||||
*/
|
||||
struct autofs_daemon_done_101 {
|
||||
/*
|
||||
* Identifier, copied from adr_id.
|
||||
*/
|
||||
int add_id;
|
||||
|
||||
/*
|
||||
* Error number, possibly returned to userland.
|
||||
*/
|
||||
int add_error;
|
||||
};
|
||||
|
||||
struct autofs_daemon_done {
|
||||
/*
|
||||
* Identifier, copied from adr_id.
|
||||
@ -87,9 +102,15 @@ struct autofs_daemon_done {
|
||||
* Error number, possibly returned to userland.
|
||||
*/
|
||||
int add_error;
|
||||
|
||||
/*
|
||||
* Reserved for future use.
|
||||
*/
|
||||
int add_spare[7];
|
||||
};
|
||||
|
||||
#define AUTOFSREQUEST _IOR('I', 0x01, struct autofs_daemon_request)
|
||||
#define AUTOFSDONE _IOW('I', 0x02, struct autofs_daemon_done)
|
||||
#define AUTOFSDONE101 _IOW('I', 0x02, struct autofs_daemon_done_101)
|
||||
#define AUTOFSDONE _IOW('I', 0x03, struct autofs_daemon_done)
|
||||
|
||||
#endif /* !AUTOFS_IOCTL_H */
|
||||
|
Loading…
Reference in New Issue
Block a user