Pack of CAM improvements

Steve Polyack korvus at comcast.net
Fri Jan 22 18:28:37 UTC 2010


On 01/22/10 11:48, Freddie Cash wrote:
> On Fri, Jan 22, 2010 at 2:23 AM, Harald Schmalzbauer<
> h.schmalzbauer at omnilan.de>  wrote:
>
>    
>> Alexander Motin schrieb am 19.01.2010 17:12 (localtime):
>> ...
>>
>>   Patch can be found here:
>>      
>>> http://people.freebsd.org/~mav/cam-ata.20100119.patch
>>>
>>> Feedback as always welcome.
>>>
>>>        
>> Again, thanks a lot for your ongoing great work!
>> The patch doesn't cleanly apply with vpo, but I don't use vpo so I didn't
>> care.
>> Otherwise I couldn't find any problems.
>> The system detects reinserted SATA drives on ICH9 fine.
>>
>> This was tested on a zfs backup server which went to the backbone
>> yesterday, so I can't physically remove any devices any more for testing...
>>
>> But I had some questions about zfs raidz states. I think that isn't a
>> matter of atacam but if I removed one disk, zpool status still showed me the
>> ada3 device "online".
>> After reinserting (and proper detection/initialisazion with cam, ada3 was
>> present again) and zpool clean, it set the devicea as UNAVAIL sinve I/O
>> errors.
>> I coudn't get the device into the pool again, no matter what I tried.
>> Only rebooting the machine helped. Then I could clean and scrub.
>>
>> What are the needed steps to provide a reinsterted hard disk to geom? With
>> the latest patches I don't need to issue any reset/rescan comman, right?
>> So it's a zfs problem, right? My mistake in understanding?
>>
>> In my testing of pulling drives at random (using a 3Ware 9550SXU or 9650SE
>>      
> controller), you have to "zpool offline<pool>  <device>" while the drive is
> unplugged, before you can re-insert the same disk or a different disk.
>   Without doing that step, it's very hard to re-insert the same disk, or
> replace it with a new one, without rebooting.
>
> Took me a couple of reboots and drive replacements before I figured that one
> out.  :)
>
>    
I think you can do it without the 'zpool offline <pool> <device>' 
command;  I may be wrong, but I believe you can use 'zpool replace' to 
accomplish what you're trying to do.  i.e. if you have a bad drive ada3, 
and take it out, then replace it with a new disk, you can issue a 'zpool 
replace <pool> /dev/ada3 /dev/ada3' (yes, the same device is specified 
twice). ZFS should recognize that its a different disk and/or that it is 
lacking ZFS metadata and begin to resilver the pool onto the new 
device.  If you watch 'zfs status' in the process you'll see something like:

	raidz1                   DEGRADED     0     0     0
	    label/ada4        ONLINE       0     0     0  12.4M resilvered
	    label/ada5        ONLINE       0     0     0  12.4M resilvered
	    label/ada6        ONLINE       0     0     0  12.3M resilvered
	    replacing              DEGRADED     0     0     0
	      label/ada3/old  UNAVAIL      0   595     0  cannot open
	      label/ada3      ONLINE       0     0     0  9.74G resilvered

Try it out and let me know if it works for you.





More information about the freebsd-stable mailing list