Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 09 Jun 2001 03:05:53 +0200
From:      Tor.Egge@fast.no
To:        obrien@FreeBSD.ORG
Cc:        jhb@FreeBSD.ORG, mjacob@feral.com, current@FreeBSD.ORG
Subject:   Re: anyone seen these outside of alpha? or on non-SMP?
Message-ID:  <200106090105.DAA59028@midten.fast.no>
In-Reply-To: Your message of "Mon, 4 Jun 2001 18:45:56 -0700"
References:  <20010604184556.B45541@dragon.nuxi.com>

next in thread | previous in thread | raw e-mail | index | archive | help
----Next_Part(Sat_Jun__9_03:05:26_2001)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> 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


----Next_Part(Sat_Jun__9_03:05:26_2001)--
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Description: "kludge2.diff"

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:

----Next_Part(Sat_Jun__9_03:05:26_2001)----

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200106090105.DAA59028>