Re: fr1-2.16 patch for 2.6.10 kernel

[email protected] (Peter T. Breuer)
Newsgroups gmane.linux.enbd.general
Message-ID <[email protected]>
In article <[email protected]> you wrote:
> > You might want to try the obvious changes (- 1 -> - 2, twice).
> 
> Ok, It works, Although not really clean?

Well, if you can figure out the event stamping algorithm, you are a
better man than I! 

If it only shows up on preempt and/or smp machines, I'd suspect a race
between tamping and ejecting from the array..  Heck - it may even be a
race anyway.

> > 
> > Wel, that certainly doesn't show it.  I wanted to know if the
> > bitmap->stop(bitmap) call makes any difference.  If it doesn't, you can
> > try
> > 
> >    remove_bitmap(conf); create_bitmap(conf);
> 
> Changed it too, but remanence is still there.

Isn't that imposible? Urrrrrrrr ... maybe the bitmap_destr routine
needs to _actually_ destroy the pages (hangs head in shame - I don't
turn the bitmap off, ever ..). Hang on and I'll vamp the "remove" bit
of the bitmap code. You need  an extra "print stats" routine anyway.

> It's strange, as normally the bitmap is cleared for any successful write 
>   during resync, but it seems that it remains untouched from a cycle to 
> another one. Maybe a cache effect ?

No - it'll be something more subtle or more obvious. It's good that
it's constant. I should be able to reproduce it.


> Anyway, normally it's here :
> 
> 
> (raid1.c)
> 
>         * on writes, clear the bitmap if all disks were written
>           */
>          int uptodate = test_bit(R1BIO_Uptodate, &r1_bio->state);
>         conf_t *conf = mddev_to_conf(r1_bio->mddev);
> 
>          /* if we should mark the bitmap clean, do so */
>          if (uptodate && bio_data_dir(bio) == WRITE
>                       && r1_bio->nonoperational <= 0) {
>                  struct bitmap * bitmap = conf->bitmap;
>                  if (bitmap && bitmap->active(bitmap)) {
>                          bitmap->clearbits(bitmap,
>                                  bio->bi_sector >> 1, bio->bi_size >> 10);
>                  }
>          }
> 
> I'm going to add some printks here...

OK - but it should show the calls being made!

Peter
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.