Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753066AbbBRRDi (ORCPT ); Wed, 18 Feb 2015 12:03:38 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:33491 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752637AbbBRRDh (ORCPT ); Wed, 18 Feb 2015 12:03:37 -0500 Message-ID: <54E4C5A8.9070109@oracle.com> Date: Wed, 18 Feb 2015 12:02:32 -0500 From: Boris Ostrovsky User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: Juergen Gross , linux-kernel@vger.kernel.org, xen-devel@lists.xensource.com, konrad.wilk@oracle.com, david.vrabel@citrix.com Subject: Re: [PATCH V2 2/3] xen: scsiback: add LUN of restored domain References: <1424156569-13642-1-git-send-email-jgross@suse.com> <1424156569-13642-3-git-send-email-jgross@suse.com> In-Reply-To: <1424156569-13642-3-git-send-email-jgross@suse.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2577 Lines: 75 On 02/17/2015 02:02 AM, Juergen Gross wrote: > When a xen domain is being restored the LUN state of a pvscsi device > is "Connected" and not "Initialising" as in case of attaching a new > pvscsi LUN. > > This must be taken into account when adding a new pvscsi device for > a domain as otherwise the pvscsi LUN won't be connected to the > SCSI target associated with it. scsiback_do_add_lun() is being called from scsiback_frontend_changed() which eventually sets the state to Connected. Is the added test of 'try' an optimization or is it needed for correctness? -boris > > Signed-off-by: Juergen Gross > --- > drivers/xen/xen-scsiback.c | 19 ++++++++++++++----- > 1 file changed, 14 insertions(+), 5 deletions(-) > > diff --git a/drivers/xen/xen-scsiback.c b/drivers/xen/xen-scsiback.c > index 9faca6a..9d60176 100644 > --- a/drivers/xen/xen-scsiback.c > +++ b/drivers/xen/xen-scsiback.c > @@ -992,7 +992,7 @@ found: > } > > static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state, > - char *phy, struct ids_tuple *vir) > + char *phy, struct ids_tuple *vir, int try) > { > if (!scsiback_add_translation_entry(info, phy, vir)) { > if (xenbus_printf(XBT_NIL, info->dev->nodename, state, > @@ -1000,7 +1000,7 @@ static void scsiback_do_add_lun(struct vscsibk_info *info, const char *state, > pr_err("xen-pvscsi: xenbus_printf error %s\n", state); > scsiback_del_translation_entry(info, vir); > } > - } else { > + } else if (!try) { > xenbus_printf(XBT_NIL, info->dev->nodename, state, > "%d", XenbusStateClosed); > } > @@ -1060,10 +1060,19 @@ static void scsiback_do_1lun_hotplug(struct vscsibk_info *info, int op, > > switch (op) { > case VSCSIBACK_OP_ADD_OR_DEL_LUN: > - if (device_state == XenbusStateInitialising) > - scsiback_do_add_lun(info, state, phy, &vir); > - if (device_state == XenbusStateClosing) > + switch (device_state) { > + case XenbusStateInitialising: > + scsiback_do_add_lun(info, state, phy, &vir, 0); > + break; > + case XenbusStateConnected: > + scsiback_do_add_lun(info, state, phy, &vir, 1); > + break; > + case XenbusStateClosing: > scsiback_do_del_lun(info, state, &vir); > + break; > + default: > + break; > + } > break; > > case VSCSIBACK_OP_UPDATEDEV_STATE: > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/