locking questions (regarding file systems)
Eric Anderson
anderson at centtech.com
Thu Aug 3 04:35:56 UTC 2006
> On Wed, 02 Aug 2006 14:02:59 -0500
> Eric Anderson <anderson at centtech.com> mentioned:
>
>> Hello everyone,
>> (resend from a post to the -geom list, which I received no replies)
>>
>> I'm writing a file system (read-only), and I need to do some GEOM
>> related locking. I can mount/unmount the filesystem on a vnode backed
>> md disk, but I can't re-mount on that device nor can I get rid (mdconfig
>> -d) of it. It appears to be wedged in some kind of locking.
>>
>> 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);
>>
>> How can I debug this and find out what is blocking it?
>>
>> Any help would be greatly appreciated!
>>
>> Eric
>>
>>
>>
>
> It seems that device or geom isn't unlocked. Do you call VOP_UNLOCK(devvp)
> after g_vfs_open()?
I was not calling VOP_UNLOCK, but have added it, and it makes no difference.
> You can enable geom locks debugging by manipulation sys.kern.geom.debug
> values.
That didn't seem to print anything.
Eric
--
------------------------------------------------------------------------
Eric Anderson Sr. Systems Administrator Centaur Technology
Anything that works is better than anything that doesn't.
------------------------------------------------------------------------
More information about the freebsd-fs
mailing list