bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 2/3] libnetfs: fix receiver lookups in fsys server functions


From: Samuel Thibault
Subject: Re: [PATCH 2/3] libnetfs: fix receiver lookups in fsys server functions
Date: Tue, 25 Feb 2014 00:30:25 -0500
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Justus Winter, le Wed 12 Feb 2014 18:22:25 +0100, a écrit :
> * mutations.h: Add translation functions.
> * netfs.h (struct netfs_control): New declaration.
> * priv.h: Define translation functions.
> * fsys-get-options.c: Fix receiver lookups.
> * fsys-getroot.c: Likewise.
> * fsys-goaway.c: Likewise.
> * fsys-set-options.c: Likewise.
> * fsys-syncfs.c: Likewise.
> * fsysstubs.c: Likewise.

Ack.

> ---
>  libnetfs/fsys-get-options.c |  6 +-----
>  libnetfs/fsys-getroot.c     |  5 +----
>  libnetfs/fsys-goaway.c      | 10 +++-------
>  libnetfs/fsys-set-options.c | 11 +++--------
>  libnetfs/fsys-syncfs.c      |  2 +-
>  libnetfs/fsysstubs.c        |  8 ++++----
>  libnetfs/mutations.h        |  3 +++
>  libnetfs/netfs.h            |  6 ++++++
>  libnetfs/priv.h             | 14 ++++++++++++++
>  9 files changed, 36 insertions(+), 29 deletions(-)
> 
> diff --git a/libnetfs/fsys-get-options.c b/libnetfs/fsys-get-options.c
> index 54bd9a0..836806b 100644
> --- a/libnetfs/fsys-get-options.c
> +++ b/libnetfs/fsys-get-options.c
> @@ -31,7 +31,7 @@
>  
>  /* Implement fsys_get_options as described in <hurd/fsys.defs>. */
>  error_t
> -netfs_S_fsys_get_options (fsys_t fsys,
> +netfs_S_fsys_get_options (struct netfs_control *port,
>                         mach_port_t reply,
>                         mach_msg_type_name_t reply_type,
>                         char **data, mach_msg_type_number_t *data_len)
> @@ -39,8 +39,6 @@ netfs_S_fsys_get_options (fsys_t fsys,
>    error_t err;
>    char *argz = 0;
>    size_t argz_len = 0;
> -  struct port_info *port =
> -    ports_lookup_port (netfs_port_bucket, fsys, netfs_control_class);
>  
>    if (!port)
>      return EOPNOTSUPP;
> @@ -63,7 +61,5 @@ netfs_S_fsys_get_options (fsys_t fsys,
>    else
>      free (argz);
>  
> -  ports_port_deref (port);
> -
>    return err;
>  }
> diff --git a/libnetfs/fsys-getroot.c b/libnetfs/fsys-getroot.c
> index 0d80111..2d02120 100644
> --- a/libnetfs/fsys-getroot.c
> +++ b/libnetfs/fsys-getroot.c
> @@ -25,7 +25,7 @@
>  #include <fcntl.h>
>  
>  error_t
> -netfs_S_fsys_getroot (mach_port_t cntl,
> +netfs_S_fsys_getroot (struct netfs_control *pt,
>                     mach_port_t reply,
>                     mach_msg_type_name_t reply_type,
>                     mach_port_t dotdot,
> @@ -37,8 +37,6 @@ netfs_S_fsys_getroot (mach_port_t cntl,
>                     mach_port_t *retry_port,
>                     mach_msg_type_name_t *retry_port_type)
>  {
> -  struct port_info *pt = ports_lookup_port (netfs_port_bucket, cntl,
> -                                         netfs_control_class);
>    struct iouser *cred;
>    error_t err;
>    struct protid *newpi;
> @@ -51,7 +49,6 @@ netfs_S_fsys_getroot (mach_port_t cntl,
>  
>    if (!pt)
>      return EOPNOTSUPP;
> -  ports_port_deref (pt);
>  
>    err = iohelp_create_complex_iouser (&cred, uids, nuids, gids, ngids);
>    if (err)
> diff --git a/libnetfs/fsys-goaway.c b/libnetfs/fsys-goaway.c
> index 0ac36d3..872d073 100644
> --- a/libnetfs/fsys-goaway.c
> +++ b/libnetfs/fsys-goaway.c
> @@ -26,17 +26,15 @@
>  #include <hurd/ports.h>
>  
>  error_t
> -netfs_S_fsys_goaway (fsys_t control,
> +netfs_S_fsys_goaway (struct netfs_control *pt,
>                    mach_port_t reply,
>                    mach_msg_type_name_t reply_type,
>                    int flags)
>  {
>    error_t err;
> -  struct port_info *pt;
>  
> -  pt = ports_lookup_port (netfs_port_bucket, control,
> -                       netfs_control_class);
> -  if (! pt)
> +  
> +  if (!pt)
>      return EOPNOTSUPP;
>  
>    err = netfs_shutdown (flags);
> @@ -46,7 +44,5 @@ netfs_S_fsys_goaway (fsys_t control,
>        exit (0);
>      }
>  
> -  ports_port_deref (pt);
> -
>    return err;
>  }
> diff --git a/libnetfs/fsys-set-options.c b/libnetfs/fsys-set-options.c
> index d7dc743..fb1c87e 100644
> --- a/libnetfs/fsys-set-options.c
> +++ b/libnetfs/fsys-set-options.c
> @@ -31,15 +31,15 @@
>  
>  /* Implement fsys_set_options as described in <hurd/fsys.defs>. */
>  error_t
> -netfs_S_fsys_set_options (fsys_t fsys,
> +netfs_S_fsys_set_options (struct netfs_control *pt,
>                         mach_port_t reply,
>                         mach_msg_type_name_t reply_type,
>                         char *data, mach_msg_type_number_t data_len,
>                         int do_children)
>  {
>    error_t err = 0;
> -  struct port_info *pt =
> -    ports_lookup_port (netfs_port_bucket, fsys, netfs_control_class);
> +  if (!pt)
> +    return EOPNOTSUPP;
>  
>    error_t
>      helper (struct node *np)
> @@ -64,9 +64,6 @@ netfs_S_fsys_set_options (fsys_t fsys,
>       return error;
>        }
>  
> -  if (!pt)
> -    return EOPNOTSUPP;
> -
>  #if NOT_YET
>    if (do_children)
>      {
> @@ -87,7 +84,5 @@ netfs_S_fsys_set_options (fsys_t fsys,
>  #endif
>      }
>  
> -  ports_port_deref (pt);
> -
>    return err;
>  }
> diff --git a/libnetfs/fsys-syncfs.c b/libnetfs/fsys-syncfs.c
> index f57cb14..e232936 100644
> --- a/libnetfs/fsys-syncfs.c
> +++ b/libnetfs/fsys-syncfs.c
> @@ -22,7 +22,7 @@
>  #include "fsys_S.h"
>  
>  error_t
> -netfs_S_fsys_syncfs (mach_port_t cntl,
> +netfs_S_fsys_syncfs (struct netfs_control *cntl,
>                    mach_port_t reply,
>                    mach_msg_type_name_t reply_type,
>                    int wait,
> diff --git a/libnetfs/fsysstubs.c b/libnetfs/fsysstubs.c
> index f44155d..a64fd64 100644
> --- a/libnetfs/fsysstubs.c
> +++ b/libnetfs/fsysstubs.c
> @@ -23,7 +23,7 @@
>  #include "fsys_S.h"
>  
>  error_t
> -netfs_S_fsys_getfile (fsys_t cntl,
> +netfs_S_fsys_getfile (struct netfs_control *cntl,
>                     mach_port_t reply,
>                     mach_msg_type_name_t reply_type,
>                     uid_t *uids, mach_msg_type_number_t nuids,
> @@ -35,7 +35,7 @@ netfs_S_fsys_getfile (fsys_t cntl,
>  }
>  
>  error_t
> -netfs_S_fsys_getpriv (fsys_t cntl,
> +netfs_S_fsys_getpriv (struct netfs_control *cntl,
>                     mach_port_t reply,
>                     mach_msg_type_name_t reply_type,
>                     mach_port_t *host, mach_msg_type_name_t *hosttp,
> @@ -46,7 +46,7 @@ netfs_S_fsys_getpriv (fsys_t cntl,
>  }
>  
>  error_t
> -netfs_S_fsys_init (fsys_t cntl,
> +netfs_S_fsys_init (struct netfs_control *cntl,
>                  mach_port_t reply,
>                  mach_msg_type_name_t reply_type,
>                  mach_port_t proc, auth_t auth)
> @@ -55,7 +55,7 @@ netfs_S_fsys_init (fsys_t cntl,
>  }
>  
>  error_t
> -netfs_S_fsys_forward (fsys_t cntl,
> +netfs_S_fsys_forward (mach_port_t cntl,
>                     mach_port_t reply,
>                     mach_msg_type_name_t reply_type,
>                     mach_port_t request,
> diff --git a/libnetfs/mutations.h b/libnetfs/mutations.h
> index e6700f5..51ca871 100644
> --- a/libnetfs/mutations.h
> +++ b/libnetfs/mutations.h
> @@ -28,6 +28,9 @@
>  #define IO_INTRAN protid_t begin_using_protid_port (io_t)
>  #define IO_DESTRUCTOR end_using_protid_port (protid_t)
>  
> +#define FSYS_INTRAN control_t begin_using_control_port (fsys_t)
> +#define FSYS_DESTRUCTOR end_using_control_port (control_t)
> +
>  #define FILE_IMPORTS import "netfs.h"; import "priv.h";
>  #define IO_IMPORTS import "netfs.h"; import "priv.h";
>  #define FSYS_IMPORTS import "netfs.h"; import "priv.h";
> diff --git a/libnetfs/netfs.h b/libnetfs/netfs.h
> index 5d50f57..aef4a3d 100644
> --- a/libnetfs/netfs.h
> +++ b/libnetfs/netfs.h
> @@ -100,6 +100,11 @@ struct node
>    struct dirmod *dirmod_reqs;
>  };
>  
> +struct netfs_control
> +{
> +  struct port_info pi;
> +};
> +
>  /* The user must define this variable.  Set this to the name of the
>     filesystem server. */
>  extern char *netfs_server_name;
> @@ -437,6 +442,7 @@ extern auth_t netfs_auth_server_port;
>  
>  /* Mig gook. */
>  typedef struct protid *protid_t;
> +typedef struct netfs_control *control_t;
>  
>  
>  #endif /* _HURD_NETFS_H_ */
> diff --git a/libnetfs/priv.h b/libnetfs/priv.h
> index 00db9fa..ba31080 100644
> --- a/libnetfs/priv.h
> +++ b/libnetfs/priv.h
> @@ -37,4 +37,18 @@ end_using_protid_port (struct protid *cred)
>    if (cred)
>      ports_port_deref (cred);
>  }
> +
> +static inline struct netfs_control * __attribute__ ((unused))
> +begin_using_control_port (fsys_t port)
> +{
> +  return ports_lookup_port (netfs_port_bucket, port, netfs_control_class);
> +}
> +
> +static inline void __attribute__ ((unused))
> +end_using_control_port (struct netfs_control *cred)
> +{
> +  if (cred)
> +    ports_port_deref (cred);
> +}
> +
>  #endif
> -- 
> 1.8.5.2
> 

-- 
Samuel
 CN > J'ai enseigné l'algorythmique.
 GLG> C'est quoi l'algorythmique ? Une contrebasse programmée en Algol ?
 -+- in : Guide du Neuneu d'Usenet - Neuneu fait ses gammes. -+-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]