Date: Wed, 2 Aug 2006 12:34:08 -0700 (PDT) From: "R. B. Riddick" <arne_woerner@yahoo.com> To: Eric Anderson <anderson@centtech.com>, freebsd-fs@freebsd.org Subject: Re: locking questions (regarding file systems) Message-ID: <20060802193408.47760.qmail@web30301.mail.mud.yahoo.com> In-Reply-To: <44D0F6E3.7080908@centtech.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--- Eric Anderson <anderson@centtech.com> wrote: > Here's basically what I do: > in the mount function for the FS, I do something like this: > > DROP_GIANT(); > g_topology_lock(); > error = g_vfs_open(devvp, &cp, "fsname", 0); > g_topology_unlock(); > PICKUP_GIANT(); > > What is needed in my unmount function to release those locks? I've > tried some combinations of things, like: > > DROP_GIANT(); > g_topology_lock(); > # wedges here > g_vfs_close(cp, td); > g_topology_unlock(); > PICKUP_GIANT(); > vrele(devvp); > So the first un-mount works fine? And the second un-mount wedges _before_ g_vfs_close? I cannot find anything really suspicious in ur code... Just 2 thoughts: 1. Do we really hold GIANT, when we mount and un-mount something? 2. R u sure, that we need vrele()? I mean: Why doesn't g_vfs_close() call vrele(), if g_vfs_open() increases that use-count variable? Can u print the use-count variable in the beginning and the end of the mount/un-mount functions? -Arne __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060802193408.47760.qmail>