lkml.org 
[lkml]   [2003]   [Dec]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: File change notification
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/

\
 
 \ /
  Last update: 2005-03-22 13:59    [from the cache]
©2003-2011 Jasper Spaans