[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-kernel
Subject:    Re: File change notification
From:       Javier Fernandez-Ivern <ivern () acm ! org>
Date:       2003-12-31 20:49:07
Message-ID: 3FF33643.5080808 () acm ! org
[Download RAW message or body]

Rüdiger Klaehn wrote:

Rudiger, I've been reading your code to try and understand it, and I 
found one think I'm not so sure about:

> +++ develop/fs/dnotify.c	2003-12-31 16:59:36.000000000 +0100
> @@ -153,8 +153,9 @@
>  void dnotify_parent(struct dentry *dentry, unsigned long event)
>  {
>  	struct dentry *parent;
> -
>  	spin_lock(&dentry->d_lock);
> +	/* call inotify for this dentry */
> +	inotify_dentrychange(dentry,event);

...

> +/*
> + * This function should be called when something changes about a dentry, such
> + * as attributes, creating, deleting, renaming etc.
> + */
> +void inotify_dentrychange(struct dentry *dentry,unsigned long event)
> +{
> +	in_info info;
> +	struct dentry *parent;
> +	memset(&info,0,sizeof(in_info));
> +	info.event=event;
> +	spin_lock(&dentry->d_lock);

inotify_dentrychange() is called from dnotify_parent() with the 
dentry->d_lock spinlock held.  However, it also tries to attain the 
spinlock.  Wouldn't this deadlock?  I thought spinlocks were not recursive.

Please let me know if I'm not understanding this...I'm a locking newbie.

-- 
Javier Fernandez-Ivern
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic