From: Greg KH <gregkh@linuxfoundation.org>
To: David Miller <davem@davemloft.net>
Cc: virtio-dev@lists.oasis-open.org, anatol.pomozov@gmail.com,
mst@redhat.com, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org, qinchuanyu@huawei.com,
joern@logfs.org
Subject: Re: [PATCH net 1/3] kref: add kref_sub_return
Date: Thu, 13 Feb 2014 16:03:20 -0800 [thread overview]
Message-ID: <20140214000320.GC15564@kroah.com> (raw)
In-Reply-To: <20140212.230953.770721407102955395.davem@davemloft.net>
On Wed, Feb 12, 2014 at 11:09:53PM -0500, David Miller wrote:
> 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
> >
> >> 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.
That makes sense, but is still totally crazy for what a kref was
designed to do. I'm really wary of giving access to the count of the
kref like this as it will almost always be abused (it's been asked for
before, but not like this.)
So how about just "open coding" a kref for this structure, as it wants
something that doesn't fit into the kref model, and should be pretty
simple to do (you can ensure you get the locking right, unlike almost
all users of krefs, as Al Viro constantly points out to me...)
thanks,
greg k-h
next prev parent reply other threads:[~2014-02-14 0:03 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-12 16:37 [PATCH net 0/3] vhost fixes for 3.14, -stable Michael S. Tsirkin
2014-02-12 16:36 ` [PATCH net 3/3] vhost: fix a theoretical race in device cleanup Michael S. Tsirkin
2014-02-12 16:38 ` [PATCH net 2/3] vhost: fix ref cnt checking deadlock Michael S. Tsirkin
2014-02-12 16:38 ` [PATCH net 1/3] kref: add kref_sub_return Michael S. Tsirkin
2014-02-12 16:56 ` Greg Kroah-Hartman
2014-02-12 17:35 ` Michael S. Tsirkin
2014-02-12 18:37 ` Greg Kroah-Hartman
2014-02-12 18:39 ` Anatol Pomozov
2014-02-13 0:06 ` David Miller
2014-02-13 1:25 ` Jörn Engel
2014-02-13 1:39 ` Greg KH
2014-02-13 4:05 ` David Miller
2014-02-13 4:09 ` David Miller
2014-02-14 0:03 ` Greg KH [this message]
2014-02-14 5:10 ` David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140214000320.GC15564@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=anatol.pomozov@gmail.com \
--cc=davem@davemloft.net \
--cc=joern@logfs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mst@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=qinchuanyu@huawei.com \
--cc=virtio-dev@lists.oasis-open.org \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).