All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jack Wang <jinpu.wang@profitbricks.com>
To: Bart Van Assche <bvanassche@acm.org>
Cc: Roland Dreier <roland@kernel.org>,
	David Dillow <dillowda@ornl.gov>, Vu Pham <vuhuong@mellanox.com>,
	Sebastian Riemer <sebastian.riemer@profitbricks.com>,
	linux-rdma <linux-rdma@vger.kernel.org>,
	linux-scsi <linux-scsi@vger.kernel.org>,
	James Bottomley <jbottomley@parallels.com>,
	Mike Christie <michaelc@cs.wisc.edu>
Subject: RE: [PATCH 07/14] scsi_transport_srp: Add transport layer error handling
Date: Mon, 24 Jun 2013 15:48:41 +0200	[thread overview]
Message-ID: <51C84E39.80806@profitbricks.com> (raw)

> I'm not sure it's possible to avoid such a race without introducing
> a new mutex. How about something like the (untested) SCSI core patch
> below, and invoking scsi_block_eh() and scsi_unblock_eh() around any
> reconnect activity not initiated from the SCSI EH thread ?
> 
> [PATCH] Add scsi_block_eh() and scsi_unblock_eh()
> 
Hi Bart,

The description doesn't match the code at all, do you mean try to
serialize the reconnect activity with this new block_eh_mutex?

Cheers,
Jack
> ---
>  drivers/scsi/hosts.c      |    1 +
>  drivers/scsi/scsi_error.c |   10 ++++++++++
>  include/scsi/scsi_host.h  |    1 +
>  3 files changed, 12 insertions(+)
> 
> diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
> index 17e2ccb..0df3ec8 100644
> --- a/drivers/scsi/hosts.c
> +++ b/drivers/scsi/hosts.c
> @@ -360,6 +360,7 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
>         init_waitqueue_head(&shost->host_wait);
> 
>         mutex_init(&shost->scan_mutex);
> +       mutex_init(&shost->block_eh_mutex);
> 
>         /*
>          * subtract one because we increment first then return, but we need to
> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
> index ab16930..566daaa 100644
> --- a/drivers/scsi/scsi_error.c
> +++ b/drivers/scsi/scsi_error.c
> @@ -551,6 +551,10 @@ static int scsi_begin_eh(struct Scsi_Host *host)
>  {
>         int res;
> 
> +       res = mutex_lock_interruptible(&host->block_eh_mutex);
> +       if (res)
> +               goto out;
> +
>         spin_lock_irq(host->host_lock);
>         switch (host->shost_state) {
>         case SHOST_DEL:
> @@ -565,6 +569,10 @@ static int scsi_begin_eh(struct Scsi_Host *host)
>         }
>         spin_unlock_irq(host->host_lock);
> 
> +       if (res)
> +               mutex_unlock(&host->block_eh_mutex);
> +
> +out:
>         return res;
>  }
> 
> @@ -579,6 +587,8 @@ static void scsi_end_eh(struct Scsi_Host *host)
>         if (host->eh_active == 0)
>                 wake_up(&host->host_wait);
>         spin_unlock_irq(host->host_lock);
> +
> +       mutex_unlock(&host->block_eh_mutex);
>  }
> 
>  /**
> diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
> index 9785e51..d7ce065 100644
> --- a/include/scsi/scsi_host.h
> +++ b/include/scsi/scsi_host.h
> @@ -573,6 +573,7 @@ struct Scsi_Host {
>         spinlock_t              *host_lock;
> 
>         struct mutex            scan_mutex;/* serialize scanning activity */
> +       struct mutex            block_eh_mutex; /* block ML LLD EH calls */
> 
>         struct list_head        eh_cmd_q;
>         struct task_struct    * ehandler;  /* Error recovery thread. */


             reply	other threads:[~2013-06-24 13:48 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-24 13:48 Jack Wang [this message]
     [not found] ` <51C84E39.80806-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>
2013-06-24 15:50   ` [PATCH 07/14] scsi_transport_srp: Add transport layer error handling Bart Van Assche
     [not found]     ` <51C86AB4.1000906-HInyCGIudOg@public.gmane.org>
2013-06-24 16:05       ` Jack Wang
  -- strict thread matches above, loose matches on Subject: below --
2013-06-19 13:44 Jack Wang
2013-06-19 15:27 ` Bart Van Assche
2013-06-21 12:17   ` Jack Wang
2013-06-12 13:17 [PATCH 0/14] IB SRP initiator patches for kernel 3.11 Bart Van Assche
2013-06-12 13:28 ` [PATCH 07/14] scsi_transport_srp: Add transport layer error handling Bart Van Assche
     [not found]   ` <51B8777B.5050201-HInyCGIudOg@public.gmane.org>
2013-06-13 19:43     ` Vu Pham
2013-06-14 13:19       ` Bart Van Assche
     [not found]         ` <51BB1857.7040802-HInyCGIudOg@public.gmane.org>
2013-06-14 17:59           ` Vu Pham
     [not found]             ` <51BB5A04.3080901-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-06-15  9:52               ` Bart Van Assche
     [not found]                 ` <51BC3945.9030900-HInyCGIudOg@public.gmane.org>
2013-06-17  6:18                   ` Hannes Reinecke
2013-06-17  7:04                     ` Bart Van Assche
2013-06-17  7:14                       ` Hannes Reinecke
2013-06-17  7:29                         ` Bart Van Assche
     [not found]                           ` <51BEBAEA.4080202-HInyCGIudOg@public.gmane.org>
2013-06-17  8:10                             ` Hannes Reinecke
2013-06-17 10:13                             ` Sebastian Riemer
2013-06-18 16:59                 ` Vu Pham
     [not found]                   ` <51C09202.2040503-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2013-06-19 13:00                     ` Bart Van Assche
2013-06-23 21:13   ` Mike Christie
     [not found]     ` <51C764FB.6070207-hcNo3dDEHLuVc3sceRu5cw@public.gmane.org>
2013-06-24  7:37       ` 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=51C84E39.80806@profitbricks.com \
    --to=jinpu.wang@profitbricks.com \
    --cc=bvanassche@acm.org \
    --cc=dillowda@ornl.gov \
    --cc=jbottomley@parallels.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=michaelc@cs.wisc.edu \
    --cc=roland@kernel.org \
    --cc=sebastian.riemer@profitbricks.com \
    --cc=vuhuong@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.