On Thu, 2005-07-14 at 13:50 +1000, Dave Chinner wrote:
> Now that I've read the thread, I see it's not mrlocks that is the
> issue with unlocking in a different context - it's semaphores.
> All the pagebuf synchronisation is done with a semaphore because
> it's held across the I/O and it's _most definitely_ released in a
> different context when doing async I/O. Just about all metadata I/O
> is async because once the transaction has been logged to disk we
> don't need to write these buffers out synchronously. Not to mention
> the log I/O completion unlocks the buffers in a transaction in a
> different context as well.
> The whole point of using a semaphore in the pagebuf is because there
> is no tracking of who "owns" the lock so we can actually release it
> in a different context. Semaphores were invented for this purpose,
> and we use them in the way they were intended. ;)
Where is the that semaphore spec, is that posix ? There is a new
construct called "complete" that is good for this type of stuff too. No
owner needed , just something running, and something waiting till it
> Realistically, I seriously doubt the need for any sort of rt changes
> to these semaphores. They can be held for indeterminant periods of
> time potentially across multiple disk I/Os (e.g. when held locked in
> a transaction that requires more metadata to be read in from disk to
> make progress). Hence there is no really no point in making them RT
> aware because if you end up waiting on one of them you can forget
> about pretty much any RT guarantee that you've ever given....
PI is always good, cause it allows the tracking of what is high
priority , and what is not .