diff options
author | thompsa <thompsa@FreeBSD.org> | 2009-04-03 19:46:12 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2009-04-03 19:46:12 +0000 |
commit | fe5458f66537db2116edb0ad1cfa8b9da5fb1ba3 (patch) | |
tree | 55afba560e3d37dfdc20bbbb68db00bf16a00f1d /sys/kern | |
parent | d8382f158111ab26e940097a0ca91abe5de5035a (diff) | |
download | FreeBSD-src-fe5458f66537db2116edb0ad1cfa8b9da5fb1ba3.zip FreeBSD-src-fe5458f66537db2116edb0ad1cfa8b9da5fb1ba3.tar.gz |
Add a how argument to root_mount_hold() so it can be passed NOWAIT and be called
in situations where sleeping isnt allowed.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_mount.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c index e4256c7..164eb12 100644 --- a/sys/kern/vfs_mount.c +++ b/sys/kern/vfs_mount.c @@ -1353,14 +1353,18 @@ static int root_mount_complete; * Hold root mount. */ struct root_hold_token * -root_mount_hold(const char *identifier) +root_mount_hold(const char *identifier, int how) { struct root_hold_token *h; if (root_mounted()) return (NULL); - h = malloc(sizeof *h, M_DEVBUF, M_ZERO | M_WAITOK); + h = malloc(sizeof *h, M_DEVBUF, M_ZERO | how); + if (h == NULL) { + printf("Unable to alloc root hold token for %s\n", identifier); + return (NULL); + } h->who = identifier; mtx_lock(&mountlist_mtx); LIST_INSERT_HEAD(&root_holds, h, list); |