Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Feb 2017 20:44:35 +0000 (UTC)
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r313351 - head/sys/kern
Message-ID:  <201702062044.v16KiZOv065163@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: trasz
Date: Mon Feb  6 20:44:34 2017
New Revision: 313351
URL: https://svnweb.freebsd.org/changeset/base/313351

Log:
  Make root_mount_hold() work after boot. This is important for two
  reasons. First is rerooting into USB-mounted device that happens
  to be not yet enumerated. The second is when mounting with (non-root)
  filesystem on USB device on a hub that's enumerated later than the root
  mount: the rc scripts explicitly mount for the root mount holds to be
  released, but each USB bus takes the hold asynchronously, and if that
  happens after root mount, it would just get ignored.
  
  Reviewed by:	marcel
  MFC after:	2 weeks
  Sponsored by:	DARPA, AFRL
  Differential Revision:	https://reviews.freebsd.org/D9388

Modified:
  head/sys/kern/vfs_mountroot.c

Modified: head/sys/kern/vfs_mountroot.c
==============================================================================
--- head/sys/kern/vfs_mountroot.c	Mon Feb  6 20:36:59 2017	(r313350)
+++ head/sys/kern/vfs_mountroot.c	Mon Feb  6 20:44:34 2017	(r313351)
@@ -171,9 +171,6 @@ root_mount_hold(const char *identifier)
 {
 	struct root_hold_token *h;
 
-	if (root_mounted())
-		return (NULL);
-
 	h = malloc(sizeof *h, M_DEVBUF, M_ZERO | M_WAITOK);
 	h->who = identifier;
 	mtx_lock(&root_holds_mtx);
@@ -186,8 +183,8 @@ void
 root_mount_rel(struct root_hold_token *h)
 {
 
-	if (h == NULL)
-		return;
+	KASSERT(h != NULL, ("%s: NULL token", __func__));
+
 	mtx_lock(&root_holds_mtx);
 	LIST_REMOVE(h, list);
 	wakeup(&root_holds);



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