Linux RAID subsystem development
 help / color / mirror / Atom feed
From: Mariusz Tkaczyk <mtkaczyk@kernel.org>
To: Tomas Mudrunka <mudrunka@spoje.net>
Cc: linux-raid@vger.kernel.org
Subject: Re: Confused about device counting in MD RAID1
Date: Fri, 27 Dec 2024 18:03:09 +0100	[thread overview]
Message-ID: <20241227180114.0e44c7ae@mtkaczyk-private-dev> (raw)
In-Reply-To: <13b5f0846272587087a82f9953eaf81c@spoje.net>

On Sun, 22 Dec 2024 10:45:02 +0100
Tomas Mudrunka <mudrunka@spoje.net> wrote:

> Hello,
> i am working on implementation of MD RAID1 and i am bit lost
> regarding superblock 1.2 format. Can you please help with following?
> 
> I've created RAID1 like this:
> 
> DEVICE_COUNT = 1
> DEVICE_NUMBER = 0
> ROLES: 0x0000
> 
> mdadm reports it to be correct, used mdadm to grow it like this:
> 
> mdadm --grow /dev/md23 --raid-disks=2 --force
> maddm /dev/md23 --add /dev/sdb1
> 
> Now i've inspected superblocks of both devices and i have following:
> 
> DEVICE_COUNT = 2
> DEVICE_NUMBER = 0
> ROLES: 0x0000 0xFFFF 0x0100
> 
> DEVICE_COUNT = 1
> DEVICE_NUMBER = 2
> ROLES: 0x0000 0xFFFF 0x0100
> 
Hello Tomas,
What is the command you used to get this? I cannot match it with any
mdadm's output.
> 
> First device number is 0, why second device is 2 (while 1 being 
> skipped)? Should the count start at 1?

Blind guess is a "replacements" feature. I know, that MD/mdadm
allocates two slots for same device (n, n+1) to provide replacement
feature i.e. automatically replace old drive when recovery of new
one finished. So, you are still using old drive in this time but you are
preparing replacement drive in the same time.

The behavior may have logical explanation :)

> Why are there 3 roles now, when DEVICE_COUNT is 2 ? If count starts
> at 1, why would there be roles[0]?

First, please note that growing RAID1 to 2 drives is:
- adding one drive;
- extending metadata, new disk is "out-of-sync";
- performing "recovery" (not reshape!) for new disk.

0xFFFF is known to mean "faulty" (empty) in MD/mdadm. As I said, I
think this one to be slot for replacement. IMO it means that
replacement drive is missing. It is fine then.

roles[0] - DEVICE_NUMBER=0
roles[1] - DEVICE_NUMBER=1 (replacement slot for DEVICE_NUMBER=0)
roles[2] - DEVICE_NUMBER=2 (new drive)

> I am bit confused. Obviously i am making some trivial mistake and i 
> don't want to keep guessing anymore.
> Can you please tell me how to correctly handle this?

I'm still not sure where these properties comes from. I looked for
"DEVICE_" in all code with no success..

Anyway, I hope it is helpful. Good luck.

Thanks,
Mariusz

      reply	other threads:[~2024-12-27 17:03 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-22  9:45 Confused about device counting in MD RAID1 Tomas Mudrunka
2024-12-27 17:03 ` Mariusz Tkaczyk [this message]

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=20241227180114.0e44c7ae@mtkaczyk-private-dev \
    --to=mtkaczyk@kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=mudrunka@spoje.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox