From: Bart Van Assche <bvanassche-HInyCGIudOg@public.gmane.org>
To: Sagi Grimberg
<sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>,
sagi grimberg <sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Cc: roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
oren-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v1 1/3] IB/srp: Fix crash when unmapping data loop
Date: Tue, 11 Mar 2014 14:51:12 +0100 [thread overview]
Message-ID: <531F14D0.7010608@acm.org> (raw)
In-Reply-To: <531F11B8.5030202-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
On 03/11/14 14:38, Sagi Grimberg wrote:
>> And before the SCSI host lock push-down the SCSI host lock was
>> held around the srp_queuecommand() invocation. In other words, holding a
>> spin lock around the srp_post_send() call in srp_queuecommand() is
>> neither new nor disallowed by the RDMA API documentation.
>
> I just noted that I think it should be avoided due to performance reasons.
> We are going towards scsi-mq and I suspect fast-path spinlocks will
> become much
> more expensive in this era, and we should try to avoid them rather than
> take them.
Once the SRP initiator driver will support multiple queues the lock
around srp_post_send() will be per queue instead of per target so if the
number of queues is large enough that lock won't be a contention point.
I have experimental code ready that follows this approach.
>> Holding
>> target->lock around the srp_post_send() call and the req->scmnd
>> assignment is only needed to avoid the (theoretical) race where
>> processing of an SRP reply would already have been started before
>> req->scmnd has been assigned by srp_queuecommand().
>
> I see... will assigning scmnd = NULL only if srp_post_send will fail,
> and restore the assignment as before help?
Sorry but I'm not enthusiast about that approach because it could result
in resources being freed while srp_post_send() is in progress. I prefer
to avoid this kind of race conditions.
Bart.
--
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:[~2014-03-11 13:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-24 14:30 [PATCH v1 0/3] SRP initiator fixes for kernel 3.15 Sagi Grimberg
[not found] ` <1393252218-30638-1-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-02-24 14:30 ` [PATCH v1 1/3] IB/srp: Fix crash when unmapping data loop Sagi Grimberg
[not found] ` <1393252218-30638-2-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-02-24 15:11 ` Sebastian Riemer
2014-02-24 15:24 ` Bart Van Assche
[not found] ` <530B6444.1000805-HInyCGIudOg@public.gmane.org>
2014-02-27 11:32 ` Sagi Grimberg
[not found] ` <530F225E.5070500-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-06 9:10 ` Bart Van Assche
[not found] ` <53183B71.4090609-HInyCGIudOg@public.gmane.org>
2014-03-06 15:32 ` sagi grimberg
[not found] ` <53189526.2010704-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-03-06 16:10 ` Sagi Grimberg
[not found] ` <53189DDE.7090003-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-07 8:13 ` Bart Van Assche
[not found] ` <53197FC5.4090102-HInyCGIudOg@public.gmane.org>
2014-03-11 13:38 ` Sagi Grimberg
[not found] ` <531F11B8.5030202-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-11 13:51 ` Bart Van Assche [this message]
[not found] ` <531F14D0.7010608-HInyCGIudOg@public.gmane.org>
2014-03-11 14:07 ` Sagi Grimberg
[not found] ` <531F18A7.1000907-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-11 14:29 ` Bart Van Assche
[not found] ` <531F1DBD.9070505-HInyCGIudOg@public.gmane.org>
2014-03-11 14:48 ` Sagi Grimberg
[not found] ` <531F2221.2090403-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-11 15:00 ` Bart Van Assche
[not found] ` <531F2501.9090005-HInyCGIudOg@public.gmane.org>
2014-03-11 15:30 ` Sagi Grimberg
[not found] ` <531F2C2C.7080306-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-03-12 13:16 ` Bart Van Assche
[not found] ` <53205E1E.3070304-HInyCGIudOg@public.gmane.org>
2014-03-13 7:42 ` Sagi Grimberg
2014-02-24 14:30 ` [PATCH v1 2/3] IB/srp: Check ib_query_gid return value Sagi Grimberg
[not found] ` <1393252218-30638-3-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-02-24 15:34 ` Bart Van Assche
2014-02-24 14:30 ` [PATCH v1 3/3] IB/srp: Protect free_tx iu list from concurrent flows Sagi Grimberg
[not found] ` <1393252218-30638-4-git-send-email-sagig-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-02-24 15:38 ` Bart Van Assche
[not found] ` <530B677A.1040508-HInyCGIudOg@public.gmane.org>
2014-02-27 11:51 ` Sagi Grimberg
[not found] ` <530F26CE.5070404-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-02-27 14:22 ` Bart Van Assche
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=531F14D0.7010608@acm.org \
--to=bvanassche-hinycgiudog@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=oren-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=roland-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=sagig-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org \
--cc=sagig-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.