[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