On 2/10/2015 10:17 AM, Edward Tomasz Napierala wrote: > Author: trasz > Date: Tue Feb 10 16:17:16 2015 > New Revision: 278521 > URL: https://svnweb.freebsd.org/changeset/base/278521 > > Log: > 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.
I was going to say __FreeBSD_version should probably be bumped, but I suppose it's unlikely there are any consumers outside of automountd(8) already. An entry in UPDATING may be worth adding for head noting the rebuild need. We don't all read commit logs. > > MFC after: 2 weeks > Sponsored by: The FreeBSD Foundation > > Modified: > head/sys/fs/autofs/autofs.c > head/sys/fs/autofs/autofs_ioctl.h > > Modified: head/sys/fs/autofs/autofs.c > ============================================================================== > --- head/sys/fs/autofs/autofs.c Tue Feb 10 16:01:16 2015 > (r278520) > +++ head/sys/fs/autofs/autofs.c Tue Feb 10 16:17:16 2015 > (r278521) > @@ -584,6 +584,34 @@ autofs_ioctl_request(struct autofs_daemo > } > > 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) > { > struct autofs_request *ar; > @@ -658,6 +686,9 @@ autofs_ioctl(struct cdev *dev, u_long cm > 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)); > > Modified: head/sys/fs/autofs/autofs_ioctl.h > ============================================================================== > --- head/sys/fs/autofs/autofs_ioctl.h Tue Feb 10 16:01:16 2015 > (r278520) > +++ head/sys/fs/autofs/autofs_ioctl.h Tue Feb 10 16:17:16 2015 > (r278521) > @@ -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 */ > -- Regards, Bryan Drewery
signature.asc
Description: OpenPGP digital signature