From: Maksym Planeta <mplaneta@os.inf.tu-dresden.de>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Moni Shoua <monis@mellanox.com>,
Doug Ledford <dledford@redhat.com>,
linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 10/10] Replace tasklets with workqueues
Date: Thu, 25 Jul 2019 16:36:20 +0200 [thread overview]
Message-ID: <21a4daf9-c77e-ec80-9da0-78ab512d248d@os.inf.tu-dresden.de> (raw)
In-Reply-To: <20190722153205.GG7607@ziepe.ca>
Is this one better?
Replace tasklets with workqueues in rxe driver. The reason for this
replacement is that tasklets are supposed to run atomically, although
the actual code may block.
Modify the SKB destructor for outgoing SKB's to schedule QP tasks only
if the QP is not destroyed itself.
Add a variable "pending_skb_down" to ensure that reference counting for
a QP is decremented only when QP access related to this skb is over.
Separate part of pool element cleanup code to allow this code to be
called in the very end of cleanup, even if some of cleanup is scheduled
for asynchronous execution. Example, when it was happening is destructor
for a QP.
Disallow calling of task functions "directly". This allows to simplify
logic inside rxe_task.c
Schedule rxe_qp_do_cleanup onto high-priority system workqueue, because
this function can be scheduled from normal system workqueue.
Before destroying a QP, wait until all references to this QP are gone.
Previously the problem was that outgoing SKBs could be freed after the
QP these SKBs refer to is destroyed.
Add blocking rxe_run_task to replace __rxe_do_task that was calling task
function directly.
On 22/07/2019 17:32, Jason Gunthorpe wrote:
> On Mon, Jul 22, 2019 at 05:14:26PM +0200, Maksym Planeta wrote:
>> Replace tasklets with workqueues in rxe driver.
>>
>> Ensure that task is called only through a workqueue. This allows to
>> simplify task logic.
>>
>> Add additional dependencies to make sure that cleanup tasks do not
>> happen after object's memory is already reclaimed.
>>
>> Improve overal stability of the driver by removing multiple race
>> conditions and use-after-free situations.
>
> This should be described more precisely
>
> Jason
>
--
Regards,
Maksym Planeta
next prev parent reply other threads:[~2019-07-25 14:36 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-22 15:14 [PATCH 00/10] Refactor rxe driver to remove multiple race conditions Maksym Planeta
2019-07-22 15:14 ` [PATCH 01/10] Simplify rxe_run_task interface Maksym Planeta
2019-07-22 15:14 ` [PATCH 02/10] Remove counter that does not have a meaning anymore Maksym Planeta
2019-07-22 15:14 ` [PATCH 03/10] Make pool interface more type safe Maksym Planeta
2019-07-22 15:14 ` [PATCH 04/10] Protect kref_put with the lock Maksym Planeta
2019-07-22 15:25 ` Jason Gunthorpe
2019-07-22 15:28 ` Maksym Planeta
2019-07-22 15:14 ` [PATCH 05/10] Fix reference counting for rxe tasklets Maksym Planeta
2019-07-22 15:27 ` Jason Gunthorpe
2019-07-22 15:14 ` [PATCH 06/10] Remove pd form rxe_ah Maksym Planeta
2019-07-22 15:14 ` [PATCH 07/10] Pass the return value of kref_put further Maksym Planeta
2019-07-22 15:29 ` Jason Gunthorpe
2019-07-22 15:31 ` Maksym Planeta
2019-07-22 15:14 ` [PATCH 08/10] Move responsibility of cleaning up pool elements Maksym Planeta
2019-07-22 15:14 ` [PATCH 09/10] Consolidate resetting of QP's tasks into one place Maksym Planeta
2019-07-22 15:14 ` [PATCH 10/10] Replace tasklets with workqueues Maksym Planeta
2019-07-22 15:32 ` Jason Gunthorpe
2019-07-25 14:36 ` Maksym Planeta [this message]
2019-07-25 18:50 ` Jason Gunthorpe
2019-07-30 19:20 ` Maksym Planeta
2019-10-11 10:41 ` Maksym Planeta
2019-10-22 19:04 ` Jason Gunthorpe
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=21a4daf9-c77e-ec80-9da0-78ab512d248d@os.inf.tu-dresden.de \
--to=mplaneta@os.inf.tu-dresden.de \
--cc=dledford@redhat.com \
--cc=jgg@ziepe.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=monis@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.