i386/123768: [panic] [vm] 7.0-STABLE locking issue on Soekris net4801 (sys/vm/vm_pageout.c)

Alexander freebsd at nagilum.org
Tue Oct 21 14:27:14 UTC 2008


Thanks a lot for looking into this.
I backported patch to RELENG_7 (attached),
kernel build is in progress, unfortunately it will take about two days.
Then another day or two to test & verify.
Thanks & best regards,
Alex.

----- Message from kib at FreeBSD.org ---------
     Date: Tue, 21 Oct 2008 09:36:38 GMT
     From: kib at FreeBSD.org
  Subject: Re: i386/123768: [panic] [vm] 7.0-STABLE locking issue on  
Soekris net4801 (sys/vm/vm_pageout.c)
       To: freebsd at nagilum.org, kib at FreeBSD.org, freebsd-i386 at FreeBSD.org


> Synopsis: [panic] [vm] 7.0-STABLE locking issue on Soekris net4801  
> (sys/vm/vm_pageout.c)
>
> State-Changed-From-To: open->analyzed
> State-Changed-By: kib
> State-Changed-When: Tue Oct 21 09:35:51 UTC 2008
> State-Changed-Why:
> Take, I am going to commit Tor' patch.
>
>
> Responsible-Changed-From-To: freebsd-i386->kib
> Responsible-Changed-By: kib
> Responsible-Changed-When: Tue Oct 21 09:35:51 UTC 2008
> Responsible-Changed-Why:
> Take, I am going to commit Tor' patch.
>
> http://www.freebsd.org/cgi/query-pr.cgi?pr=123768
>


----- End message from kib at FreeBSD.org -----



========================================================================
#    _  __          _ __     http://www.nagilum.org/ \n icq://69646724 #
#   / |/ /__ ____ _(_) /_ ____ _  nagilum at nagilum.org \n +491776461165 #
#  /    / _ `/ _ `/ / / // /  ' \  Amiga (68k/PPC): AOS/NetBSD/Linux   #
# /_/|_/\_,_/\_, /_/_/\_,_/_/_/_/  Mac (PPC): MacOS-X / Linux / MacOS9 #
#           /___/     x86: FreeBSD/Linux/Solaris/Win2k  ARM9: EPOC EV6 #
========================================================================


----------------------------------------------------------------
cakebox.homeunix.net - all the machine one needs..
-------------- next part --------------
--- vfs_vnops.c.bak	2008-08-31 23:27:05.000000000 +0200
+++ vfs_vnops.c	2008-10-21 15:53:53.000000000 +0200
@@ -904,12 +904,17 @@
 	while ((mp->mnt_kern_flag & MNTK_SUSPEND) != 0) {
 		if (flags & V_NOWAIT) {
 			error = EWOULDBLOCK;
+			if (vp != NULL)
+			    *mpp = NULL;
 			goto unlock;
 		}
 		error = msleep(&mp->mnt_flag, MNT_MTX(mp), 
 		    (PUSER - 1) | (flags & PCATCH), "suspfs", 0);
-		if (error)
+		if (error) {
+		    if (vp != NULL)
+			*mpp = NULL;
 			goto unlock;
+		    }
 	}
 	if (flags & V_XSLEEP)
 		goto unlock;
@@ -959,6 +964,8 @@
 	if (flags & V_NOWAIT) {
 		MNT_REL(mp);
 		MNT_IUNLOCK(mp);
+		if (vp != NULL)
+		    *mpp = NULL;
 		return (EWOULDBLOCK);
 	}
 	/*
@@ -1024,6 +1031,8 @@
 	vfs_rel(mp);
 	if (error == 0)
 		goto retry;
+	if (vp != NULL)
+	    *mpp = NULL;
 	return (error);
 }
 


More information about the freebsd-i386 mailing list