[prev in list] [next in list] [prev in thread] [next in thread] 

List:       git-commits-head
Subject:    scsi: aacraid: Fix 2T+ drives on SmartIOC-2000
From:       "Linux Kernel Mailing List" <linux-kernel () vger ! kernel ! org>
Date:       2017-09-30 20:03:03
Message-ID: 20170930200303.7092121B63 () pdx-korg-gitolite-1 ! ci ! codeaurora ! org
[Download RAW message or body]

Web:        https://git.kernel.org/torvalds/c/6c92f7dbf25c36f35320e4ae0b508676410bac04
Commit:     6c92f7dbf25c36f35320e4ae0b508676410bac04
Parent:     3e0097499839e0fe3af380410eababe5a47c4cf9
Refname:    refs/heads/master
Author:     Dave Carroll <david.carroll@microsemi.com>
AuthorDate: Fri Sep 15 11:04:28 2017 -0600
Committer:  Martin K. Petersen <martin.petersen@oracle.com>
CommitDate: Fri Sep 15 15:49:43 2017 -0400

    scsi: aacraid: Fix 2T+ drives on SmartIOC-2000
    
    The logic for supporting large drives was previously tied to 4Kn support
    for SmartIOC-2000. As SmartIOC-2000 does not support volumes using 4Kn
    drives, use the intended option flag AAC_OPT_NEW_COMM_64 to determine
    support for volumes greater than 2T.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Dave Carroll <david.carroll@microsemi.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
---
 drivers/scsi/aacraid/aachba.c  | 12 ++++++------
 drivers/scsi/aacraid/aacraid.h |  5 +++++
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index a64285ab0728..af3e4d3f9735 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -699,13 +699,13 @@ static void _aac_probe_container1(void * context, struct fib * fibptr)
 	int status;
 
 	dresp = (struct aac_mount *) fib_data(fibptr);
-	if (!(fibptr->dev->supplement_adapter_info.supported_options2 &
-	    AAC_OPTION_VARIABLE_BLOCK_SIZE))
+	if (!aac_supports_2T(fibptr->dev)) {
 		dresp->mnt[0].capacityhigh = 0;
-	if ((le32_to_cpu(dresp->status) != ST_OK) ||
-	    (le32_to_cpu(dresp->mnt[0].vol) != CT_NONE)) {
-		_aac_probe_container2(context, fibptr);
-		return;
+		if ((le32_to_cpu(dresp->status) == ST_OK) &&
+			(le32_to_cpu(dresp->mnt[0].vol) != CT_NONE)) {
+			_aac_probe_container2(context, fibptr);
+			return;
+		}
 	}
 	scsicmd = (struct scsi_cmnd *) context;
 
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 92fabf2b0c24..403a639574e5 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -2701,6 +2701,11 @@ static inline int aac_is_src(struct aac_dev *dev)
 	return 0;
 }
 
+static inline int aac_supports_2T(struct aac_dev *dev)
+{
+	return (dev->adapter_info.options & AAC_OPT_NEW_COMM_64);
+}
+
 char * get_container_type(unsigned type);
 extern int numacb;
 extern char aac_driver_version[];
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic