Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp2070230imu; Fri, 14 Dec 2018 05:24:03 -0800 (PST) X-Google-Smtp-Source: AFSGD/VoRlBjtOUz97TA4Gu31sG23F1g46Egxq6zeDyRxtyO2A7AZ3EcBoPW53OzYVrptuvEJto6 X-Received: by 2002:a17:902:9047:: with SMTP id w7mr2911057plz.270.1544793843438; Fri, 14 Dec 2018 05:24:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544793843; cv=none; d=google.com; s=arc-20160816; b=doiMUbygI7atkggK58FlrcNwW4XSL2M7xowsMsjD5myaJoDIvhZVJAKSAC03dig0q4 hBQZLKv8fAz6SF43kzjZPlpQ4ZYY4rkCINkfMLN/u/DNa0imvg5mxJJTGOZBlKaOcuxM PSwAawiR94Lf8R0ZLJzw58c+Ikvvvr3ZawmRy9dTcacVDkIiKTafr+/wKhtUMd3BsqZE E6p3RLP1CEgHoRSJZuRALhN3PZZV47wWA7KxEZJGQcEaCfEZmkfwkZCbnbQsutWIMI29 tWWdipBTEa0Ul2kaAmHzzm3o74jYvdX7OD2df1vSCMz1axn13cpbpYAZ2/aT2J2rwNAN 0QXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=5tHOV+8kWpRLL2iyRBk9ZOn14M/aMT7Ov6uIuXi0Hdo=; b=cP/ZBqmb1d3dj2NO9Kmy8DaL27I+PVEi3jSsvKvbUbPAT9tWkCunVp0oGdo/tiGrb1 XX/b1TwMqxWkoniBs9N0Shx6CLSCAvLwMAKZoGUHawdNr/s94uLjnw0OszcB0doKCbFv pAAHNxP8Ps3R8eQ7kPuLmMVI7aPLp8eSmrdKnJ57NyZVmpmBL0vSuJzyK3NMh3Ebum3q Rjmp5w47yDGtnwasBEI9R2tUtvpf6NjPQgPhfJGok8OIWQg9ce58mEXaVen3schoC/S6 wk0OCHt8I1135Yia07i765vBEP6YuPe3SFn7Xt6giNirNoOFPG4ECvJYAYsejt+e3SNL npBQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BUUTNUlG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a90si4068647plc.314.2018.12.14.05.23.44; Fri, 14 Dec 2018 05:24:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=BUUTNUlG; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729896AbeLNNW2 (ORCPT + 99 others); Fri, 14 Dec 2018 08:22:28 -0500 Received: from mail-lj1-f194.google.com ([209.85.208.194]:37871 "EHLO mail-lj1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729940AbeLNNW1 (ORCPT ); Fri, 14 Dec 2018 08:22:27 -0500 Received: by mail-lj1-f194.google.com with SMTP id e5-v6so4886369lja.4; Fri, 14 Dec 2018 05:22:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5tHOV+8kWpRLL2iyRBk9ZOn14M/aMT7Ov6uIuXi0Hdo=; b=BUUTNUlGnOQwaX0sfVz7lTMuSyk9DFdxFtPFOd+avXsvDZGchILwzFHYJA+8BKUcF9 KbBuyoySvTnOAqyeEqNxyV0YBPtT8ikFDstPJsfb9HYbVIW9mjmikW1dMM+OKiXnaW6t Wp6My9BsAufTfjI8TNu7viDdc9uG98CEyMia/Isuo+Z/gF+JNGpTNhvqqyuxIhZLxmXR g2gbYnNHg1lTh5ZVFp687Ad8pUIR5nnfUcio8TtcWnvVzdRRCWsaVzHcuB5YCcD8chJk Ii5KBP5/rMnnuFDPZh20GmtIy+QHvhjAbhLuV1OscAzSaVnbqcET5GDHcN22h0oUE/j2 4F8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5tHOV+8kWpRLL2iyRBk9ZOn14M/aMT7Ov6uIuXi0Hdo=; b=tOs5D8SqHBxqvJDBlgmoOhLl4Ac0AymFfTJSlhtHYsQwHowI+doNOIGpmjWoEyhCC+ Xlm6OQab7gy8CABrGdBod7yK5qKoYthe/O/rO4h019Egk7B/Ebr02P8w6Bq9G+GysrMw rml6yZiMEShFdqgaSMIslI6HX8G8nb+4l+oc8QSEcTtk12BBIpZWq2XY+Uqk4o3/f5gc RXGOhJk1kErRC8bxS4G9oWNA/regdO1c+bParqgfTiWKx6fc7Wz17ru94J169MEvfOQ6 dfTyehi1UtiQAOGpdFQUYrdVJlJ4BF5gqXbbRNlKBl9l0MaQu0H4kJnBD901w/hj8VUu nzrQ== X-Gm-Message-State: AA+aEWb02ZIScHeD9i0+GIUSqj1tocNb14oI7HWZUXRIaZGFO4TsEWcH PYLpohg0sZjS5tgMvR7b0yAoU2sH7wS7RLXu X-Received: by 2002:a2e:4299:: with SMTP id h25-v6mr1767781ljf.5.1544793745065; Fri, 14 Dec 2018 05:22:25 -0800 (PST) Received: from localhost.localdomain (pool-109-191-228-208.is74.ru. [109.191.228.208]) by smtp.gmail.com with ESMTPSA id u79-v6sm944101lje.36.2018.12.14.05.22.24 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 14 Dec 2018 05:22:24 -0800 (PST) From: Ivan Mironov To: linux-scsi@vger.kernel.org, mironov.ivan@gmail.com Cc: linux-kernel@vger.kernel.org, Don Brace , "James E.J. Bottomley" , "Martin K. Petersen" , esc.storagedev@microsemi.com Subject: [PATCH 3/6] scsi: hpsa: Add/mask existing devices on rescan if visibility changes Date: Fri, 14 Dec 2018 18:21:12 +0500 Message-Id: <20181214132115.21440-4-mironov.ivan@gmail.com> X-Mailer: git-send-email 2.19.2 In-Reply-To: <20181214132115.21440-1-mironov.ivan@gmail.com> References: <20181214132115.21440-1-mironov.ivan@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Controller may be switched between RAID and HBA modes even without a reboot. When changing to HBA mode, it does some internal reset magic and automatically removes any configured RAID arrays. Without this patch, driver successfully detects disappearance of logical arrays, but does not expose any physical disks. Signed-off-by: Ivan Mironov --- drivers/scsi/hpsa.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c index ee3d7c722a63..60f1f7949d8d 100644 --- a/drivers/scsi/hpsa.c +++ b/drivers/scsi/hpsa.c @@ -1541,6 +1541,14 @@ static inline int device_updated(struct hpsa_scsi_dev_t *dev1, return 0; } +static inline bool device_expose_changed(struct hpsa_scsi_dev_t *dev1, + struct hpsa_scsi_dev_t *dev2) +{ + if (dev1->expose_device != dev2->expose_device) + return true; + return false; +} + /* Find needle in haystack. If exact match found, return DEVICE_SAME, * and return needle location in *index. If scsi3addr matches, but not * vendor, model, serial num, etc. return DEVICE_CHANGED, and return needle @@ -1569,6 +1577,8 @@ static int hpsa_scsi_find_entry(struct hpsa_scsi_dev_t *needle, if (device_is_the_same(needle, haystack[i])) { if (device_updated(needle, haystack[i])) return DEVICE_UPDATED; + if (device_expose_changed(needle, haystack[i])) + return DEVICE_CHANGED; return DEVICE_SAME; } else { /* Keep offline devices offline */ -- 2.19.2