[dm-devel] device-mapper mirror module (dm-raid)

Stefan Bader Stefan.Bader at de.ibm.com
Thu Apr 19 09:00:48 UTC 2007


dm-devel-bounces at redhat.com wrote on 13.04.2007 11:49:07:

> 
> 1. Is recovery here really necessary ?
> 
> Every time when a bio is written to a mirrred target, mirror driver 
> will queue 
> this io to the write bio_list whthin the mirror_set, finally a kcopyd 
will be 
> invoke to write this bio to all mirrored device. Is the flow correct? 
> 

AFAIK, thats wrong. Write creates and submits one write bio for each 
mirror target.
Kcopyd won't be used, except for recovery (currently startup only if I 
remember
correctly).

> But... there are nothing doing in  the write callback function 
> (write_callback).... right ?
> So in the current version, we won't have any regions that is needed 
> to be recovered.
> 
Starting any I/O within a region will mark this as dirty. If all I/O on a 
region
completed sucessfully it will be set in-sync again. Haven't looked at that 
lately
but it was a bit hidden since write_callback didn't do all the work. Parts 
of it
were done in the common end_io function of the target.

> ---------------------------------------------------------------- 
> 
> 2. Should we put all read action into the read bio_list of the 
mirror_set ?
> 
> In mirror_map.... should we put all read requests into the read 
> bio_list of the 
> mirror_set after check the return value from log->type->in_sync(), since 

> do_read() method does the same thing and it will be invoke when a 
do_work 
> is invoke? Or shoulwe d move all read actions including the checking 
> (in mirror_map) to the do_read() function ?
> 
> ---------------------------------------------------------------- 
> 
IMHO better move all to the read bio_list. So the mapping completes sooner 
and
the balancing and possible retries could be done in one place.

Regards,
Stefan




More information about the dm-devel mailing list