locking questions (regarding file systems)
R. B. Riddick
arne_woerner at yahoo.com
Thu Aug 3 19:36:49 UTC 2006
--- Eric Anderson <anderson at centtech.com> wrote:
> On 08/03/06 01:14, R. B. Riddick wrote:
> > --- 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... ;-)
> >
> > Hmm... Did u try to run without vflush() and vrele()? :-)
>
> I've tried getting rid of the vrele and vflush, and that doesn't help.
>
Hmm... So the g_vfs_close() always deadlocks with and without vflush()?
That is strange... I mean: When I open a regular file, I can close it...
Did u try to call g_vfs_close() immediately after the g_vfs_open()?
> Any other ideas? I have to be missing something very simple here..
>
Yes. Most likely it is something simple and orthogonal, because: Humans often
have similar ideas of "simple"... ;-)
-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