From: Cornelia Huck <cohuck@redhat.com>
To: Parav Pandit <parav@mellanox.com>
Cc: "alex.williamson@redhat.com" <alex.williamson@redhat.com>,
Jiri Pirko <jiri@mellanox.com>,
"kwankhede@nvidia.com" <kwankhede@nvidia.com>,
"davem@davemloft.net" <davem@davemloft.net>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: Re: [PATCH v2 1/6] mdev: Introduce sha1 based mdev alias
Date: Mon, 2 Sep 2019 16:46:04 +0200 [thread overview]
Message-ID: <20190902164604.1d04614f.cohuck@redhat.com> (raw)
In-Reply-To: <AM0PR05MB48661F9608F284AB5C9BAEB5D1BD0@AM0PR05MB4866.eurprd05.prod.outlook.com>
On Fri, 30 Aug 2019 15:45:13 +0000
Parav Pandit <parav@mellanox.com> wrote:
> > > > > > This detour via the local variable looks weird to me. Can you
> > > > > > either create the alias directly in the mdev (would need to
> > > > > > happen later in the function, but I'm not sure why you generate
> > > > > > the alias before checking for duplicates anyway), or do an explicit copy?
> > > > > Alias duplicate check is done after generating it, because
> > > > > duplicate alias are
> > > > not allowed.
> > > > > The probability of collision is rare.
> > > > > So it is speculatively generated without hold the lock, because
> > > > > there is no
> > > > need to hold the lock.
> > > > > It is compared along with guid while mutex lock is held in single loop.
> > > > > And if it is duplicate, there is no need to allocate mdev.
> > > > >
> > > > > It will be sub optimal to run through the mdev list 2nd time after
> > > > > mdev
> > > > creation and after generating alias for duplicate check.
> > > >
> > > > Ok, but what about copying it? I find this "set local variable to
> > > > NULL after ownership is transferred" pattern a bit unintuitive.
> > > > Copying it to the mdev (and then unconditionally freeing it) looks more
> > obvious to me.
> > > Its not unconditionally freed.
> >
> > That's not what I have been saying :(
> >
> Ah I see. You want to allocate alias memory twice; once inside mdev device and another one in _create() function.
> _create() one you want to free unconditionally.
>
> Well, passing pointer is fine.
It's not that it doesn't work, but it feels fragile due to its
non-obviousness.
> mdev_register_device() has similar little tricky pattern that makes parent = NULL on __find_parent_device() finds duplicate one.
I don't think that the two are comparable.
>
> Ownership transfer is more straight forward code.
I have to disagree here.
>
> It is similar to device_initialize(), device init sequence code, where once device_initialize is done, freeing the device memory will be left to the put_device(), we don't call kfree() on mdev device.
This does not really look similar to me: devices are refcounted
structures, while strings aren't; you transfer a local pointer to a
refcounted structure and then discard the local reference.
next prev parent reply other threads:[~2019-09-02 14:46 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-26 20:41 [PATCH 0/4] Introduce variable length mdev alias Parav Pandit
2019-08-26 20:41 ` [PATCH 1/4] mdev: Introduce sha1 based " Parav Pandit
2019-08-27 1:44 ` Alex Williamson
2019-08-27 1:51 ` Alex Williamson
2019-08-27 4:24 ` Parav Pandit
2019-08-27 10:24 ` Cornelia Huck
2019-08-27 11:12 ` Parav Pandit
2019-08-27 11:24 ` Cornelia Huck
2019-08-27 11:33 ` Parav Pandit
2019-08-27 11:41 ` Cornelia Huck
2019-08-27 11:57 ` Parav Pandit
2019-08-27 13:35 ` Cornelia Huck
2019-08-27 16:50 ` Alex Williamson
2019-08-27 11:16 ` Parav Pandit
2019-08-26 20:41 ` [PATCH 2/4] mdev: Make mdev alias unique among all mdevs Parav Pandit
2019-08-26 23:02 ` Mark Bloch
2019-08-27 4:28 ` Parav Pandit
2019-08-27 15:23 ` Alex Williamson
2019-08-27 16:16 ` Parav Pandit
2019-08-27 10:29 ` Cornelia Huck
2019-08-27 11:08 ` Parav Pandit
2019-08-27 11:29 ` Cornelia Huck
2019-08-27 15:28 ` Alex Williamson
2019-08-27 15:39 ` Cornelia Huck
2019-08-27 16:13 ` Parav Pandit
2019-08-27 16:24 ` Alex Williamson
2019-08-27 18:54 ` Parav Pandit
2019-08-26 20:41 ` [PATCH 3/4] mdev: Expose mdev alias in sysfs tree Parav Pandit
2019-08-27 1:53 ` Alex Williamson
2019-08-27 3:30 ` Parav Pandit
2019-08-27 10:47 ` Cornelia Huck
2019-08-27 11:07 ` Parav Pandit
2019-08-27 11:34 ` Cornelia Huck
2019-08-27 11:52 ` Parav Pandit
2019-08-27 11:55 ` Cornelia Huck
2019-08-27 12:00 ` Parav Pandit
2019-08-26 20:41 ` [PATCH 4/4] mtty: Optionally support mtty alias Parav Pandit
2019-08-27 13:11 ` [PATCH 0/4] Introduce variable length mdev alias Parav Pandit
2019-08-27 13:31 ` Cornelia Huck
2019-08-27 17:48 ` Alex Williamson
2019-08-27 18:11 ` Parav Pandit
2019-08-27 19:16 ` [PATCH v1 0/5] " Parav Pandit
2019-08-27 19:16 ` [PATCH v1 1/5] mdev: Introduce sha1 based " Parav Pandit
2019-08-28 21:25 ` Alex Williamson
2019-08-28 21:34 ` Alex Williamson
2019-08-29 9:07 ` Parav Pandit
2019-08-29 9:06 ` Parav Pandit
2019-08-27 19:16 ` [PATCH v1 2/5] mdev: Make mdev alias unique among all mdevs Parav Pandit
2019-08-28 21:36 ` Alex Williamson
2019-08-29 9:07 ` Parav Pandit
2019-08-27 19:16 ` [PATCH v1 3/5] mdev: Expose mdev alias in sysfs tree Parav Pandit
2019-08-27 19:16 ` [PATCH v1 4/5] mdev: Update sysfs documentation Parav Pandit
2019-08-27 19:16 ` [PATCH v1 5/5] mtty: Optionally support mtty alias Parav Pandit
2019-08-29 11:18 ` [PATCH v2 0/6] Introduce variable length mdev alias Parav Pandit
2019-08-29 11:18 ` [PATCH v2 1/6] mdev: Introduce sha1 based " Parav Pandit
2019-08-29 12:26 ` Yunsheng Lin
2019-08-30 2:27 ` Parav Pandit
2019-08-30 9:17 ` Cornelia Huck
2019-08-30 12:33 ` Parav Pandit
2019-08-30 12:39 ` Cornelia Huck
2019-08-30 12:58 ` Parav Pandit
2019-08-30 14:02 ` Cornelia Huck
2019-08-30 15:45 ` Parav Pandit
2019-09-02 14:46 ` Cornelia Huck [this message]
2019-09-03 3:47 ` Parav Pandit
2019-08-29 11:19 ` [PATCH v2 2/6] mdev: Make mdev alias unique among all mdevs Parav Pandit
2019-08-29 12:31 ` Yunsheng Lin
2019-08-30 12:40 ` Cornelia Huck
2019-08-30 12:59 ` Parav Pandit
2019-08-29 11:19 ` [PATCH v2 3/6] mdev: Expose mdev alias in sysfs tree Parav Pandit
2019-08-29 11:19 ` [PATCH v2 4/6] mdev: Introduce an API mdev_alias Parav Pandit
2019-08-29 11:19 ` [PATCH v2 5/6] mdev: Update sysfs documentation Parav Pandit
2019-08-30 12:49 ` Cornelia Huck
2019-08-30 13:10 ` Parav Pandit
2019-09-02 14:36 ` Cornelia Huck
2019-09-03 3:53 ` Parav Pandit
2019-08-29 11:19 ` [PATCH v2 6/6] mtty: Optionally support mtty alias Parav Pandit
2019-09-02 4:24 ` [PATCH v3 0/5] Introduce variable length mdev alias Parav Pandit
2019-09-02 4:24 ` [PATCH v3 1/5] mdev: Introduce sha1 based " Parav Pandit
2019-09-17 10:03 ` Cornelia Huck
2019-09-02 4:24 ` [PATCH v3 2/5] mdev: Make mdev alias unique among all mdevs Parav Pandit
2019-09-17 10:04 ` Cornelia Huck
2019-09-02 4:24 ` [PATCH v3 3/5] mdev: Expose mdev alias in sysfs tree Parav Pandit
2019-09-17 10:08 ` Cornelia Huck
2019-09-02 4:24 ` [PATCH v3 4/5] mdev: Introduce an API mdev_alias Parav Pandit
2019-09-17 10:10 ` Cornelia Huck
2019-09-02 4:24 ` [PATCH v3 5/5] mtty: Optionally support mtty alias Parav Pandit
2019-09-09 20:42 ` [PATCH v3 0/5] Introduce variable length mdev alias Parav Pandit
2019-09-11 13:56 ` Alex Williamson
2019-09-11 15:30 ` Parav Pandit
2019-09-11 16:29 ` Cornelia Huck
2019-09-11 16:38 ` Parav Pandit
2019-09-13 21:32 ` Alex Williamson
2019-09-13 23:19 ` Parav Pandit
2019-09-17 10:13 ` Cornelia Huck
2019-09-18 17:15 ` Parav Pandit
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=20190902164604.1d04614f.cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=alex.williamson@redhat.com \
--cc=davem@davemloft.net \
--cc=jiri@mellanox.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=parav@mellanox.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.