Release 2.6

This commit is contained in:
Neil Brown 2006-12-21 17:24:38 +11:00
parent 8382f19bdc
commit f8409e5478
10 changed files with 93 additions and 9 deletions

View File

@ -0,0 +1,76 @@
Subject: ANNOUNCE: mdadm 2.6 - A tool for managing Soft RAID under Linux
I am pleased to announce the availability of
mdadm version 2.6
It is available at the usual places:
http://www.cse.unsw.edu.au/~neilb/source/mdadm/
and
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?p=mdadm
mdadm is a tool for creating, managing and monitoring
device arrays using the "md" driver in Linux, also
known as Software RAID arrays.
Release 2.6 adds assorted fixes and improvements and a new major mode.
"Incremental Assembly" via -I or --incremental can be used to
assemble an array one device at a time. The idea is that you get
udev to run "mdadm -Iq devicename" on each new block device that it
finds. Anything that is part of an array gets included in an array as
appropriate.
Two special notes:
1/ This is very new code and is probably buggy. It passes a few basic
tests, and helped me find some kernel bugs, but it is still fresh
and should not be considered 'stable'. Please test and provide
feedback.
2/ There is a bug in the linux kernel that makes incremental assembly
not possible in general (you cannot safely remove a drive from an array
that has not yet been started. This is needed if an old device was
detected first). If mdadm detects a kernel which might have the
bug, it rejects --incremental requests.
The bug will hopefully be fixed in 2.6.20 and this mdadm release
contains patches for 2.6.18, 2.6.18.6 and 2.6.19. Apply the
appropriate patch to test --incremental.
Changelog Entries:
- Fixed UUID printing in "--detail --brief" for version1 metadata.
- --update=resync did exactly the wrong thing for version1 metadata.
It caused a resync to not happen, rather than to happen.
- Allow --assemble --force to mark a raid6 clean when it has two
missing devices (which is needed else if won't assemble.
Without this fix it would only assemble if one or zero
missing devices.
- Support --update=devicesize for cases where the underlying device
can change size.
- Default to --auto=yes so the array devices with 'standard' names
get created automatically, as this is almost always what is wanted.
- Give useful message if raid4/5/6 cannot be started because it is
not clean and is also degraded.
- Increase raid456 stripe cache size if needed to --grow the array.
The setting used unfortunately requires intimate knowledge of the
kernel, and it not reset when the reshape finishes.
- Change 'Device Size' to 'Used Dev Size' because it only shows how
much of each device is actually used, not how big they are.
- --wait or -W will wait for resync activity to finish on the given
devices.
- Fix some problems with --update=uuid and add a test.
- If two drives in a raid5 disappear at the same time, then "-Af"
will add them both in rather than just one and forcing the array
to 'clean'. This is slightly safer in some cases.
- Check device is large enough before hot-add: this improves quality
of error message.
- Don't hold md device open for so long in --monitor mode - map_dev
can be slow and interferes with trying to stop the array.
- Support --uuid= with --create to choose your own UUID.
- New major more "--incremental" for incremental assemble of arrays,
intended for use with udev.
Development of mdadm is sponsored by
SUSE Labs, Novell Inc.
NeilBrown 21st December 2006
Blessed Christmas to all.

View File

@ -1,4 +1,4 @@
Changes Prior to this release
Changes Prior to 2.6 release
- Fixed UUID printing in "--detail --brief" for version1 metadata.
- --update=resync did exactly the wrong thing for version1 metadata.
It caused a resync to not happen, rather than to happen.

View File

@ -391,6 +391,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. */
avail = NULL;
active_disks = count_active(st, mdfd, &avail, &info);
if (enough(info.array.level, info.array.raid_disks,
info.array.layout, info.array.state & 1,

View File

@ -338,7 +338,7 @@ int Monitor(mddev_dev_t devlist,
close(fd);
for (i=0; i<MaxDisks; i++) {
mdu_disk_info_t disc;
mdu_disk_info_t disc = {0};
int newstate=0;
int change;
char *dv = NULL;

View File

@ -29,7 +29,7 @@
#include "mdadm.h"
char Version[] = Name " - v2.5.6 - 9 November 2006\n";
char Version[] = Name " - v2.6 - 21 December 2006\n";
/*
* File: ReadMe.c

View File

@ -14,6 +14,7 @@ ANNOUNCE-2.5.3
ANNOUNCE-2.5.4
ANNOUNCE-2.5.5
ANNOUNCE-2.5.6
ANNOUNCE-2.6
Assemble.c
bitmap.c
bitmap.h
@ -27,12 +28,17 @@ dlink.c
dlink.h
Examine.c
Grow.c
Incremental.c
INSTALL
inventory
kernel-patch-2.6.18
kernel-patch-2.6.18.6
kernel-patch-2.6.19
Kill.c
makedist
Makefile
Manage.c
mapfile.c
md.4
md5.h
mdadm.8
@ -102,6 +108,7 @@ tests/05r6-bitmapfile
tests/06name
tests/06r5swap
tests/06sysfs
tests/06update-uuid
tests/06wrmostly
tests/07testreshape5
tests/check

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 "" v2.5.6
.TH MDADM 8 "" v2.6
.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: 2.5.6
Version: 2.6
Release: 1
Source: http://www.cse.unsw.edu.au/~neilb/source/mdadm/mdadm-%{version}.tgz
URL: http://www.cse.unsw.edu.au/~neilb/source/mdadm/

View File

@ -1,5 +1,5 @@
.\" -*- nroff -*-
.TH MDASSEMBLE 8 "" v2.5.6
.TH MDASSEMBLE 8 "" v2.6
.SH NAME
mdassemble \- assemble MD devices
.I aka

View File

@ -703,7 +703,6 @@ static int load_super0(struct supertype *st, int fd, void **sbp, char *devname)
* 1 on cannot get superblock
* 2 on superblock meaningless
*/
unsigned long size;
unsigned long long dsize;
unsigned long long offset;
mdp_super_t *super;
@ -715,8 +714,9 @@ static int load_super0(struct supertype *st, int fd, void **sbp, char *devname)
if (dsize < MD_RESERVED_SECTORS*512 * 2) {
if (devname)
fprintf(stderr, Name ": %s is too small for md: size is %ld sectors.\n",
devname, size);
fprintf(stderr, Name
": %s is too small for md: size is %llu sectors.\n",
devname, dsize);
return 1;
}