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

Re: File change notification


R$B|d(Biger 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 _at_ vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


$B$3$N>pJs$,$"$J$?$NC5$7$F$$$?$b$N$+$I$&$+A*Br$7$F$/$@$5$$!#(B
yes/$B$^$5$K$3$l$@!*(B   no/$B0c$&$J$!(B   part/$B0lIt8+$D$+$C$?(B   try/$B$3$l$G;n$7$F$_$k(B

$B$"$J$?$,C5$7$F$$$?>pJs$O$I$N$h$&$J$3$H$+!"$4<+M3$K5-F~2<$5$$!#FC$K!V$^$5$K$3$l$@!*!W$H8@$&>l9g$O5-F~$r$*4j$$$7$^$9!#(B
$BNc(B:$B!VJ#?t$N%^%7%s$+$i(BCATV$B7PM3$G(Bipmasquerade$B$rMxMQ$7$F(BWeb$B$r;2>H$7$?$$>l9g$N@_Dj$K$D$$$F!W(B