On 5/25/11, Kostik Belousov <[email protected]> wrote: > On Wed, May 25, 2011 at 02:07:10PM +0200, Oliver Pinter wrote: >> this or likely this script is enough for test? >> >> ---8<--- >> #!/bin/csh >> >> @ a = 100 >> >> while ( $a ) >> foreach i ( "umass" "cdce" "foo" "bar" ) >> kldload $i& >> end >> >> foreach i ( "umass" "cdce" "foo" "bar" ) >> kldunload $i& >> end >> @ a-- >> end >> ---8<--- > Only if the unload of any of the listed modules caused destruction > of some devfs node. > > May be, the easiest for 7 is to create some md(4) device and then > destroy it. > >> >> On 5/25/11, Kostik Belousov <[email protected]> wrote: >> > On Wed, May 25, 2011 at 12:11:29PM +0200, Oliver Pinter wrote: >> >> MFC to 7-STABLE? >> > Somebody need to test it for 7 (I do not expect any failures, but I also >> > prefer to not commit untested changes). >> > >> > The testing should include destroying some devfs nodes, e.g. by loading >> > and unloading a driver that creates and destroys them.
Runned 3 times the attached test script. The system remained stable. FreeBSD pandora-d 7.4-STABLE FreeBSD 7.4-STABLE #83 r222274=49d86ad: Wed May 25 17:49:38 CEST 2011 root@pandora-d:/usr/obj/usr/src/sys/stable amd64 >
commit 49d86ad84d6347006ef359ffa0fa0e575d700246
Author: kib <kib@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Date: Wed May 25 03:25:14 2011 +0000
MFC r222086: The protection against the race with dev_rel(), introduced in r163328, should be extended to cover destroy_devl() calls for the children of the destroyed dev.
git-svn-id: svn://svn.freebsd.org/base/stable/8@222274 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c
index 09859aa..3207438 100644
--- a/sys/kern/kern_conf.c
+++ b/sys/kern/kern_conf.c
@@ -874,6 +874,8 @@ destroy_devl(struct cdev *dev)
/* Remove name marking */
dev->si_flags &= ~SI_NAMED;
+ dev->si_refcount++; /* Avoid race with dev_rel() */
+
/* If we are a child, remove us from the parents list */
if (dev->si_flags & SI_CHILD) {
LIST_REMOVE(dev, si_siblings);
@@ -890,7 +892,6 @@ destroy_devl(struct cdev *dev)
dev->si_flags &= ~SI_CLONELIST;
}
- dev->si_refcount++; /* Avoid race with dev_rel() */
csw = dev->si_devsw;
dev->si_devsw = NULL; /* already NULL for SI_ALIAS */
while (csw != NULL && csw->d_purge != NULL && dev->si_threadcount) {
devfs_test.log.xz
Description: Binary data
_______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "[email protected]"
