From: Jason Gunthorpe <jgunthorpe-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
To: Matan Barak <matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: Doug Ledford <dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Yishai Hadas <yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Sean Hefty <sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Ira Weiny <ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
Christoph Lameter <cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org>,
Majd Dibbiny <majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Tal Alon <talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Leon Romanovsky <leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Liran Liss <liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Haggai Eran <haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: Re: [PATCH for-next 4/7] IB/core: Add generic ucontext initialization and teardown
Date: Wed, 11 Jan 2017 17:09:31 -0700 [thread overview]
Message-ID: <20170112000931.GD31682@obsidianresearch.com> (raw)
In-Reply-To: <1484132033-3346-5-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
On Wed, Jan 11, 2017 at 12:53:50PM +0200, Matan Barak wrote:
> When a ucontext is created, we need to initialize the list of objects.
> This list consists of every user object that is associated with
> this ucontext. The possible elements in this list are either a file
> descriptor or an object which is represented by an IDR.
> Every such an object, has a release function (which is called upon
> object destruction) and a number associated to its release order.
Please use standard names. As discussed my last message, every
uobject should have a kref, and the 'release' function is *only* the
function that gets called on last-put.
The purpose of this destruction and ordering is to destroy *device*
resources *only*. It has nothing to do with ordering kref puts.
> +static unsigned int get_max_type_orders(const struct uverbs_root *root)
> +{
> + unsigned int i;
> + unsigned int max = 0;
> +
> + for (i = 0; i < root->num_groups; i++) {
> + unsigned int j;
> + const struct uverbs_type_group *types = root->type_groups[i];
> +
> + for (j = 0; j < types->num_types; j++) {
> + /*
> + * Either this type isn't supported by this ib_device
> + * (as the group is an array of pointers to types
> + * indexed by the type) or this type is supported, but
> + * we can't instantiate objects from this type
> + * (e.g. you can't instantiate objects of
> + * UVERBS_DEVICE).
> + */
> + if (!types->types[j] || !types->types[j]->alloc)
> + continue;
> + if (types->types[j]->alloc->order > max)
> + max = types->types[j]->alloc->order;
> + }
> + }
This seems like an inefficient algorithm, just use something like this
for destroy:
cur_order = 0
while (!list_empty(&ucontext->uobjects)) {
next_order = MAX;
list_for_each_entry_safe(obj, next_obj, &ucontext->uobjects,
list) {
if (object->type->order == cur_order) {
..
} else
next_order = min(object->type->order, next_order);
}
cur_order = next_order;
}
> +void uverbs_release_ucontext(struct ib_ucontext *ucontext)
> +{
> + /*
> + * Since FD objects could outlive their context, we use a kref'ed
> + * lock. This lock is referenced when a context and FD objects are
> + * created. This lock protects concurrent context release from FD
> + * objects release. Therefore, we need to put this lock object in
> + * the context and every FD object release.
> + */
> + kref_put(&ucontext->uobjects_lock->ref, release_uobjects_list_lock);
> +}
A function called release that doesn't do release?
> +struct uverbs_type {
> + const struct uverbs_type_alloc_action *alloc;
> +};
> +
> +struct uverbs_type_group {
> + size_t num_types;
> + const struct uverbs_type **types;
> +};
> +
> +struct uverbs_root {
> + const struct uverbs_type_group **type_groups;
> + size_t num_groups;
> +};
None of this is necessary at this point in the series, as I said in an
earlier patch just create a single sensible meta-class type and store
the order in there.
Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-01-12 0:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-11 10:53 [PATCH for-next 0/7] Change IDR usage and locking in uverbs Matan Barak
[not found] ` <1484132033-3346-1-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-11 10:53 ` [PATCH for-next 1/7] IB/core: Refactor IDR to be per-device Matan Barak
[not found] ` <1484132033-3346-2-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-11 22:39 ` Jason Gunthorpe
[not found] ` <20170111223917.GA31682-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-17 17:08 ` Matan Barak
[not found] ` <CAAKD3BDMDyahSu1uFPE_bA=QXAy9Q+qdMPoVw-hJTrFN3um9rg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-17 18:09 ` Jason Gunthorpe
2017-01-11 10:53 ` [PATCH for-next 2/7] IB/core: Add support for custom types Matan Barak
[not found] ` <1484132033-3346-3-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-11 23:28 ` Jason Gunthorpe
[not found] ` <20170111232811.GB31682-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-17 17:23 ` Matan Barak
[not found] ` <CAAKD3BBkzoLuY3TF=bDK3U=rnLzK0uWmDL2tgsUwmBoGTXAqrw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-17 19:01 ` Jason Gunthorpe
2017-01-11 10:53 ` [PATCH for-next 3/7] IB/core: Add support for fd objects Matan Barak
[not found] ` <1484132033-3346-4-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-11 23:58 ` Jason Gunthorpe
[not found] ` <20170111235801.GC31682-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-17 17:24 ` Matan Barak
[not found] ` <CAAKD3BBQLxnh-keng+LjZEyWBYKbXN_Sszk1BcGnyVeZU_45nw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-17 19:11 ` Jason Gunthorpe
2017-01-11 10:53 ` [PATCH for-next 4/7] IB/core: Add generic ucontext initialization and teardown Matan Barak
[not found] ` <1484132033-3346-5-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-12 0:09 ` Jason Gunthorpe [this message]
2017-01-11 10:53 ` [PATCH for-next 5/7] IB/core: Add macros for declaring types and type groups Matan Barak
[not found] ` <1484132033-3346-6-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-12 0:10 ` Jason Gunthorpe
[not found] ` <20170112001029.GE31682-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-17 17:25 ` Matan Barak
[not found] ` <CAAKD3BCvEP4MdvSy6dD0DDjfyd+PO8Y=7O+qFwPO5rjGDW_nfA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-17 19:13 ` Jason Gunthorpe
2017-01-11 10:53 ` [PATCH for-next 6/7] IB/core: Declare all common IB types Matan Barak
[not found] ` <1484132033-3346-7-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-12 0:19 ` Jason Gunthorpe
[not found] ` <20170112001955.GF31682-ePGOBjL8dl3ta4EC/59zMFaTQe2KTcn/@public.gmane.org>
2017-01-12 6:48 ` Matan Barak
2017-01-17 17:37 ` Matan Barak
[not found] ` <CAAKD3BBKnJRNF+iqRSkjmGVcff=Hd68wVvXW7y+=pnnc4=yDfA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-01-17 19:15 ` Jason Gunthorpe
2017-01-11 10:53 ` [PATCH for-next 7/7] IB/core: Use the new IDR and locking infrastructure in uverbs_cmd Matan Barak
[not found] ` <1484132033-3346-8-git-send-email-matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2017-01-11 22:49 ` kbuild test robot
2017-01-11 23:43 ` kbuild test robot
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=20170112000931.GD31682@obsidianresearch.com \
--to=jgunthorpe-epgobjl8dl3ta4ec/59zmfatqe2ktcn/@public.gmane.org \
--cc=cl-vYTEC60ixJUAvxtiuMwx3w@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=haggaie-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=ira.weiny-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=leonro-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=liranl-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=majd-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=matanb-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=sean.hefty-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=talal-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=yishaih-VPRAkNaXOzVWk0Htik3J/w@public.gmane.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 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.