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

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to