Thread (13 messages) 13 messages, 4 authors, 2014-02-14

Re: [PATCH net 1/3] kref: add kref_sub_return

From: David Miller <davem@davemloft.net>
Date: 2014-02-13 04:10:07
Also in: lkml, netdev

From: David Miller <davem@davemloft.net>
Date: Wed, 12 Feb 2014 23:05:06 -0500 (EST)
From: Greg KH <gregkh@linuxfoundation.org>
Date: Wed, 12 Feb 2014 17:39:02 -0800
quoted
Yes, that's horrible as well, but as was already pointed out in this
thread, you can't rely on that value to really be "1" after reading it
due to the way krefs work, what happened if someone else just grabbed
it?

If all they want is a "count" for when to start polling, then use a
separate atomic count, but don't abuse the kref interface for this, I
don't think that will work properly at all.
They want to know which thread of control decrements the count to "1"
as buffers are released.

That seems entirely reasonable to me.

They could add another atomic counter for this, but that's rather
silly since the kref already has an atomic they can use for this
purpose.
If you still can't understand what they are trying to do, they want to
do something precisely when the number of pending buffers is dropped
to 1 or less.

They are using krefs to track how many buffers are attached at a given
moment.

The counter can re-increment after the decrement to 1 or less occurs,
they don't care.

But they want precisely the entity that drops it down to 1 or less to
perform that action.

Just reading the atomic value directly, they cannot do this.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help