> Why can't a filesystem hacker back it out until his return?  Things are
> not getting better and this is tripping up more and more people.

The enclosed patch might help somewhat against the "active pagedep"
panics introduced in revision 1.98 of ffs_softdep.c.  Instead of a
panic, a message is printed and the pagedep structure isn't freed (it
will be freed later by free_newdirblk()).

- Tor Egge

Index: sys/ufs/ffs/ffs_softdep.c
===================================================================
RCS file: /home/ncvs/src/sys/ufs/ffs/ffs_softdep.c,v
retrieving revision 1.98
diff -u -r1.98 ffs_softdep.c
--- sys/ufs/ffs/ffs_softdep.c   2001/06/05 01:49:37     1.98
+++ sys/ufs/ffs/ffs_softdep.c   2001/06/07 18:30:16
@@ -1932,14 +1932,16 @@
                                        WORKLIST_INSERT(&inodedep->id_bufwait,
                                            &dirrem->dm_list);
                        }
+                       
+                       WORKLIST_REMOVE(&pagedep->pd_list);
                        if ((pagedep->pd_state & NEWBLOCK) != 0) {
-                               FREE_LOCK(&lk);
-                               panic("deallocate_dependencies: "
-                                     "active pagedep");
+                               /* XXX: Wait for newdirblk to be freed */
+                               printf("deallocate_dependencies: "
+                                      "active pagedep\n");
+                       } else {
+                               LIST_REMOVE(pagedep, pd_hash);
+                               WORKITEM_FREE(pagedep, D_PAGEDEP);
                        }
-                       WORKLIST_REMOVE(&pagedep->pd_list);
-                       LIST_REMOVE(pagedep, pd_hash);
-                       WORKITEM_FREE(pagedep, D_PAGEDEP);
                        continue;
 
                case D_ALLOCINDIR:

Reply via email to