Received: by mail.netbsd.org (Postfix, from userid 605) id B758C14A206; Tue, 2 Dec 2014 22:05:16 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 9910A14A209 for ; Tue, 2 Dec 2014 22:05:15 +0000 (UTC) X-Virus-Scanned: amavisd-new at NetBSD.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.NetBSD.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id 6nEyNh1800KY for ; Tue, 2 Dec 2014 22:05:14 +0000 (UTC) Received: from cvs.netbsd.org (cvs.NetBSD.org [IPv6:2001:4f8:3:7:2e0:81ff:fe30:95bd]) by mail.netbsd.org (Postfix) with ESMTP id 54E3F14A204 for ; Tue, 2 Dec 2014 22:05:14 +0000 (UTC) Received: by cvs.netbsd.org (Postfix, from userid 500) id 3983A98; Tue, 2 Dec 2014 22:05:14 +0000 (UTC) Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" MIME-Version: 1.0 Date: Tue, 2 Dec 2014 22:05:14 +0000 From: "Soren Jacobsen" Subject: CVS commit: [netbsd-6] src/sys/dev/raidframe To: source-changes@NetBSD.org X-Mailer: log_accum Message-Id: <20141202220514.3983A98@cvs.netbsd.org> Sender: source-changes-owner@NetBSD.org List-Id: source-changes.NetBSD.org Precedence: bulk Reply-To: source-changes-d@NetBSD.org Mail-Reply-To: "Soren Jacobsen" Mail-Followup-To: source-changes-d@NetBSD.org Module Name: src Committed By: snj Date: Tue Dec 2 22:05:14 UTC 2014 Modified Files: src/sys/dev/raidframe [netbsd-6]: raidframevar.h rf_netbsdkintf.c rf_reconstruct.c Log Message: Pull up following revision(s) (requested by oster in ticket #1194): sys/dev/raidframe/raidframevar.h: revision 1.17 sys/dev/raidframe/rf_netbsdkintf.c: revision 1.316 sys/dev/raidframe/rf_reconstruct.c: revision 1.121 Fix a long-standing bug related to rebooting while a reconstruct-to-spare is underway but not yet complete. The issue was that a component was being marked as a used_spare when the rebuild started, not when the rebuild was actually finished. Marking it as a used_spare meant that the component label on the spare was being updated such that after a reboot the component would be considered up-to-date, regardless of whether the rebuild actually completed! This fix includes: 1) Add an additional state "rf_ds_rebuilding_spare" which is used to denote that a spare is currently being rebuilt from the live components. 2) Update the comments on the disk states, which were out-of-sync with reality. 3) When rebuilding to a spare component, that spare now enters the state rf_ds_rebuilding_spare instead of the state rf_ds_used_spare. 4) When the rebuild is actually complete then the spare component enters the rf_ds_used_spare state. rf_ds_used_spare is now used exclusively for the case where the rebuilding to the spare has completed successfully. XXX: Someday we need to teach raidctl(8) about this new state, and take out the backwards compatibility code in rf_netbsdkintf.c (see RAIDFRAME_GET_INFO in raidioctl()). For today, this fix needs to be generic enough that it can get backported without major grief. XXX: Needs pullup to netbsd-5*, netbsd-6*, and netbsd-7 Fixes PR#49244. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.15.10.1 src/sys/dev/raidframe/raidframevar.h cvs rdiff -u -r1.295.6.2 -r1.295.6.3 src/sys/dev/raidframe/rf_netbsdkintf.c cvs rdiff -u -r1.117.8.1 -r1.117.8.2 src/sys/dev/raidframe/rf_reconstruct.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.