Messages in this thread | | | Subject | Re: RT and XFS | From | Daniel Walker <> | Date | Wed, 13 Jul 2005 21:10:26 -0700 |
| |
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 completes.
> 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 .
Daniel
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |