Subject: Re: Redoing file system suspension API (update)
To: Juergen Hannken-Illjes <firstname.lastname@example.org>
From: Jason Thorpe <email@example.com>
Date: 06/29/2006 08:56:43
On Jun 29, 2006, at 3:08 AM, Juergen Hannken-Illjes wrote:
> - We add a transaction lock to "struct mount" behaving like a
> lockmgr lock
> but allowing a "already have a shared lock" query.
> - Transactions are enclosed in vn_trans_lock/vn_trans_unlock pairs
Uh, why not make it a normal reader-writer lock and always pair a
release with an acquire? That way you can do away with the "1 of the
read already owns a shared lock".
I think users of the API will go insane with code confusion if they
have to handle the "already has" case :-)
> if ((s = vn_trans_lock(mp, V_WAIT)) < 0)
> return s;
> <run the operation>
> if (s)
> where vn_trans_lock() returns -1 on error, 0 on success and 1 if
> the thread
> already owns a shared lock.
> - We add vfs operations
> VFS_SUSPEND: takes the exclusive transaction lock and sync to disk .
> this sync-to-disk can ignore the vnode locks.
> VFS_RESUME: relase the exclusive transaction lock.
> Juergen Hannken-Illjes - firstname.lastname@example.org - TU Braunschweig