All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chris Mason <chris.mason@oracle.com>
To: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
Cc: linux-btrfs@vger.kernel.org
Subject: Re: Don't prevent removal of devices that break raid reqs
Date: Thu, 10 Nov 2011 21:21:00 -0500	[thread overview]
Message-ID: <20111111022100.GD4435@shiny> (raw)
In-Reply-To: <orvcqrpycf.fsf@livre.localdomain>

On Thu, Nov 10, 2011 at 05:32:48PM -0200, Alexandre Oliva wrote:
> Instead of preventing the removal of devices that would render existing
> raid10 or raid1 impossible, warn but go ahead with it; the rebalancing
> code is smart enough to use different block group types.
> 
> Should the refusal remain, so that we'd only proceed with a
> newly-introduced --force option or so?

Hmm, going to three devices on raid10 doesn't turn it into
raid1.  It turns it into a degraded raid10.

We'll need a --force or some kind.  There are definitely cases users
have wanted to do this but it is rarely a good idea ;)

-chris

> 
> Signed-off-by: Alexandre Oliva <oliva@lsd.ic.unicamp.br>
> ---
>  fs/btrfs/volumes.c |   12 ++++--------
>  1 files changed, 4 insertions(+), 8 deletions(-)
> 
> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
> index 4d5b29f..507afca 100644
> --- a/fs/btrfs/volumes.c
> +++ b/fs/btrfs/volumes.c
> @@ -1281,18 +1281,14 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
>  
>  	if ((all_avail & BTRFS_BLOCK_GROUP_RAID10) &&
>  	    root->fs_info->fs_devices->num_devices <= 4) {
> -		printk(KERN_ERR "btrfs: unable to go below four devices "
> -		       "on raid10\n");
> -		ret = -EINVAL;
> -		goto out;
> +		printk(KERN_ERR "btrfs: going below four devices "
> +		       "will turn raid10 into raid1\n");
>  	}
>  
>  	if ((all_avail & BTRFS_BLOCK_GROUP_RAID1) &&
>  	    root->fs_info->fs_devices->num_devices <= 2) {
> -		printk(KERN_ERR "btrfs: unable to go below two "
> -		       "devices on raid1\n");
> -		ret = -EINVAL;
> -		goto out;
> +		printk(KERN_ERR "btrfs: going below two devices "
> +		       "will lose raid1 redundancy\n");
>  	}
>  
>  	if (strcmp(device_path, "missing") == 0) {
> -- 
> 1.7.4.4
> 
> 
> -- 
> Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
> You must be the change you wish to see in the world. -- Gandhi
> Be Free! -- http://FSFLA.org/   FSF Latin America board member
> Free Software Evangelist      Red Hat Brazil Compiler Engineer
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2011-11-11  2:21 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-10 19:32 Don't prevent removal of devices that break raid reqs Alexandre Oliva
2011-11-11  2:21 ` Chris Mason [this message]
2011-11-15  9:37   ` Ilya Dryomov
2011-11-16  1:10     ` Chris Mason
2011-11-16  3:21     ` Alexandre Oliva
2011-11-19 10:10   ` Alexandre Oliva
2011-12-05 21:20 ` Phillip Susi

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=20111111022100.GD4435@shiny \
    --to=chris.mason@oracle.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=oliva@lsd.ic.unicamp.br \
    /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.