From patchwork Wed Sep 24 09:00:38 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Whitcroft X-Patchwork-Id: 392810 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 942821400B7; Wed, 24 Sep 2014 19:01:05 +1000 (EST) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XWiRb-0003Qw-1v; Wed, 24 Sep 2014 09:01:03 +0000 Received: from mail-wg0-f51.google.com ([74.125.82.51]) by huckleberry.canonical.com with esmtp (Exim 4.76) (envelope-from ) id 1XWiRV-0003Ou-LR for kernel-team@lists.ubuntu.com; Wed, 24 Sep 2014 09:00:57 +0000 Received: by mail-wg0-f51.google.com with SMTP id z12so1979598wgg.10 for ; Wed, 24 Sep 2014 02:00:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=c0N2ELUXvwvJYuXc89OZkasf0TtS8m4TE5BawV7r7Ks=; b=ZAkL+S8030gKGYtPVcGEkS6QSJYT5zMWlkvJA+gxWEgoQzqdqqt5C4JTFReRk3rO1C MgaWCVpOX6BVQN0EMCLWsk5z5eSQTV3qFpI0CIXnKrla8jPq4XNy+PIwwGF5mLcekZTg iagHzOyxSd094Kf792qQRAFsNJbpFvGw0ZZcn6TY4QoHY59VwtNoKQl80M033NPkXAkY wKhpnA6b785odvmSMUyATba/rWKcEzI/nIxqcycNVPqajceSfx6QrV2nAJf3UM9nZ6jT zSaXT75s/MDG9rzFVjNWljjYs8Jlne1i5hpjCGDj4QPq83QEYzdMFbCHUwYuoVVPYh/q BaSQ== X-Gm-Message-State: ALoCoQmT8+oFodnH6oqYx7dhA2QsrjPSsEtIrFvHeMVisZhQG8lycRNAapQyyrhHI3S9BrGWSno8 X-Received: by 10.194.118.201 with SMTP id ko9mr6370574wjb.9.1411549257515; Wed, 24 Sep 2014 02:00:57 -0700 (PDT) Received: from localhost ([2001:470:6973:2:78b9:724f:ec05:5c33]) by mx.google.com with ESMTPSA id ul1sm903864wjc.9.2014.09.24.02.00.56 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 24 Sep 2014 02:00:56 -0700 (PDT) From: Andy Whitcroft To: kernel-team@lists.ubuntu.com Subject: [PATCH 02/11] scsi: add a blacklist flag which enables VPD page inquiries Date: Wed, 24 Sep 2014 10:00:38 +0100 Message-Id: <1411549247-6511-3-git-send-email-apw@canonical.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1411549247-6511-1-git-send-email-apw@canonical.com> References: <1411549247-6511-1-git-send-email-apw@canonical.com> Cc: Andy Whitcroft X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.14 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: kernel-team-bounces@lists.ubuntu.com From: "Martin K. Petersen" Despite supporting modern SCSI features some storage devices continue to claim conformance to an older version of the SPC spec. This is done for compatibility with legacy operating systems. Linux by default will not attempt to read VPD pages on devices that claim SPC-2 or older. Introduce a blacklist flag that can be used to trigger VPD page inquiries on devices that are known to support them. Reported-by: KY Srinivasan Tested-by: KY Srinivasan Reviewed-by: KY Srinivasan Signed-off-by: Martin K. Petersen CC: Signed-off-by: Christoph Hellwig (backported from commit c1d40a527e885a40bb9ea6c46a1b1145d42b66a0) BugLink: http://bugs.launchpad.net/bugs/1354397 Conflicts: include/scsi/scsi_devinfo.h Signed-off-by: Andy Whitcroft --- drivers/scsi/scsi_scan.c | 4 +++- drivers/scsi/sd.c | 5 +++++ include/scsi/scsi_device.h | 1 + include/scsi/scsi_devinfo.h | 1 + 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 4109530..ca798b4 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -950,7 +950,9 @@ static int scsi_add_lun(struct scsi_device *sdev, unsigned char *inq_result, sdev->eh_timeout = SCSI_DEFAULT_EH_TIMEOUT; - if (*bflags & BLIST_SKIP_VPD_PAGES) + if (*bflags & BLIST_TRY_VPD_PAGES) + sdev->try_vpd_pages = 1; + else if (*bflags & BLIST_SKIP_VPD_PAGES) sdev->skip_vpd_pages = 1; transport_configure_device(&sdev->sdev_gendev); diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 8ee2f56..2735c50 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -2691,6 +2691,11 @@ static void sd_read_write_same(struct scsi_disk *sdkp, unsigned char *buffer) static int sd_try_extended_inquiry(struct scsi_device *sdp) { + /* Attempt VPD inquiry if the device blacklist explicitly calls + * for it. + */ + if (sdp->try_vpd_pages) + return 1; /* * Although VPD inquiries can go to SCSI-2 type devices, * some USB ones crash on receiving them, and the pages diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h index 50145b8..db7ece1 100644 --- a/include/scsi/scsi_device.h +++ b/include/scsi/scsi_device.h @@ -149,6 +149,7 @@ struct scsi_device { unsigned skip_ms_page_8:1; /* do not use MODE SENSE page 0x08 */ unsigned skip_ms_page_3f:1; /* do not use MODE SENSE page 0x3f */ unsigned skip_vpd_pages:1; /* do not read VPD pages */ + unsigned try_vpd_pages:1; /* attempt to read VPD pages */ unsigned use_192_bytes_for_3f:1; /* ask for 192 bytes from page 0x3f */ unsigned no_start_on_add:1; /* do not issue start on add */ unsigned allow_restart:1; /* issue START_UNIT in error handler */ diff --git a/include/scsi/scsi_devinfo.h b/include/scsi/scsi_devinfo.h index 447d2d7..913c624 100644 --- a/include/scsi/scsi_devinfo.h +++ b/include/scsi/scsi_devinfo.h @@ -32,4 +32,5 @@ #define BLIST_ATTACH_PQ3 0x1000000 /* Scan: Attach to PQ3 devices */ #define BLIST_NO_DIF 0x2000000 /* Disable T10 PI (DIF) */ #define BLIST_SKIP_VPD_PAGES 0x4000000 /* Ignore SBC-3 VPD pages */ +#define BLIST_TRY_VPD_PAGES 0x10000000 /* Attempt to read VPD pages */ #endif