Date: Wed, 2 Aug 2006 23:14:29 -0700 (PDT) From: "R. B. Riddick" <arne_woerner@yahoo.com> To: Eric Anderson <anderson@centtech.com> Cc: freebsd-fs@freebsd.org Subject: Re: locking questions (regarding file systems) Message-ID: <20060803061429.33043.qmail@web30307.mail.mud.yahoo.com> In-Reply-To: <44D176AF.8020300@centtech.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--- Eric Anderson <anderson@centtech.com> wrote: > # here use_count is 1 > error = vflush(mp, 1, flags, td); > if (error) > return (error); > > DROP_GIANT(); > g_topology_lock(); > # this is where the use_count is now zero, and it blocks > g_vfs_close(cp, td); > g_topology_unlock(); > PICKUP_GIANT(); > vrele(devvp); > > Is it blocking because the use_count is already 0? Is the vflush > breaking things? > >From the man page of vflush() I would guess, that u call it too early or unnecessarily... My feeling says: Open & Close it... ;-) Or did u read a tutorial, that said u should do vflush() and vrele()? I personally find that both calls should be done in the close() function... > Actually, I misinformed you earlier - I can't actually unmount, because > it hangs during the first unmount. It will only unmount successfully if > I remove the block above (the DROP_GIANT down to PICKUP_GIANT). > Hmm... Did u try to run without vflush() and vrele()? :-) -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?20060803061429.33043.qmail>