locking questions (regarding file systems)
R. B. Riddick
arne_woerner at yahoo.com
Thu Aug 3 06:14:32 UTC 2006
--- Eric Anderson <anderson at 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
More information about the freebsd-fs
mailing list