Skip to content

Commit c4d4c91

Browse files
liu-song-6NeilBrown
authored andcommitted
MD: replace special disk roles with macros
Add the following two macros for special roles: spare and faulty MD_DISK_ROLE_SPARE 0xffff MD_DISK_ROLE_FAULTY 0xfffe Add MD_DISK_ROLE_MAX 0xff00 as the maximal possible regular role, and minimal value of special role. Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: NeilBrown <neilb@suse.com>
1 parent 28c1b9f commit c4d4c91

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

drivers/md/md.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1608,7 +1608,7 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
16081608
++ev1;
16091609
if (rdev->desc_nr >= 0 &&
16101610
rdev->desc_nr < le32_to_cpu(sb->max_dev) &&
1611-
le16_to_cpu(sb->dev_roles[rdev->desc_nr]) < 0xfffe)
1611+
le16_to_cpu(sb->dev_roles[rdev->desc_nr]) < MD_DISK_ROLE_MAX)
16121612
if (ev1 < mddev->events)
16131613
return -EINVAL;
16141614
} else if (mddev->bitmap) {
@@ -1628,14 +1628,14 @@ static int super_1_validate(struct mddev *mddev, struct md_rdev *rdev)
16281628
int role;
16291629
if (rdev->desc_nr < 0 ||
16301630
rdev->desc_nr >= le32_to_cpu(sb->max_dev)) {
1631-
role = 0xffff;
1631+
role = MD_DISK_ROLE_SPARE;
16321632
rdev->desc_nr = -1;
16331633
} else
16341634
role = le16_to_cpu(sb->dev_roles[rdev->desc_nr]);
16351635
switch(role) {
1636-
case 0xffff: /* spare */
1636+
case MD_DISK_ROLE_SPARE: /* spare */
16371637
break;
1638-
case 0xfffe: /* faulty */
1638+
case MD_DISK_ROLE_FAULTY: /* faulty */
16391639
set_bit(Faulty, &rdev->flags);
16401640
break;
16411641
default:
@@ -1788,18 +1788,18 @@ static void super_1_sync(struct mddev *mddev, struct md_rdev *rdev)
17881788
max_dev = le32_to_cpu(sb->max_dev);
17891789

17901790
for (i=0; i<max_dev;i++)
1791-
sb->dev_roles[i] = cpu_to_le16(0xfffe);
1791+
sb->dev_roles[i] = cpu_to_le16(MD_DISK_ROLE_FAULTY);
17921792

17931793
rdev_for_each(rdev2, mddev) {
17941794
i = rdev2->desc_nr;
17951795
if (test_bit(Faulty, &rdev2->flags))
1796-
sb->dev_roles[i] = cpu_to_le16(0xfffe);
1796+
sb->dev_roles[i] = cpu_to_le16(MD_DISK_ROLE_FAULTY);
17971797
else if (test_bit(In_sync, &rdev2->flags))
17981798
sb->dev_roles[i] = cpu_to_le16(rdev2->raid_disk);
17991799
else if (rdev2->raid_disk >= 0)
18001800
sb->dev_roles[i] = cpu_to_le16(rdev2->raid_disk);
18011801
else
1802-
sb->dev_roles[i] = cpu_to_le16(0xffff);
1802+
sb->dev_roles[i] = cpu_to_le16(MD_DISK_ROLE_SPARE);
18031803
}
18041804

18051805
sb->sb_csum = calc_sb_1_csum(sb);

include/uapi/linux/raid/md_p.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@
9090
* dire need
9191
*/
9292

93+
#define MD_DISK_ROLE_SPARE 0xffff
94+
#define MD_DISK_ROLE_FAULTY 0xfffe
95+
#define MD_DISK_ROLE_MAX 0xff00 /* max value of regular disk role */
96+
9397
typedef struct mdp_device_descriptor_s {
9498
__u32 number; /* 0 Device number in the entire set */
9599
__u32 major; /* 1 Device major number */

0 commit comments

Comments
 (0)