[LWN Logo]

Date:	Sun, 4 Oct 1998 18:02:24 +0200 (CEST)
From:	mingo@chiara.csoma.elte.hu
To:	linux-raid@vger.rutgers.edu
Subject: RELEASE: alpha RAID-0,1,4,5 version 0.90, kernel 2.1.123/2.0.35


this is an alpha release of the latest RAID0145 drivers (and raidtools),
for kernels 2.1.123 and 2.0.35.

WARNING: this patch and the new raidtools contains various downwards
incompatible changes. You will not be able to run arrays created with this
release under older kernels. Neither will older arrays run upwards
compatible, you first have to --upgrade with the new raidtools 0.90. Plus,
a heavy rewrite has happened, and while i have extensively tested new and
old features, i'd suggest people having no backups and valuable data in
RAID1 and RAID5 arrays not to upgrade yet for a week or so.

you can find

	raid0145-19981004-2.0.2.0.35.gz
	raid0145-19981004-2.1.2.1.123.gz
	raidtools-19981004-0.90.tar.gz

in the usual alpha directory: 

	http://linux.kernel.org/pub/linux/daemons/raid/alpha


New features / Changes in this release:

- YACR. (yet another complete rewrite)
  ====================================

  The RAID code was overly dependent on static arrays, which made it much
  harder to support more exotic (dynamic) RAID features. Basically all of
  the code got rewritten to use doubly linked lists and all the base data
  structures got fixed up.. Several other things were rewritten too due to
  the 'hot-add/remove' features, this is why this release took two weeks
  to get out of the door. There is a new 'diskop' API between the base MD
  code and individual RAID personalities. Also i have wrapped all minor
  device number uses, thus it will be easier to move to more MD devices
  seemlessly.

- full support for hot-add and hot-remove
  =======================================

  two new commands were added to raidtools, raidhotadd and raidhotremove. 
  Example usage: 

	md1 : active raid5 sdc2[2] sdb2[0] sda2[1] 205312 blocks level 5,
	32k chunk, algorithm 0 [3/3] [UUU]

	[root@hell /root]# raidhotadd /dev/md1 /dev/sda4

	md1 : active raid5 sda4[3] sdc2[2] sdb2[0] sda2[1] 205312 blocks
	level 5, 32k chunk, algorithm 0 [3/3] [UUU]

  [the new disk has been added as a spare disk]. With these new commands a
  RAID array can be administered with zero downtime, across arbitrary
  number of disk failures + reconstruction passes. If an array is in
  degraded mode and a new spare gets hot-added, reconstruction starts
  immediately. Failed disks can be removed on the fly and new ones can be
  added back.


- detection of device name changes
  ================================

  this one was actually harder than it looks like, the RAID code now
  detects device name changes and runs arrays even if an SCSI disk fails
  and the system gets rebooted, and all disks shift down by one letter. It
  detects backwards shifts too.

- RAID0 and linear now fully supports persistent superblocks
  ==========================================================

  the bugs reported by Stephen Tweedie got fixed, and full support for
  persistent superblocks has been added. A RAID0 array from now on refuses
  to run if a device is missing or a numbering irregularity gets detected.
  Just like any persistent RAID array, RAID0 can survive device name
  changes too. The raid0.c and linear.c code got rewritten, now it should
  be readable even for mortals ;)

- cache_drop_behind()
  ===================

  reconstruction and resyncronization now does not anymore trash the
  buffer cache, but rather 'drops behind' all unused buffers. This
  improves overall performance during reconstruction alot.

- 'estimated time to finish reconstruction' has been added to /proc/mdstat
  (suggested by Mike Black)

- booting fix from Mark Anthony Lisher, 'halt' now stops RAID arrays.

- modularity fixes, 2.0 should not work as modules too.

- naming cleanup, all device names are now displayed symbolically. (eg.
  hda3 instead of 03:03)

- internal disk numbers are now visible in /proc/mdstat too, this should
  ease administration.

- failures in spares and failures during superblock operations and device
  size changes are properly detected and handled.

- 'idle' IO time is now detected on a 'per physical unit' base, this
  speeds up parallel reconstruction alot. Only if the same physical disk
  is being used does the reconstruction go idle. 

- and many many more smaller fixes and improvements. 

As you might have noticed the 0.90 version numbers signals 'we are near to
completion', the RAID code now pretty much supports all modern RAID
features and enables 7/24 administration. If any feature you know of is
missing, please speak up. [my TODO list is pretty much empty now, if i
have not mentioned some important feature then i probably forgot about it,
feel free to send me a request again ...]

also, i think i have integrated all the patches floating around on
linux-raid (and sent me personally), but please resend if i have missed
something. 

enjoy. Reports, questions, comments, flames, feature-requests welcome,

-- mingo