commit 36bd8bfc71a753c545134c627c8c304bf91cb234
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jul 9 19:33:45 2012 -0700

    [SCSI] Revert "[SCSI] fix async probe regression"
    
    This reverts commit 43a8d39d0137612c336aa8bbb2cb886a79772ffb.
    
    Commit 43a8d39d fixed the fact that wait_for_device_probe() was unable
    to flush sd probe work.  Now that sd probe work is once again flushable
    via wait_for_device_probe() this workaround is no longer needed.
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Eldad Zack <eldad@fogrefinery.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

commit 758da9dc2be8925571ae8fcf5cf1a763edbb3d08
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jul 9 19:33:40 2012 -0700

    [SCSI] cleanup usages of scsi_complete_async_scans
    
    Now that scsi registers its async scan work with the async subsystem,
    wait_for_device_probe() is sufficient for ensuring all scanning is
    complete.
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Cc: Rafael J. Wysocki <rjw@sisk.pl>
    Tested-by: Eldad Zack <eldad@fogrefinery.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

commit 485e82a03725ccb6205c0043f11993dcc3e47f0b
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jul 9 19:33:35 2012 -0700

    [SCSI] queue async scan work to an async_schedule domain
    
    This is preparation to enable async_synchronize_full() to be used as a
    replacement for scsi_complete_async_scans(), i.e. to stop leaking scsi
    internal details where they are not needed.
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Eldad Zack <eldad@fogrefinery.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

commit 7e6043ea251ab8fc516f3b24b391646c05386fbb
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jul 9 19:33:30 2012 -0700

    [SCSI] async: make async_synchronize_full() flush all work regardless of domain
    
    In response to an async related regression James noted:
    
      "My theory is that this is an init problem: The assumption in a lot of
       our code is that async_synchronize_full() waits for everything ... even
       the domain specific async schedules, which isn't true."
    
    ...so make this assumption true.
    
    Each domain, including the default one, registers itself on a global domain
    list when work is scheduled.  Once all entries complete it exits that
    list.  Waiting for the list to be empty syncs all in-flight work across
    all domains.
    
    Domains can opt-out of global syncing if they are declared as exclusive
    ASYNC_DOMAIN_EXCLUSIVE().  All stack-based domains have been declared
    exclusive since the domain may go out of scope as soon as the last work
    item completes.
    
    Statically declared domains are mostly ok, but async_unregister_domain()
    is there to close any theoretical races with pending
    async_synchronize_full waiters at module removal time.
    
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Reported-by: Meelis Roos <mroos@linux.ee>
    Reported-by: Eldad Zack <eldadzack@gmail.com>
    Tested-by: Eldad Zack <eldad@fogrefinery.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>

commit d463fcc0487a3a5f833c030a51efc260ca960140
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jul 9 19:33:25 2012 -0700

    [SCSI] async: introduce 'async_domain' type
    
    This is in preparation for teaching async_synchronize_full() to sync all
    pending async work, and not just on the async_running domain.  This
    conversion is functionally equivalent, just embedding the existing list
    in a new async_domain type.
    
    The .registered attribute is used in a later patch to distinguish
    between domains that want to be flushed by async_synchronize_full()
    versus those that only expect async_synchronize_{full|cookie}_domain to
    be used for flushing.
    
    [jejb: add async.h to scsi_priv.h for struct async_domain]
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Acked-by: Arjan van de Ven <arjan@linux.intel.com>
    Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Tested-by: Eldad Zack <eldad@fogrefinery.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>