All of lore.kernel.org
 help / color / mirror / Atom feed
From: Neil Brown <neilb@suse.de>
To: Bill Davidsen <davidsen@tmr.com>
Cc: linux-raid@vger.kernel.org
Subject: Re: Roadmap for md/raid ???
Date: Tue, 20 Jan 2009 09:32:31 +1100	[thread overview]
Message-ID: <18804.65407.220481.267665@notabene.brown> (raw)
In-Reply-To: message from Bill Davidsen on Monday January 19

On Monday January 19, davidsen@tmr.com wrote:
> Neil Brown wrote:
> >
> > The difficulty is "How do you handle a crash?"
> > If you crash and restart in the middle of a reshape, you need to know
> > where all the data is.
> > To follow your scheme, you would need to update the metadata for
> > every block that is moved.
> >
> >   
> That would seem to be an issue doing it in a large task as well, if I 
> understand what you want to do. After the data have been written to the 
> spare space I believe you are going to write it back. If you update the 
> metadata before the write and something happens you have old metadata 
> but data in another format. Conversely, if you update the metadata 
> first, and something happens, you have the metadata describing a change 
> which didn't happen. So You would have to have a metadata reflecting the 
> data not being in the array, but actually somewhere else, or you would 
> have to keep the spare space inside the array, where room might not be 
> available.

I "freeze" a section of the array so that any writes block,
I copy that data to somewhere safe, and mark that copy as being a
valid copy of the moved data.
Then I copy it back in the new layout and update the array metadata to
show that the change-over point between old-layout and new-layout has
changed.  Then I invalidate the copy.
Then repeat.

When restarting an array, mdadm checks the copy (which could be in a
file on a different device) and if it is valid, it is copied on to
the array and the metadata is updated.

NeilBrown

  parent reply	other threads:[~2009-01-19 22:32 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-19  4:10 Roadmap for md/raid ??? Neil Brown
2008-12-19 15:44 ` Chris Worley
2008-12-19 15:51   ` Justin Piszcz
2008-12-19 16:13     ` Bernd Schubert
2008-12-30 18:12 ` Janek Kozicki
2008-12-30 18:15   ` Janek Kozicki
2009-01-19  0:54   ` Neil Brown
2009-01-19 12:25     ` Keld Jørn Simonsen
2009-01-19 19:03       ` thomas62186218
2009-01-19 20:00         ` Jon Nelson
2009-01-19 20:18           ` Greg Freemyer
2009-01-19 20:30             ` Jon Nelson
2009-01-11 18:14 ` Piergiorgio Sartor
2009-01-19  1:40   ` Neil Brown
2009-01-19 18:19     ` Piergiorgio Sartor
2009-01-19 18:26       ` Peter Rabbitson
2009-01-19 18:41         ` Piergiorgio Sartor
2009-01-19 21:08       ` Keld Jørn Simonsen
2009-01-14 20:43 ` Bill Davidsen
2009-01-19  2:05   ` Neil Brown
     [not found]     ` <49740C81.2030502@tmr.com>
2009-01-19 22:32       ` Neil Brown [this message]
2009-01-21 17:04         ` Bill Davidsen
  -- strict thread matches above, loose matches on Subject: below --
2008-12-19  9:01 Aw: " piergiorgio.sartor
2008-12-19 17:01 ` Dan Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=18804.65407.220481.267665@notabene.brown \
    --to=neilb@suse.de \
    --cc=davidsen@tmr.com \
    --cc=linux-raid@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.