All of lore.kernel.org
 help / color / mirror / Atom feed
From: Przemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
To: neilb@suse.de
Cc: linux-raid@vger.kernel.org, dan.j.williams@intel.com,
	ed.ciechanowski@intel.com
Subject: [PATCH 3/4] imsm: avoid double change of serial number of missing device
Date: Thu, 05 Apr 2012 17:30:54 +0200	[thread overview]
Message-ID: <20120405153054.19851.39398.stgit@linux.site> (raw)
In-Reply-To: <20120405152553.19851.48052.stgit@linux.site>

If degraded state is set in OROM, it do not set 'failed' flag for missing,
device, just changes serial number, sets scsiId to 0xffff and sets highest
bit in ord table in map. When mdadm replaces missing disk, the one left
there is marked as failed and missing again (changing already marked serial
number).

Signed-off-by: Przemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
---
 super-intel.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/super-intel.c b/super-intel.c
index f843997..b361b72 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -6908,12 +6908,15 @@ static int mark_failure(struct imsm_dev *dev, struct imsm_disk *disk, int idx)
 	if (is_failed(disk) && (ord & IMSM_ORD_REBUILD))
 		return 0;
 
-	memcpy(buf, disk->serial, MAX_RAID_SERIAL_LEN);
-	buf[MAX_RAID_SERIAL_LEN] = '\000';
-	strcat(buf, ":0");
-	if ((len = strlen(buf)) >= MAX_RAID_SERIAL_LEN)
-		shift = len - MAX_RAID_SERIAL_LEN + 1;
-	strncpy((char *)disk->serial, &buf[shift], MAX_RAID_SERIAL_LEN);
+	/* do not add ":0", OROM has already done it */
+	if (!(ord & IMSM_ORD_REBUILD)) {
+		memcpy(buf, disk->serial, MAX_RAID_SERIAL_LEN);
+		buf[MAX_RAID_SERIAL_LEN] = '\000';
+		strcat(buf, ":0");
+		if ((len = strlen(buf)) >= MAX_RAID_SERIAL_LEN)
+			shift = len - MAX_RAID_SERIAL_LEN + 1;
+		strncpy((char *)disk->serial, &buf[shift], MAX_RAID_SERIAL_LEN);
+	}
 
 	disk->status |= FAILED_DISK;
 	set_imsm_ord_tbl_ent(map, slot, idx | IMSM_ORD_REBUILD);


  parent reply	other threads:[~2012-04-05 15:30 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-05 15:28 [PATCH 0/4] Imsm OROM compatibility/boot support fixes Przemyslaw Czarnowski
2012-04-05 15:29 ` [PATCH 1/4] imsm: monitor: do not finish migration if there are no failed disks Przemyslaw Czarnowski
2012-04-05 17:56   ` Williams, Dan J
2012-04-05 15:30 ` [PATCH 2/4] imsm: clean up missing disks if there are any left after migration Przemyslaw Czarnowski
2012-04-05 17:06   ` Williams, Dan J
2012-04-05 15:30 ` Przemyslaw Czarnowski [this message]
2012-04-05 17:41   ` [PATCH 3/4] imsm: avoid double change of serial number of missing device Williams, Dan J
2012-04-05 15:31 ` [PATCH 4/4] imsm: monitor: do not finish recovery, when raid goes to read-only Przemyslaw Czarnowski
2012-04-05 17:37   ` Williams, Dan J
2012-04-09 23:22 ` [PATCH 0/4] Imsm OROM compatibility/boot support fixes NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120405153054.19851.39398.stgit@linux.site \
    --to=przemyslaw.hawrylewicz.czarnowski@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=ed.ciechanowski@intel.com \
    --cc=linux-raid@vger.kernel.org \
    --cc=neilb@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.