1. 11 Jan, 2018 37 commits
  2. 09 Jan, 2018 3 commits
    • Jason Yan's avatar
      scsi: libsas: use flush_workqueue to process disco events synchronously · 517e5153
      Jason Yan authored
      Now we are processing sas event and discover event in different
      workqueues.  It's safe to wait the discover event done in the sas event
      work. Use flush_workqueue() to insure the disco and revalidate events
      processed synchronously so that the whole discover and revalidate
      process will not be interrupted by other events.
      Signed-off-by: default avatarJason Yan <yanaijie@huawei.com>
      CC: John Garry <john.garry@huawei.com>
      CC: Johannes Thumshirn <jthumshirn@suse.de>
      CC: Ewan Milne <emilne@redhat.com>
      CC: Christoph Hellwig <hch@lst.de>
      CC: Tomas Henzl <thenzl@redhat.com>
      CC: Dan Williams <dan.j.williams@intel.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      517e5153
    • Jason Yan's avatar
      scsi: libsas: Use new workqueue to run sas event and disco event · 93bdbd06
      Jason Yan authored
      Now all libsas works are queued to scsi host workqueue, include sas
      event work post by LLDD and sas discovery work, and a sas hotplug flow
      may be divided into several works, e.g libsas receive a
      PORTE_BYTES_DMAED event, currently we process it as following steps:
      
      sas_form_port  --- run in work in shost workq
      	sas_discover_domain  --- run in another work in shost workq
      		...
      		sas_probe_devices  --- run in new work in shost workq
      We found during hot-add a device, libsas may need run several
      works in same workqueue to add device in system, the process is
      not atomic, it may interrupt by other sas event works, like
      PHYE_LOSS_OF_SIGNAL.
      
      This patch is preparation of execute libsas sas event in sync. We need
      to use different workqueue to run sas event and disco event. Otherwise
      the work will be blocked for waiting another chained work in the same
      workqueue.
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      CC: John Garry <john.garry@huawei.com>
      CC: Johannes Thumshirn <jthumshirn@suse.de>
      CC: Ewan Milne <emilne@redhat.com>
      CC: Christoph Hellwig <hch@lst.de>
      CC: Tomas Henzl <thenzl@redhat.com>
      CC: Dan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarJason Yan <yanaijie@huawei.com>
      Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      93bdbd06
    • Jason Yan's avatar
      scsi: libsas: make the event threshold configurable · 8eea9dd8
      Jason Yan authored
      Add a sysfs attr that LLDD can configure it for every host. We made an
      example in hisi_sas. Other LLDDs using libsas can implement it if they
      want.
      Suggested-by: default avatarHannes Reinecke <hare@suse.com>
      Signed-off-by: default avatarJason Yan <yanaijie@huawei.com>
      CC: John Garry <john.garry@huawei.com>
      CC: Johannes Thumshirn <jthumshirn@suse.de>
      CC: Ewan Milne <emilne@redhat.com>
      CC: Christoph Hellwig <hch@lst.de>
      CC: Tomas Henzl <thenzl@redhat.com>
      CC: Dan Williams <dan.j.williams@intel.com>
      Acked-by: John Garry <john.garry@huawei.com> #for hisi_sas part
      Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      8eea9dd8