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    [W:0.047 / U:91.088 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site