Hello,

Justus Winter, le Wed 03 Jul 2013 23:11:58 +0200, a écrit :
> +/* Return the options describing the operation of the receiving
> +   filesystem (sutiable for fsys_set_options).  */

Make sure to update comments of copy/pasted code :)

> +routine fsys_get_translator_info (
> +     server: fsys_t;
> +     RPT
> +        out children: data_t);

So, to sum it up, the idea is to return an array of strings giving the
mount points. See below for comments.

> +        out source: string_t;

This should probably go to another RPC, as I don't think getting
mountpoints and getting the underlying device should be related (even if
in your case they are related).

> --- a/libdiskfs/dir-lookup.c
> +++ b/libdiskfs/dir-lookup.c
> @@ -82,6 +82,11 @@ diskfs_S_dir_lookup (struct protid *dircred,
>        goto gotit;
>      }
>  
> +  free (dircred->po->path);
> +  dircred->po->path = strdup(path); /* XXX is this the right place? */
> +  if (! dircred->po->path)
> +    return ENOMEM;
> +

Mmm. It indeed looks odd to store the path at lookup.

Concerning storing the path, it's a bit sad to have to do that, and
it'll become wrong if one moves the mount points.  Another way would
be to make the client figure it out by itself from a port to the mount
point, much like glibc/sysdeps/mach/hurd/getcwd.c. It'll be slower, but
should be safer.  The RPC would thus return an array of ports to the
mount points instead of an array of strings.

Anybody else?

Samuel

Reply via email to