RE: Global sparing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks for the information Neil.

I have done the following changes to behave exactly the same way you had
mentioned.
I try to remove each one of the spare and see if its working.
The spare that is currenty being recovered to, will fail to be removed
but the other spare will be removed and added successfully.
Pls comment on my changes below.

--- mdadm-2.6.4/Monitor_orig.c	2010-02-09 17:16:24.000000000 +0530
+++ mdadm-2.6.4/Monitor.c	2010-02-09 17:16:20.000000000 +0530
@@ -446,7 +446,7 @@
 				for (st2=statelist ; st2 ;
st2=st2->next)
 					if (st2 != st &&
 					    st2->spare > 0 &&
-					    st2->active == st2->raid &&
+					    st2->working >= st2->raid &&
 					    st2->spare_group != NULL &&
 					    strcmp(st->spare_group,
st2->spare_group) == 0) {
 						/* try to remove and add
*/
@@ -463,11 +463,7 @@
 							if
(st2->devid[d] > 0 &&
 
st2->devstate[d] == 0) {
 								dev =
st2->devid[d];
-								break;
-							}
-						}
-						if (dev > 0) {
-							if (ioctl(fd2,
HOT_REMOVE_DISK, 
+								if
(ioctl(fd2, HOT_REMOVE_DISK, 
 
(unsigned long)dev) == 0) {
 								if
(ioctl(fd1, HOT_ADD_DISK,
 
(unsigned long)dev) == 0) {
@@ -478,6 +474,8 @@
 								}
 								else
ioctl(fd2, HOT_ADD_DISK, (unsigned long) dev);
 							}
+							else continue;
+							}
 						}
 						close(fd1);
 						close(fd2);

Thanks,
Senthil M

-----Original Message-----
From: Neil Brown [mailto:neilb@xxxxxxx] 
Sent: Monday, February 08, 2010 11:18 AM
To: SenthilKumar Muthukalai (WT01 - Telecom Equipment)
Cc: linux-raid@xxxxxxxxxxxxxxx
Subject: Re: Global sparing

On Thu, 4 Feb 2010 18:48:16 +0530
<senthilkumar.muthukalai@xxxxxxxxx> wrote:

> 
> Hi,
> 
> Can anyone help me to understand the global sharing with the below 
> context?
> I have two degraded RAID1s say md0 and md1 with one disk active on
each.
> Both the arrays were originally built with 2 disks.
> I am enabling global sharing.
> When I add a disk to md0, it gets rebuilt.
> When I add one more disk to md0, it gets added as a spare.
> The md1, which is also degraded, is not able to grab the global spare 
> from md0 which is sitting idle until md0 finishes rebuilding.
> Is this by policy/concept of global sharing that the spare is shared 
> after rebuilding?

When an array is recoverying and has extra spares it is not obvious to
userspace which spare is being recovered to, so choosing which one to
remove is not trivial.

I suspect the easiest approach would be to try removing each one and
seeing what works.  A spare that is being actively recovered cannot be
removed.

The reason this does not work is simply that I never thought to make it
work.


> 
> Also I am trying to change mdadm-2.6.4 to make it shared immediately 
> as follows.
> 
> --- mdadm-2.6.4/Monitor.c.orig  2010-02-03 16:58:50.000000000 +0530
> +++ mdadm-2.6.4/Monitor.c       2010-02-03 16:59:47.000000000 +0530
> @@ -469,7 +469,7 @@
>                                 for (st2=statelist ; st2 ;
> st2=st2->next)
>                                         if (st2 != st &&
>                                             st2->spare > 0 &&
> -                                           st2->active == st2->raid
&&
> +                                           st2->working >= st2->raid 
> + &&
>                                             st2->spare_group != NULL
&&
>                                             strcmp(st->spare_group,
> st2->spare_group) == 0) {
>                                                 /* try to remove and 
> add */
> 
> Is this change valid and complete?

As this doesn't address the question of choosing the right drive to move
I don't think it is complete.  I would have to look at the code a bit
more deeply to be sure it is valid, but I suspect that it probably is.

NeilBrown


> 
> Thanks,
> Senthil M
> --
> To unsubscribe from this list: send the line "unsubscribe linux-raid" 
> in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo 
> info at  http://vger.kernel.org/majordomo-info.html

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux