I filed the bug but it hasn't shown up in the bug database yet.

In the meanwhile, this problem became more critical for me, so I took a stab at 
it and think I have a fix.

The file never gets put on the ufs delete queue because it's vnop's vn_count 
never reaches 1 in vn_rele().  The extra hold is coming from the dnlc entry for 
the file's xattrdir which puts a hold on the xattrdir and it's parent file. I 
added a dnlc_remove for the xattrdir in ufs_dirremove() and this seems to fix 
the problem.

Here is the patch. I'd attach this info to the bug, but like I said it hasn't 
shown up yet.

*** ufs_dir.c.orig      2008-01-30 14:06:37.000000000 -0600
--- ufs_dir.c   2008-01-30 14:05:40.000000000 -0600
***************
*** 2613,2618 ****
--- 2613,2625 ----
        ep = slot.ep;
        ep->d_ino = 0;

+       /* If there is an xattrdir on this file, attempt a dnlc removal of
+        * the XATTRDIR from this file. Otherwise it will have an extra count 
which
+        * causes the space for this file to not be reclaimed.
+        */
+       if (ip->i_oeftflag)
+               dnlc_remove(vp, XATTR_DIR_NAME);
+
        if (slot.cached) {
                dcanchor_t *dcap = &dp->i_danchor;
 
 
This message posted from opensolaris.org
_______________________________________________
ufs-discuss mailing list
[email protected]

Reply via email to