| Subject | Re: [PATCH v5 00/44] ldisc patchset | From | Peter Hurley <> | Date | Wed, 13 Mar 2013 21:12:54 -0400 |
| |
On Wed, 2013-03-13 at 04:36 -0700, Michel Lespinasse wrote: > Have you considered building your ldlock based on lib/rwsem-spinlock.c > instead ? i.e. having an internal spinlock to protect the ldisc > reference count and the reader and writer queues. This would seem much > simpler get right. The downside would be that a spinlock would be > taken for a short time whenever an ldisc reference is taken or > released. I don't expect that the internal spinlock would get > significant contention ?
That would have been too easy :)
TBH, I hadn't considered it until I was most the way through a working atomic version. I had already split the reader/writer wait lists. And figured out how to always use the wait bias for every waiting reader and writer -- rather than the rwsem way of testing for an empty list -- which made the timeout handling easier.
At the time, the only thing that I was still struggling with was recursion, and the spinlock flavor wasn't going to fix that. So I just kept with the atomic flavor.
|