Thread (10 messages) 10 messages, 6 authors, 2016-12-16

Re: [RFC 00/10] implement alternative and much simpler id allocator

From: Tejun Heo <tj@kernel.org>
Date: 2016-12-12 18:05:05
Also in: dri-devel, lkml

Hello, Matthew.

On Mon, Dec 12, 2016 at 05:35:17PM +0000, Matthew Wilcox wrote:
I know the preload followed by preload_end looks wrong.  I don't
think it's broken though.  If we get preempted, then the worst
situation is that we'll end up with the memory we preallocated being
allocated to somebody else.  Then the attempt to allocate memory can
fail, and we'll return -EAGAIN, at which point all callers are
supposed to return to the pre_get() stage.  Certainly that's what
ida_simple_get() does.
Ah, right, ida_pre_get() doesn't have any protection against other
task allocating inbetween pre_get and the actual allocation, so it
should retry on failure.  Yeah, then the proposed preloading wouldn't
be wrong.  It'd be nice to explain what's going on tho.
I'd definitely be open to changing the IDA API.  I know Kent had
some thoughts on that including splitting the simple lock into a
per-IDA lock.  His last work on it was here, I believe:

https://evilpiepirate.org/git/linux-bcache.git/log/?h=idr
Yeah, that was a big re-write, but for now I think it'd be nice to
replace ida's pre_get mechanism with something similar to idr's
preload so that they're more consistent.  There aren't that many
direct users of ida_pre_get(), so it shouldn't be too difficult to
change.

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help