so this is what I killed my weekend (until 10 minutes ago) on trying to
debug.

unionfs_d_revalidate

if parent needs to be revalidate

locks parent
calling d_parent->d_op->revalidate

which is unionfs_d_revalidate_wrap

unionfs_d_revalidate_wrap starts off by trying to lock the dentry.

boom, deadlock.

--- dentry.c.old        2005-10-10 20:23:10.000000000 +0000
+++ dentry.c    2005-10-10 20:23:22.000000000 +0000
@@ -77,15 +77,12 @@
                        unlock_super(dentry->d_sb);
                        locked = 0;
                        /* We must be locked before our parent. */
-                       lock_dentry(dentry->d_parent);
                        if (!
                            (dentry->d_parent->d_op->
                             d_revalidate(dentry->d_parent, nd))) {
-                               unlock_dentry(dentry->d_parent);
                                invalid = 1;
                                goto out;
                        }
-                       unlock_dentry(dentry->d_parent);
                        restart = 1;
                        goto restart;
                }

now a different bug rears its ugly head

ASSERTION FAILED: stopd(sb)->usi_firstputmap <= generation
at /root/unionfs-sparse/commonfops.c:36 (branchput_gen)

digging in I go.

_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to