Release 3.2.1

Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
NeilBrown 2011-03-28 13:30:29 +11:00
parent 76ae482075
commit 7b0bbd0f71
9 changed files with 86 additions and 9 deletions

75
ANNOUNCE-3.2.1 Normal file
View File

@ -0,0 +1,75 @@
I am pleased to announce the availability of
mdadm version 3.2.1
It is available at the usual places:
countrycode=xx.
http://www.${countrycode}kernel.org/pub/linux/utils/raid/mdadm/
and via git at
git://neil.brown.name/mdadm
http://neil.brown.name/git/mdadm
Many of the changes in this release are of internal interest only,
restructuring and refactoring code and so forth.
Most of the bugs found and fixed during development for 3.2.1 have been
back-ported for the recently-release 3.1.5 so this release primarily
provides a few new features over 3.1.5.
They include:
- policy framework
Policy can be expressed for moving spare devices between arrays, and
for how to handle hot-plugged devices. This policy can be different
for devices plugged in to different controllers etc.
This, for example, allows a configuration where when a device is plugged
in it is immediately included in an md array as a hot spare and
possibly starts recovery immediately if an array is degraded.
- some understanding of mbr and gpt paritition tables
This is primarly to support the new hot-plug support. If a
device is plugged in and policy suggests it should have a partition table,
the partition table will be copied from a suitably similar device, and
then the partitions will hot-plug and can then be added to md arrays.
- "--incremental --remove" can remember where a device was removed from
so if a device gets plugged back in the same place, special policy applies
to it, allowing it to be included in an array even if a general hotplug
will not be included.
- enhanced reshape options, including growing a RAID0 by converting to RAID4,
restriping, and converting back. Also convertions between RAID0 and
RAID10 and between RAID1 and RAID10 are possible (with a suitably recent
kernel).
- spare migration for IMSM arrays.
Spare migration can now work across 'containers' using non-native metadata
and specifically Intel's IMSM arrays support spare migrations.
- OLCE and level migration for Intel IMSM arrays.
OnLine Capacity Expansion and level migration (e.g. RAID0 -> RAID5) is
supported for Intel Matrix Storage Manager arrays.
This support is currently 'experimental' for technical reasons. It can
be enabled with "export MDADM_EXPERIMENTAL=1"
- avoid including wayward devices
If you split a RAID1, mount the two halves as two separate degraded RAID1s,
and then later bring the two back together, it is possible that the md
metadata won't properly show that one must over-ride the other.
mdadm now does extra checking to detect this possibilty and avoid
potentially corrupting data.
- remove any possible confusion between similar options.
e.g. --brief and --bitmap were mapped to 'b' and mdadm wouldn't
notice if one was used where the other was expected.
- allow K,M,G suffixes on chunk sizes
While mdadm-3.2.1 is considered to be reasonably stable, you should
only use it if you want to try out the new features, or if you
generally like to be on the bleeding edge. If the new features are not
important to you, then 3.1.5 is probably the appropriate version to be using
until 3.2.2 comes out.
NeilBrown 28th March 2011

View File

@ -438,7 +438,7 @@ int Incremental(char *devname, int verbose, int runstop,
/* 7/ Is there enough devices to possibly start the array? */
/* 7a/ if not, finish with success. */
if (info.array.level == LEVEL_CONTAINER) {
int devnum;
int devnum = devnum; /* defined and used iff ->external */
/* Try to assemble within the container */
map_unlock(&map);
sysfs_uevent(&info, "change");

View File

@ -24,7 +24,7 @@
#include "mdadm.h"
char Version[] = Name " - v3.2 DEVELOPER_ONLY - 1st February 2011 (USE WITH CARE)\n";
char Version[] = Name " - v3.2.1 - 28th March 2011\n";
/*
* File: ReadMe.c

View File

@ -10,6 +10,7 @@ ANNOUNCE-3.1.3
ANNOUNCE-3.1.4
ANNOUNCE-3.1.5
ANNOUNCE-3.2
ANNOUNCE-3.2.1
Assemble.c
bitmap.c
bitmap.h
@ -75,6 +76,7 @@ probe_roms.h
pwgr.c
Query.c
raid5extend.c
raid6check.c
ReadMe.c
README.initramfs
restripe.c
@ -179,6 +181,7 @@ tests/18imsm-1d-takeover-r0_1d
tests/18imsm-1d-takeover-r1_2d
tests/18imsm-r0_2d-takeover-r10_4d
tests/18imsm-r10_4d-takeover-r0_2d
tests/18imsm-r1_2d-takeover-r0_1d
tests/check
tests/env-imsm-template
tests/imsm-grow-template

View File

@ -5,7 +5,7 @@
.\" the Free Software Foundation; either version 2 of the License, or
.\" (at your option) any later version.
.\" See file COPYING in distribution for details.
.TH MDADM 8 "" v3.2
.TH MDADM 8 "" v3.2.1
.SH NAME
mdadm \- manage MD devices
.I aka

View File

@ -1,6 +1,6 @@
Summary: mdadm is used for controlling Linux md devices (aka RAID arrays)
Name: mdadm
Version: 3.2
Version: 3.2.1
Release: 1
Source: http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}.tgz
URL: http://neil.brown.name/blog/mdadm

View File

@ -1,5 +1,5 @@
.\" -*- nroff -*-
.TH MDASSEMBLE 8 "" v3.2
.TH MDASSEMBLE 8 "" v3.2.1
.SH NAME
mdassemble \- assemble MD devices
.I aka

View File

@ -1,5 +1,5 @@
.\" See file COPYING in distribution for details.
.TH MDMON 8 "" v3.2-devel
.TH MDMON 8 "" v3.2.1
.SH NAME
mdmon \- monitor MD external metadata arrays

View File

@ -383,7 +383,6 @@ const char *get_sys_dev_type(enum sys_dev_type type)
return _sys_dev_type[type];
}
#ifndef MDASSEMBLE
static struct intel_hba * alloc_intel_hba(struct sys_dev *device)
{
struct intel_hba *result = malloc(sizeof(*result));
@ -407,7 +406,6 @@ static struct intel_hba * find_intel_hba(struct intel_hba *hba, struct sys_dev *
return result;
}
static int attach_hba_to_super(struct intel_super *super, struct sys_dev *device)
{
struct intel_hba *hba;
@ -473,7 +471,6 @@ static struct sys_dev* find_disk_attached_hba(int fd, const char *devname)
return NULL;
}
#endif /* MDASSEMBLE */
static int find_intel_hba_capability(int fd, struct intel_super *super,
@ -4962,6 +4959,7 @@ static struct mdinfo *container_content_imsm(struct supertype *st, char *subarra
*/
chunk = __le16_to_cpu(map->blocks_per_strip) >> 1;
#ifndef MDASSEMBLE
if (!validate_geometry_imsm_orom(super,
get_imsm_raid_level(map), /* RAID level */
imsm_level_to_layout(get_imsm_raid_level(map)),
@ -4972,6 +4970,7 @@ static struct mdinfo *container_content_imsm(struct supertype *st, char *subarra
"Cannot proceed with the action(s).\n");
continue;
}
#endif /* MDASSEMBLE */
this = malloc(sizeof(*this));
if (!this) {
fprintf(stderr, Name ": failed to allocate %zu bytes\n",