lkml.org 
[lkml]   [2017]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/2] scsi: storvsc: Add support for FC lightweight host.
    Date
    Included in the current storvsc driver for Hyper-V is the ability
    to access luns on an FC fabric via a virtualized fiber channel
    adapter exposed by the Hyper-V host. This was done to provide an
    interface for existing customer tools that was more consistent
    with a conventional FC device. The driver attaches to the FC
    transport to allow host and port names to be published
    under /sys/class/fc_host/hostX.

    A problem arose when attaching to the FC transport. The scsi_scan
    code attempts to call fc_user_scan which has basically become a no-op
    due to the virtualized nature of the FC host ( missing rports,
    vports, etc ). At this point you cannot refresh the scsi bus after
    mapping or unmapping luns on the SAN without a reboot.

    This patch consists of:

    1) storvsc elects to use the new lightweight FC host option by enabling it
    in fc_function_template facilitating a fuctional scsi_scan.

    2) Removes an original workaround dealing with replacing the eh_timed_out
    function. Patch 1 will not set the scsi_transport_template.eh_timed_out
    function directly during lightweight fc_attach_transport(). It instead
    relies on whatever was indicated as the scsi_host_template timeout handler
    during scsi_times_out() scsi_error.c. So the workaround is no longer
    necessary.

    Signed-off-by: Cathy Avery <cavery@redhat.com>
    ---
    drivers/scsi/storvsc_drv.c | 12 +++++++-----
    1 file changed, 7 insertions(+), 5 deletions(-)

    diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
    index 888e16e..d487e00 100644
    --- a/drivers/scsi/storvsc_drv.c
    +++ b/drivers/scsi/storvsc_drv.c
    @@ -1878,10 +1878,17 @@ static struct hv_driver storvsc_drv = {
    .remove = storvsc_remove,
    };

    +/*
    + * The driver cannot functionally back all transport
    + * attributes so select only those pertinent including
    + * the lightweight model.
    + */
    +
    #if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
    static struct fc_function_template fc_transport_functions = {
    .show_host_node_name = 1,
    .show_host_port_name = 1,
    + .lightweight_transport = 1,
    };
    #endif

    @@ -1906,11 +1913,6 @@ static int __init storvsc_drv_init(void)
    fc_transport_template = fc_attach_transport(&fc_transport_functions);
    if (!fc_transport_template)
    return -ENODEV;
    -
    - /*
    - * Install Hyper-V specific timeout handler.
    - */
    - fc_transport_template->eh_timed_out = storvsc_eh_timed_out;
    #endif

    ret = vmbus_driver_register(&storvsc_drv);
    --
    2.5.0
    \
     
     \ /
      Last update: 2017-01-26 14:41    [W:3.220 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site