Hi,
Sergiu Ivanov wrote:
> diff --git a/eth-multiplexer/netfs_impl.c b/eth-multiplexer/netfs_impl.c
> index c70701b..875ff48 100644
> --- a/eth-multiplexer/netfs_impl.c
> +++ b/eth-multiplexer/netfs_impl.c
> @@ -31,6 +31,10 @@
> #include "vdev.h"
> #include "util.h"
>
> +/* The .MASTER node which will be used by static instances of
> + devnode. */
> +struct node * master_node;
> +
> #define DIRENTS_CHUNK_SIZE (8*1024)
> /* Returned directory entries are aligned to blocks this many bytes long.
> * Must be a power of two. */
> @@ -85,6 +89,18 @@ new_node (struct lnode *ln, struct node **np)
> struct node *
> lookup (char *name)
> {
> + if (strcmp(name, MASTER_NODE_NAME) == 0)
> + {
> + netfs_nref (master_node);
> +
> + /* netfs_attempt_lookup expects the returned node not to be
> + locked, while `master_node` might have been locked in the
> + previous lookups. */
> + mutex_unlock (&master_node->lock);
So the lock might or might not have been locked? Why is it so?
> +
> + return master_node;
> + }
> +
Best regards,
Zheng Da