svn commit: r219952 - in projects/graid/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib lib/liblzma lib/librtld_db lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/raid s...

Alexander Motin mav at FreeBSD.org
Thu Mar 24 09:12:04 UTC 2011


Author: mav
Date: Thu Mar 24 09:12:03 2011
New Revision: 219952
URL: http://svn.freebsd.org/changeset/base/219952

Log:
  MFH      r219477, r219582, r219583, r219593, r219619, r219622, r219634,
  r219635, r219643, r219644, r219645, r219659, r219665, r219746, r219752,
  r219754, r219755, r219759, r219774, r219777, r219778, r219784, r219797,
  r219800, r219826, r219838, r219866, r219867, r219871, r219872, r219874,
  r219881, r219890, r219908, r219909, r219910, r219921, r219923, r219929.

Added:
  projects/graid/8/sys/geom/raid/md_nvidia.c
     - copied, changed from r219874, projects/graid/head/sys/geom/raid/md_nvidia.c
  projects/graid/8/sys/geom/raid/md_promise.c
     - copied, changed from r219477, projects/graid/head/sys/geom/raid/md_promise.c
  projects/graid/8/sys/geom/raid/md_sii.c
     - copied, changed from r219583, projects/graid/head/sys/geom/raid/md_sii.c
Modified:
  projects/graid/8/sbin/geom/class/raid/graid.8
  projects/graid/8/sys/conf/files
  projects/graid/8/sys/geom/raid/g_raid.c
  projects/graid/8/sys/geom/raid/g_raid.h
  projects/graid/8/sys/geom/raid/g_raid_md_if.m
  projects/graid/8/sys/geom/raid/md_intel.c
  projects/graid/8/sys/geom/raid/md_jmicron.c
  projects/graid/8/sys/geom/raid/tr_concat.c
  projects/graid/8/sys/modules/geom/geom_raid/Makefile
Directory Properties:
  projects/graid/8/   (props changed)
  projects/graid/8/COPYRIGHT   (props changed)
  projects/graid/8/LOCKS   (props changed)
  projects/graid/8/MAINTAINERS   (props changed)
  projects/graid/8/Makefile   (props changed)
  projects/graid/8/Makefile.inc1   (props changed)
  projects/graid/8/ObsoleteFiles.inc   (props changed)
  projects/graid/8/README   (props changed)
  projects/graid/8/UPDATING   (props changed)
  projects/graid/8/bin/   (props changed)
  projects/graid/8/bin/chio/   (props changed)
  projects/graid/8/bin/chmod/   (props changed)
  projects/graid/8/bin/cp/   (props changed)
  projects/graid/8/bin/csh/   (props changed)
  projects/graid/8/bin/date/   (props changed)
  projects/graid/8/bin/df/   (props changed)
  projects/graid/8/bin/echo/   (props changed)
  projects/graid/8/bin/ed/   (props changed)
  projects/graid/8/bin/expr/   (props changed)
  projects/graid/8/bin/getfacl/   (props changed)
  projects/graid/8/bin/kenv/   (props changed)
  projects/graid/8/bin/kill/   (props changed)
  projects/graid/8/bin/ln/   (props changed)
  projects/graid/8/bin/ls/   (props changed)
  projects/graid/8/bin/mv/   (props changed)
  projects/graid/8/bin/pax/   (props changed)
  projects/graid/8/bin/pkill/   (props changed)
  projects/graid/8/bin/ps/   (props changed)
  projects/graid/8/bin/pwait/   (props changed)
  projects/graid/8/bin/setfacl/   (props changed)
  projects/graid/8/bin/sh/   (props changed)
  projects/graid/8/bin/sleep/   (props changed)
  projects/graid/8/bin/test/   (props changed)
  projects/graid/8/cddl/   (props changed)
  projects/graid/8/cddl/compat/opensolaris/   (props changed)
  projects/graid/8/cddl/contrib/dtracetoolkit/   (props changed)
  projects/graid/8/cddl/contrib/opensolaris/   (props changed)
  projects/graid/8/cddl/lib/   (props changed)
  projects/graid/8/cddl/lib/libnvpair/   (props changed)
  projects/graid/8/cddl/lib/libzpool/   (props changed)
  projects/graid/8/cddl/usr.bin/   (props changed)
  projects/graid/8/cddl/usr.sbin/   (props changed)
  projects/graid/8/contrib/   (props changed)
  projects/graid/8/contrib/amd/   (props changed)
  projects/graid/8/contrib/bc/   (props changed)
  projects/graid/8/contrib/bind9/   (props changed)
  projects/graid/8/contrib/binutils/   (props changed)
  projects/graid/8/contrib/bsnmp/   (props changed)
  projects/graid/8/contrib/bsnmp/snmpd/bsnmpd.1   (props changed)
  projects/graid/8/contrib/bzip2/   (props changed)
  projects/graid/8/contrib/com_err/   (props changed)
  projects/graid/8/contrib/csup/   (props changed)
  projects/graid/8/contrib/cvs/   (props changed)
  projects/graid/8/contrib/diff/   (props changed)
  projects/graid/8/contrib/ee/   (props changed)
  projects/graid/8/contrib/expat/   (props changed)
  projects/graid/8/contrib/file/   (props changed)
  projects/graid/8/contrib/gcc/   (props changed)
  projects/graid/8/contrib/gcclibs/   (props changed)
  projects/graid/8/contrib/gdb/   (props changed)
  projects/graid/8/contrib/gdtoa/   (props changed)
  projects/graid/8/contrib/gnu-sort/   (props changed)
  projects/graid/8/contrib/gperf/   (props changed)
  projects/graid/8/contrib/groff/   (props changed)
  projects/graid/8/contrib/ipfilter/   (props changed)
  projects/graid/8/contrib/less/   (props changed)
  projects/graid/8/contrib/libbegemot/   (props changed)
  projects/graid/8/contrib/libf2c/   (props changed)
  projects/graid/8/contrib/libobjc/   (props changed)
  projects/graid/8/contrib/libpcap/   (props changed)
  projects/graid/8/contrib/libreadline/   (props changed)
  projects/graid/8/contrib/libstdc++/   (props changed)
  projects/graid/8/contrib/lukemftp/   (props changed)
  projects/graid/8/contrib/lukemftpd/   (props changed)
  projects/graid/8/contrib/ncurses/   (props changed)
  projects/graid/8/contrib/netcat/   (props changed)
  projects/graid/8/contrib/ngatm/   (props changed)
  projects/graid/8/contrib/ntp/   (props changed)
  projects/graid/8/contrib/nvi/   (props changed)
  projects/graid/8/contrib/one-true-awk/   (props changed)
  projects/graid/8/contrib/openbsm/   (props changed)
  projects/graid/8/contrib/openpam/   (props changed)
  projects/graid/8/contrib/opie/   (props changed)
  projects/graid/8/contrib/pam_modules/   (props changed)
  projects/graid/8/contrib/pf/   (props changed)
  projects/graid/8/contrib/pnpinfo/   (props changed)
  projects/graid/8/contrib/sendmail/   (props changed)
  projects/graid/8/contrib/smbfs/   (props changed)
  projects/graid/8/contrib/tcp_wrappers/   (props changed)
  projects/graid/8/contrib/tcpdump/   (props changed)
  projects/graid/8/contrib/tcsh/   (props changed)
  projects/graid/8/contrib/telnet/   (props changed)
  projects/graid/8/contrib/texinfo/   (props changed)
  projects/graid/8/contrib/top/   (props changed)
  projects/graid/8/contrib/top/install-sh   (props changed)
  projects/graid/8/contrib/traceroute/   (props changed)
  projects/graid/8/contrib/wpa/   (props changed)
  projects/graid/8/contrib/xz/   (props changed)
  projects/graid/8/contrib/xz/ChangeLog   (props changed)
  projects/graid/8/contrib/xz/FREEBSD-upgrade   (props changed)
  projects/graid/8/contrib/xz/THANKS   (props changed)
  projects/graid/8/crypto/   (props changed)
  projects/graid/8/crypto/heimdal/   (props changed)
  projects/graid/8/crypto/openssh/   (props changed)
  projects/graid/8/crypto/openssl/   (props changed)
  projects/graid/8/etc/   (props changed)
  projects/graid/8/games/   (props changed)
  projects/graid/8/games/factor/   (props changed)
  projects/graid/8/games/fortune/   (props changed)
  projects/graid/8/games/grdc/   (props changed)
  projects/graid/8/games/pom/   (props changed)
  projects/graid/8/gnu/   (props changed)
  projects/graid/8/gnu/lib/csu/   (props changed)
  projects/graid/8/gnu/lib/libgcc/   (props changed)
  projects/graid/8/gnu/lib/libstdc++/   (props changed)
  projects/graid/8/gnu/usr.bin/   (props changed)
  projects/graid/8/gnu/usr.bin/Makefile   (props changed)
  projects/graid/8/gnu/usr.bin/dialog/   (props changed)
  projects/graid/8/gnu/usr.bin/gdb/   (props changed)
  projects/graid/8/gnu/usr.bin/gdb/kgdb/   (props changed)
  projects/graid/8/gnu/usr.bin/groff/   (props changed)
  projects/graid/8/gnu/usr.bin/patch/   (props changed)
  projects/graid/8/include/   (props changed)
  projects/graid/8/kerberos5/   (props changed)
  projects/graid/8/kerberos5/lib/libgssapi_krb5/   (props changed)
  projects/graid/8/kerberos5/lib/libgssapi_spnego/   (props changed)
  projects/graid/8/kerberos5/usr.bin/kdestroy/   (props changed)
  projects/graid/8/kerberos5/usr.bin/kpasswd/   (props changed)
  projects/graid/8/lib/   (props changed)
  projects/graid/8/lib/Makefile   (props changed)
  projects/graid/8/lib/Makefile.inc   (props changed)
  projects/graid/8/lib/bind/   (props changed)
  projects/graid/8/lib/csu/   (props changed)
  projects/graid/8/lib/libalias/   (props changed)
  projects/graid/8/lib/libarchive/   (props changed)
  projects/graid/8/lib/libauditd/   (props changed)
  projects/graid/8/lib/libautofs/   (props changed)
  projects/graid/8/lib/libbegemot/   (props changed)
  projects/graid/8/lib/libbluetooth/   (props changed)
  projects/graid/8/lib/libbsm/   (props changed)
  projects/graid/8/lib/libbsnmp/   (props changed)
  projects/graid/8/lib/libbz2/   (props changed)
  projects/graid/8/lib/libc/   (props changed)
  projects/graid/8/lib/libc/stdtime/   (props changed)
  projects/graid/8/lib/libc_r/   (props changed)
  projects/graid/8/lib/libcalendar/   (props changed)
  projects/graid/8/lib/libcam/   (props changed)
  projects/graid/8/lib/libcom_err/   (props changed)
  projects/graid/8/lib/libcompat/   (props changed)
  projects/graid/8/lib/libcrypt/   (props changed)
  projects/graid/8/lib/libdevinfo/   (props changed)
  projects/graid/8/lib/libdevstat/   (props changed)
  projects/graid/8/lib/libdisk/   (props changed)
  projects/graid/8/lib/libdwarf/   (props changed)
  projects/graid/8/lib/libedit/   (props changed)
  projects/graid/8/lib/libelf/   (props changed)
  projects/graid/8/lib/libexpat/   (props changed)
  projects/graid/8/lib/libfetch/   (props changed)
  projects/graid/8/lib/libftpio/   (props changed)
  projects/graid/8/lib/libgeom/   (props changed)
  projects/graid/8/lib/libgpib/   (props changed)
  projects/graid/8/lib/libgssapi/   (props changed)
  projects/graid/8/lib/libipsec/   (props changed)
  projects/graid/8/lib/libipx/   (props changed)
  projects/graid/8/lib/libjail/   (props changed)
  projects/graid/8/lib/libkiconv/   (props changed)
  projects/graid/8/lib/libkse/   (props changed)
  projects/graid/8/lib/libkvm/   (props changed)
  projects/graid/8/lib/liblzma/   (props changed)
  projects/graid/8/lib/liblzma/Makefile   (props changed)
  projects/graid/8/lib/liblzma/Symbol.map   (props changed)
  projects/graid/8/lib/liblzma/Versions.def   (props changed)
  projects/graid/8/lib/liblzma/config.h   (props changed)
  projects/graid/8/lib/libmagic/   (props changed)
  projects/graid/8/lib/libmd/   (props changed)
  projects/graid/8/lib/libmemstat/   (props changed)
  projects/graid/8/lib/libmilter/   (props changed)
  projects/graid/8/lib/libmp/   (props changed)
  projects/graid/8/lib/libncp/   (props changed)
  projects/graid/8/lib/libnetgraph/   (props changed)
  projects/graid/8/lib/libngatm/   (props changed)
  projects/graid/8/lib/libopie/   (props changed)
  projects/graid/8/lib/libpam/   (props changed)
  projects/graid/8/lib/libpcap/   (props changed)
  projects/graid/8/lib/libpmc/   (props changed)
  projects/graid/8/lib/libproc/   (props changed)
  projects/graid/8/lib/libradius/   (props changed)
  projects/graid/8/lib/librpcsec_gss/   (props changed)
  projects/graid/8/lib/librpcsvc/   (props changed)
  projects/graid/8/lib/librt/   (props changed)
  projects/graid/8/lib/librtld_db/   (props changed)
  projects/graid/8/lib/librtld_db/Makefile   (props changed)
  projects/graid/8/lib/librtld_db/librtld_db.3   (props changed)
  projects/graid/8/lib/librtld_db/rtld_db.c   (props changed)
  projects/graid/8/lib/librtld_db/rtld_db.h   (props changed)
  projects/graid/8/lib/libsbuf/   (props changed)
  projects/graid/8/lib/libsdp/   (props changed)
  projects/graid/8/lib/libsm/   (props changed)
  projects/graid/8/lib/libsmb/   (props changed)
  projects/graid/8/lib/libsmdb/   (props changed)
  projects/graid/8/lib/libsmutil/   (props changed)
  projects/graid/8/lib/libstand/   (props changed)
  projects/graid/8/lib/libtacplus/   (props changed)
  projects/graid/8/lib/libtelnet/   (props changed)
  projects/graid/8/lib/libthr/   (props changed)
  projects/graid/8/lib/libthread_db/   (props changed)
  projects/graid/8/lib/libufs/   (props changed)
  projects/graid/8/lib/libugidfw/   (props changed)
  projects/graid/8/lib/libusb/   (props changed)
  projects/graid/8/lib/libusb/usb.h   (props changed)
  projects/graid/8/lib/libusbhid/   (props changed)
  projects/graid/8/lib/libutil/   (props changed)
  projects/graid/8/lib/libvgl/   (props changed)
  projects/graid/8/lib/libwrap/   (props changed)
  projects/graid/8/lib/liby/   (props changed)
  projects/graid/8/lib/libypclnt/   (props changed)
  projects/graid/8/lib/libz/   (props changed)
  projects/graid/8/lib/libz/contrib/   (props changed)
  projects/graid/8/lib/msun/   (props changed)
  projects/graid/8/lib/ncurses/   (props changed)
  projects/graid/8/libexec/   (props changed)
  projects/graid/8/libexec/ftpd/   (props changed)
  projects/graid/8/libexec/rtld-elf/   (props changed)
  projects/graid/8/libexec/tftpd/   (props changed)
  projects/graid/8/release/   (props changed)
  projects/graid/8/release/doc/en_US.ISO8859-1/hardware/   (props changed)
  projects/graid/8/release/picobsd/   (props changed)
  projects/graid/8/release/picobsd/floppy.tree/sbin/   (props changed)
  projects/graid/8/release/picobsd/floppy.tree/sbin/dhclient-script   (props changed)
  projects/graid/8/release/picobsd/qemu/   (props changed)
  projects/graid/8/release/picobsd/tinyware/login/   (props changed)
  projects/graid/8/release/powerpc/   (props changed)
  projects/graid/8/rescue/   (props changed)
  projects/graid/8/sbin/   (props changed)
  projects/graid/8/sbin/atacontrol/   (props changed)
  projects/graid/8/sbin/bsdlabel/   (props changed)
  projects/graid/8/sbin/camcontrol/   (props changed)
  projects/graid/8/sbin/ddb/   (props changed)
  projects/graid/8/sbin/devd/   (props changed)
  projects/graid/8/sbin/devfs/   (props changed)
  projects/graid/8/sbin/dhclient/   (props changed)
  projects/graid/8/sbin/dump/   (props changed)
  projects/graid/8/sbin/dumpfs/   (props changed)
  projects/graid/8/sbin/fdisk/   (props changed)
  projects/graid/8/sbin/fsck/   (props changed)
  projects/graid/8/sbin/fsck_ffs/   (props changed)
  projects/graid/8/sbin/fsck_msdosfs/   (props changed)
  projects/graid/8/sbin/fsirand/   (props changed)
  projects/graid/8/sbin/geom/   (props changed)
  projects/graid/8/sbin/geom/class/multipath/   (props changed)
  projects/graid/8/sbin/geom/class/part/   (props changed)
  projects/graid/8/sbin/geom/class/sched/gsched.8   (props changed)
  projects/graid/8/sbin/geom/class/stripe/   (props changed)
  projects/graid/8/sbin/ggate/   (props changed)
  projects/graid/8/sbin/growfs/   (props changed)
  projects/graid/8/sbin/hastctl/   (props changed)
  projects/graid/8/sbin/hastd/   (props changed)
  projects/graid/8/sbin/ifconfig/   (props changed)
  projects/graid/8/sbin/ipfw/   (props changed)
  projects/graid/8/sbin/iscontrol/   (props changed)
  projects/graid/8/sbin/kldload/   (props changed)
  projects/graid/8/sbin/kldstat/   (props changed)
  projects/graid/8/sbin/mdconfig/   (props changed)
  projects/graid/8/sbin/mksnap_ffs/   (props changed)
  projects/graid/8/sbin/mount/   (props changed)
  projects/graid/8/sbin/mount_cd9660/   (props changed)
  projects/graid/8/sbin/mount_msdosfs/   (props changed)
  projects/graid/8/sbin/mount_nfs/   (props changed)
  projects/graid/8/sbin/natd/   (props changed)
  projects/graid/8/sbin/newfs/   (props changed)
  projects/graid/8/sbin/newfs_msdos/   (props changed)
  projects/graid/8/sbin/ping6/   (props changed)
  projects/graid/8/sbin/quotacheck/   (props changed)
  projects/graid/8/sbin/reboot/   (props changed)
  projects/graid/8/sbin/restore/   (props changed)
  projects/graid/8/sbin/route/   (props changed)
  projects/graid/8/sbin/routed/   (props changed)
  projects/graid/8/sbin/setkey/   (props changed)
  projects/graid/8/sbin/spppcontrol/   (props changed)
  projects/graid/8/sbin/sysctl/   (props changed)
  projects/graid/8/sbin/tunefs/   (props changed)
  projects/graid/8/sbin/umount/   (props changed)
  projects/graid/8/secure/   (props changed)
  projects/graid/8/secure/lib/libcrypto/   (props changed)
  projects/graid/8/secure/lib/libssl/   (props changed)
  projects/graid/8/secure/usr.bin/bdes/   (props changed)
  projects/graid/8/secure/usr.bin/openssl/   (props changed)
  projects/graid/8/share/   (props changed)
  projects/graid/8/share/dict/   (props changed)
  projects/graid/8/share/doc/papers/devfs/   (props changed)
  projects/graid/8/share/doc/papers/jail/   (props changed)
  projects/graid/8/share/doc/smm/01.setup/   (props changed)
  projects/graid/8/share/examples/   (props changed)
  projects/graid/8/share/examples/etc/   (props changed)
  projects/graid/8/share/examples/kld/syscall/   (props changed)
  projects/graid/8/share/man/   (props changed)
  projects/graid/8/share/man/man1/   (props changed)
  projects/graid/8/share/man/man3/   (props changed)
  projects/graid/8/share/man/man4/   (props changed)
  projects/graid/8/share/man/man5/   (props changed)
  projects/graid/8/share/man/man7/   (props changed)
  projects/graid/8/share/man/man8/   (props changed)
  projects/graid/8/share/man/man9/   (props changed)
  projects/graid/8/share/misc/   (props changed)
  projects/graid/8/share/mk/   (props changed)
  projects/graid/8/share/syscons/   (props changed)
  projects/graid/8/share/termcap/   (props changed)
  projects/graid/8/share/timedef/   (props changed)
  projects/graid/8/share/zoneinfo/   (props changed)
  projects/graid/8/sys/   (props changed)
  projects/graid/8/sys/amd64/include/xen/   (props changed)
  projects/graid/8/sys/cddl/contrib/opensolaris/   (props changed)
  projects/graid/8/sys/contrib/dev/acpica/   (props changed)
  projects/graid/8/sys/contrib/pf/   (props changed)
  projects/graid/8/tools/   (props changed)
  projects/graid/8/tools/build/mk/   (props changed)
  projects/graid/8/tools/build/options/   (props changed)
  projects/graid/8/tools/debugscripts/   (props changed)
  projects/graid/8/tools/kerneldoc/subsys/   (props changed)
  projects/graid/8/tools/regression/acct/   (props changed)
  projects/graid/8/tools/regression/acltools/   (props changed)
  projects/graid/8/tools/regression/aio/aiotest/   (props changed)
  projects/graid/8/tools/regression/bin/   (props changed)
  projects/graid/8/tools/regression/bin/date/   (props changed)
  projects/graid/8/tools/regression/bin/sh/   (props changed)
  projects/graid/8/tools/regression/fifo/   (props changed)
  projects/graid/8/tools/regression/geom/   (props changed)
  projects/graid/8/tools/regression/lib/libc/   (props changed)
  projects/graid/8/tools/regression/lib/msun/test-conj.t   (props changed)
  projects/graid/8/tools/regression/mqueue/mqtest1/   (props changed)
  projects/graid/8/tools/regression/mqueue/mqtest2/   (props changed)
  projects/graid/8/tools/regression/mqueue/mqtest3/   (props changed)
  projects/graid/8/tools/regression/mqueue/mqtest4/   (props changed)
  projects/graid/8/tools/regression/mqueue/mqtest5/   (props changed)
  projects/graid/8/tools/regression/netinet/   (props changed)
  projects/graid/8/tools/regression/poll/   (props changed)
  projects/graid/8/tools/regression/posixsem/   (props changed)
  projects/graid/8/tools/regression/priv/   (props changed)
  projects/graid/8/tools/regression/sockets/unix_gc/   (props changed)
  projects/graid/8/tools/regression/usr.bin/   (props changed)
  projects/graid/8/tools/regression/usr.bin/pkill/   (props changed)
  projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_g.t   (props changed)
  projects/graid/8/tools/regression/usr.bin/pkill/pgrep-_s.t   (props changed)
  projects/graid/8/tools/regression/usr.bin/pkill/pkill-_g.t   (props changed)
  projects/graid/8/tools/regression/usr.bin/sed/   (props changed)
  projects/graid/8/tools/regression/usr.bin/tr/   (props changed)
  projects/graid/8/tools/test/   (props changed)
  projects/graid/8/tools/tools/   (props changed)
  projects/graid/8/tools/tools/ath/   (props changed)
  projects/graid/8/tools/tools/ath/common/dumpregs.h   (props changed)
  projects/graid/8/tools/tools/ath/common/dumpregs_5210.c   (props changed)
  projects/graid/8/tools/tools/ath/common/dumpregs_5211.c   (props changed)
  projects/graid/8/tools/tools/ath/common/dumpregs_5212.c   (props changed)
  projects/graid/8/tools/tools/ath/common/dumpregs_5416.c   (props changed)
  projects/graid/8/tools/tools/mctest/   (props changed)
  projects/graid/8/tools/tools/nanobsd/   (props changed)
  projects/graid/8/tools/tools/netrate/   (props changed)
  projects/graid/8/tools/tools/netrate/tcpp/   (props changed)
  projects/graid/8/tools/tools/termcap/termcap.pl   (props changed)
  projects/graid/8/tools/tools/umastat/   (props changed)
  projects/graid/8/tools/tools/vimage/   (props changed)
  projects/graid/8/usr.bin/   (props changed)
  projects/graid/8/usr.bin/apply/   (props changed)
  projects/graid/8/usr.bin/ar/   (props changed)
  projects/graid/8/usr.bin/awk/   (props changed)
  projects/graid/8/usr.bin/biff/   (props changed)
  projects/graid/8/usr.bin/c89/   (props changed)
  projects/graid/8/usr.bin/c99/   (props changed)
  projects/graid/8/usr.bin/calendar/   (props changed)
  projects/graid/8/usr.bin/catman/   (props changed)
  projects/graid/8/usr.bin/chpass/Makefile   (props changed)
  projects/graid/8/usr.bin/column/   (props changed)
  projects/graid/8/usr.bin/comm/   (props changed)
  projects/graid/8/usr.bin/cpio/   (props changed)
  projects/graid/8/usr.bin/cpuset/   (props changed)
  projects/graid/8/usr.bin/csup/   (props changed)
  projects/graid/8/usr.bin/du/   (props changed)
  projects/graid/8/usr.bin/ee/   (props changed)
  projects/graid/8/usr.bin/enigma/   (props changed)
  projects/graid/8/usr.bin/fetch/   (props changed)
  projects/graid/8/usr.bin/find/   (props changed)
  projects/graid/8/usr.bin/finger/   (props changed)
  projects/graid/8/usr.bin/fold/   (props changed)
  projects/graid/8/usr.bin/fstat/   (props changed)
  projects/graid/8/usr.bin/gcore/   (props changed)
  projects/graid/8/usr.bin/getopt/   (props changed)
  projects/graid/8/usr.bin/gzip/   (props changed)
  projects/graid/8/usr.bin/hexdump/   (props changed)
  projects/graid/8/usr.bin/indent/   (props changed)
  projects/graid/8/usr.bin/jot/   (props changed)
  projects/graid/8/usr.bin/kdump/   (props changed)
  projects/graid/8/usr.bin/killall/   (props changed)
  projects/graid/8/usr.bin/ktrace/   (props changed)
  projects/graid/8/usr.bin/ldd/   (props changed)
  projects/graid/8/usr.bin/lex/   (props changed)
  projects/graid/8/usr.bin/locale/   (props changed)
  projects/graid/8/usr.bin/locate/   (props changed)
  projects/graid/8/usr.bin/lockf/   (props changed)
  projects/graid/8/usr.bin/look/   (props changed)
  projects/graid/8/usr.bin/m4/   (props changed)
  projects/graid/8/usr.bin/mail/   (props changed)
  projects/graid/8/usr.bin/make/   (props changed)
  projects/graid/8/usr.bin/makewhatis/   (props changed)
  projects/graid/8/usr.bin/minigzip/   (props changed)
  projects/graid/8/usr.bin/ncal/   (props changed)
  projects/graid/8/usr.bin/netstat/   (props changed)
  projects/graid/8/usr.bin/netstat/Makefile   (props changed)
  projects/graid/8/usr.bin/netstat/atalk.c   (props changed)
  projects/graid/8/usr.bin/netstat/bpf.c   (props changed)
  projects/graid/8/usr.bin/netstat/inet.c   (props changed)
  projects/graid/8/usr.bin/netstat/inet6.c   (props changed)
  projects/graid/8/usr.bin/netstat/ipsec.c   (props changed)
  projects/graid/8/usr.bin/netstat/ipx.c   (props changed)
  projects/graid/8/usr.bin/netstat/main.c   (props changed)
  projects/graid/8/usr.bin/netstat/mbuf.c   (props changed)
  projects/graid/8/usr.bin/netstat/mroute.c   (props changed)
  projects/graid/8/usr.bin/netstat/mroute6.c   (props changed)
  projects/graid/8/usr.bin/netstat/netgraph.c   (props changed)
  projects/graid/8/usr.bin/netstat/netisr.c   (props changed)
  projects/graid/8/usr.bin/netstat/netstat.1   (props changed)
  projects/graid/8/usr.bin/netstat/pfkey.c   (props changed)
  projects/graid/8/usr.bin/netstat/sctp.c   (props changed)
  projects/graid/8/usr.bin/netstat/unix.c   (props changed)
  projects/graid/8/usr.bin/pathchk/   (props changed)
  projects/graid/8/usr.bin/perror/   (props changed)
  projects/graid/8/usr.bin/procstat/   (props changed)
  projects/graid/8/usr.bin/rpcgen/   (props changed)
  projects/graid/8/usr.bin/rpcinfo/   (props changed)
  projects/graid/8/usr.bin/ruptime/   (props changed)
  projects/graid/8/usr.bin/script/   (props changed)
  projects/graid/8/usr.bin/sed/   (props changed)
  projects/graid/8/usr.bin/sockstat/   (props changed)
  projects/graid/8/usr.bin/split/   (props changed)
  projects/graid/8/usr.bin/stat/   (props changed)
  projects/graid/8/usr.bin/systat/   (props changed)
  projects/graid/8/usr.bin/tar/   (props changed)
  projects/graid/8/usr.bin/tftp/   (props changed)
  projects/graid/8/usr.bin/tip/   (props changed)
  projects/graid/8/usr.bin/top/   (props changed)
  projects/graid/8/usr.bin/touch/   (props changed)
  projects/graid/8/usr.bin/tr/   (props changed)
  projects/graid/8/usr.bin/truss/   (props changed)
  projects/graid/8/usr.bin/uname/   (props changed)
  projects/graid/8/usr.bin/unifdef/   (props changed)
  projects/graid/8/usr.bin/uniq/   (props changed)
  projects/graid/8/usr.bin/unzip/   (props changed)
  projects/graid/8/usr.bin/uudecode/   (props changed)
  projects/graid/8/usr.bin/vmstat/   (props changed)
  projects/graid/8/usr.bin/w/   (props changed)
  projects/graid/8/usr.bin/whois/   (props changed)
  projects/graid/8/usr.bin/xinstall/   (props changed)
  projects/graid/8/usr.bin/xlint/   (props changed)
  projects/graid/8/usr.bin/xz/   (props changed)
  projects/graid/8/usr.bin/yacc/   (props changed)
  projects/graid/8/usr.sbin/   (props changed)
  projects/graid/8/usr.sbin/IPXrouted/   (props changed)
  projects/graid/8/usr.sbin/Makefile   (props changed)
  projects/graid/8/usr.sbin/Makefile.inc   (props changed)
  projects/graid/8/usr.sbin/ac/   (props changed)
  projects/graid/8/usr.sbin/accton/   (props changed)
  projects/graid/8/usr.sbin/acpi/   (props changed)
  projects/graid/8/usr.sbin/adduser/   (props changed)
  projects/graid/8/usr.sbin/amd/   (props changed)
  projects/graid/8/usr.sbin/ancontrol/   (props changed)
  projects/graid/8/usr.sbin/apm/   (props changed)
  projects/graid/8/usr.sbin/apmd/   (props changed)
  projects/graid/8/usr.sbin/arp/   (props changed)
  projects/graid/8/usr.sbin/asf/   (props changed)
  projects/graid/8/usr.sbin/audit/   (props changed)
  projects/graid/8/usr.sbin/auditd/   (props changed)
  projects/graid/8/usr.sbin/auditreduce/   (props changed)
  projects/graid/8/usr.sbin/authpf/   (props changed)
  projects/graid/8/usr.sbin/bluetooth/   (props changed)
  projects/graid/8/usr.sbin/bluetooth/bthidcontrol/   (props changed)
  projects/graid/8/usr.sbin/bluetooth/bthidd/   (props changed)
  projects/graid/8/usr.sbin/boot0cfg/   (props changed)
  projects/graid/8/usr.sbin/boot98cfg/   (props changed)
  projects/graid/8/usr.sbin/bootparamd/   (props changed)
  projects/graid/8/usr.sbin/bsnmpd/   (props changed)
  projects/graid/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c   (props changed)
  projects/graid/8/usr.sbin/btxld/   (props changed)
  projects/graid/8/usr.sbin/burncd/   (props changed)
  projects/graid/8/usr.sbin/cdcontrol/   (props changed)
  projects/graid/8/usr.sbin/chkgrp/   (props changed)
  projects/graid/8/usr.sbin/chown/   (props changed)
  projects/graid/8/usr.sbin/chroot/   (props changed)
  projects/graid/8/usr.sbin/ckdist/   (props changed)
  projects/graid/8/usr.sbin/clear_locks/   (props changed)
  projects/graid/8/usr.sbin/config/   (props changed)
  projects/graid/8/usr.sbin/config/SMM.doc/   (props changed)
  projects/graid/8/usr.sbin/cpucontrol/   (props changed)
  projects/graid/8/usr.sbin/crashinfo/   (props changed)
  projects/graid/8/usr.sbin/cron/   (props changed)
  projects/graid/8/usr.sbin/crunch/   (props changed)
  projects/graid/8/usr.sbin/crunch/examples/   (props changed)
  projects/graid/8/usr.sbin/ctm/   (props changed)
  projects/graid/8/usr.sbin/cxgbtool/   (props changed)
  projects/graid/8/usr.sbin/daemon/   (props changed)
  projects/graid/8/usr.sbin/dconschat/   (props changed)
  projects/graid/8/usr.sbin/devinfo/   (props changed)
  projects/graid/8/usr.sbin/digictl/   (props changed)
  projects/graid/8/usr.sbin/diskinfo/   (props changed)
  projects/graid/8/usr.sbin/dnssec-dsfromkey/   (props changed)
  projects/graid/8/usr.sbin/dnssec-keyfromlabel/   (props changed)
  projects/graid/8/usr.sbin/dnssec-keygen/   (props changed)
  projects/graid/8/usr.sbin/dnssec-signzone/   (props changed)
  projects/graid/8/usr.sbin/dumpcis/   (props changed)
  projects/graid/8/usr.sbin/dumpcis/cardinfo.h   (props changed)
  projects/graid/8/usr.sbin/dumpcis/cis.h   (props changed)
  projects/graid/8/usr.sbin/editmap/   (props changed)
  projects/graid/8/usr.sbin/edquota/   (props changed)
  projects/graid/8/usr.sbin/eeprom/   (props changed)
  projects/graid/8/usr.sbin/extattr/   (props changed)
  projects/graid/8/usr.sbin/extattrctl/   (props changed)
  projects/graid/8/usr.sbin/faithd/   (props changed)
  projects/graid/8/usr.sbin/fdcontrol/   (props changed)
  projects/graid/8/usr.sbin/fdformat/   (props changed)
  projects/graid/8/usr.sbin/fdread/   (props changed)
  projects/graid/8/usr.sbin/fdwrite/   (props changed)
  projects/graid/8/usr.sbin/fifolog/   (props changed)
  projects/graid/8/usr.sbin/flowctl/   (props changed)
  projects/graid/8/usr.sbin/freebsd-update/   (props changed)
  projects/graid/8/usr.sbin/ftp-proxy/   (props changed)
  projects/graid/8/usr.sbin/fwcontrol/   (props changed)
  projects/graid/8/usr.sbin/getfmac/   (props changed)
  projects/graid/8/usr.sbin/getpmac/   (props changed)
  projects/graid/8/usr.sbin/gssd/   (props changed)
  projects/graid/8/usr.sbin/gstat/   (props changed)
  projects/graid/8/usr.sbin/i2c/   (props changed)
  projects/graid/8/usr.sbin/ifmcstat/   (props changed)
  projects/graid/8/usr.sbin/inetd/   (props changed)
  projects/graid/8/usr.sbin/iostat/   (props changed)
  projects/graid/8/usr.sbin/ip6addrctl/   (props changed)
  projects/graid/8/usr.sbin/ipfwpcap/   (props changed)
  projects/graid/8/usr.sbin/jail/   (props changed)
  projects/graid/8/usr.sbin/jexec/   (props changed)
  projects/graid/8/usr.sbin/jls/   (props changed)
  projects/graid/8/usr.sbin/kbdcontrol/   (props changed)
  projects/graid/8/usr.sbin/kbdmap/   (props changed)
  projects/graid/8/usr.sbin/kernbb/   (props changed)
  projects/graid/8/usr.sbin/keyserv/   (props changed)
  projects/graid/8/usr.sbin/kgmon/   (props changed)
  projects/graid/8/usr.sbin/kgzip/   (props changed)
  projects/graid/8/usr.sbin/kldxref/   (props changed)
  projects/graid/8/usr.sbin/lastlogin/   (props changed)
  projects/graid/8/usr.sbin/lmcconfig/   (props changed)
  projects/graid/8/usr.sbin/lpr/   (props changed)
  projects/graid/8/usr.sbin/lptcontrol/   (props changed)
  projects/graid/8/usr.sbin/mailstats/   (props changed)
  projects/graid/8/usr.sbin/mailwrapper/   (props changed)
  projects/graid/8/usr.sbin/makefs/   (props changed)
  projects/graid/8/usr.sbin/makefs/ffs/ffs_bswap.c   (props changed)
  projects/graid/8/usr.sbin/makefs/ffs/ffs_subr.c   (props changed)
  projects/graid/8/usr.sbin/makefs/ffs/ufs_bswap.h   (props changed)
  projects/graid/8/usr.sbin/makefs/getid.c   (props changed)
  projects/graid/8/usr.sbin/makemap/   (props changed)
  projects/graid/8/usr.sbin/manctl/   (props changed)
  projects/graid/8/usr.sbin/memcontrol/   (props changed)
  projects/graid/8/usr.sbin/mergemaster/   (props changed)
  projects/graid/8/usr.sbin/mfiutil/   (props changed)
  projects/graid/8/usr.sbin/mixer/   (props changed)
  projects/graid/8/usr.sbin/mld6query/   (props changed)
  projects/graid/8/usr.sbin/mlxcontrol/   (props changed)
  projects/graid/8/usr.sbin/mount_nwfs/   (props changed)
  projects/graid/8/usr.sbin/mount_portalfs/   (props changed)
  projects/graid/8/usr.sbin/mount_smbfs/   (props changed)
  projects/graid/8/usr.sbin/mountd/   (props changed)
  projects/graid/8/usr.sbin/moused/   (props changed)
  projects/graid/8/usr.sbin/mptable/   (props changed)
  projects/graid/8/usr.sbin/mptutil/   (props changed)
  projects/graid/8/usr.sbin/mtest/   (props changed)
  projects/graid/8/usr.sbin/mtree/   (props changed)
  projects/graid/8/usr.sbin/named/   (props changed)
  projects/graid/8/usr.sbin/named-checkconf/   (props changed)
  projects/graid/8/usr.sbin/named-checkzone/   (props changed)
  projects/graid/8/usr.sbin/named.reload/   (props changed)
  projects/graid/8/usr.sbin/ndiscvt/   (props changed)
  projects/graid/8/usr.sbin/ndp/   (props changed)
  projects/graid/8/usr.sbin/newsyslog/   (props changed)
  projects/graid/8/usr.sbin/nfscbd/   (props changed)
  projects/graid/8/usr.sbin/nfsd/   (props changed)
  projects/graid/8/usr.sbin/nfsdumpstate/   (props changed)
  projects/graid/8/usr.sbin/nfsrevoke/   (props changed)
  projects/graid/8/usr.sbin/nfsuserd/   (props changed)
  projects/graid/8/usr.sbin/ngctl/   (props changed)
  projects/graid/8/usr.sbin/nghook/   (props changed)
  projects/graid/8/usr.sbin/nologin/   (props changed)
  projects/graid/8/usr.sbin/nscd/   (props changed)
  projects/graid/8/usr.sbin/ntp/   (props changed)
  projects/graid/8/usr.sbin/nvram/   (props changed)
  projects/graid/8/usr.sbin/ofwdump/   (props changed)
  projects/graid/8/usr.sbin/pciconf/   (props changed)
  projects/graid/8/usr.sbin/periodic/   (props changed)
  projects/graid/8/usr.sbin/pkg_install/   (props changed)
  projects/graid/8/usr.sbin/pmcannotate/   (props changed)
  projects/graid/8/usr.sbin/pmccontrol/   (props changed)
  projects/graid/8/usr.sbin/pmcstat/   (props changed)
  projects/graid/8/usr.sbin/pnpinfo/   (props changed)
  projects/graid/8/usr.sbin/portsnap/   (props changed)
  projects/graid/8/usr.sbin/powerd/   (props changed)
  projects/graid/8/usr.sbin/ppp/   (props changed)
  projects/graid/8/usr.sbin/pppctl/   (props changed)
  projects/graid/8/usr.sbin/praliases/   (props changed)
  projects/graid/8/usr.sbin/praudit/   (props changed)
  projects/graid/8/usr.sbin/procctl/   (props changed)
  projects/graid/8/usr.sbin/pstat/   (props changed)
  projects/graid/8/usr.sbin/pw/   (props changed)
  projects/graid/8/usr.sbin/pwd_mkdb/   (props changed)
  projects/graid/8/usr.sbin/quot/   (props changed)
  projects/graid/8/usr.sbin/quotaon/   (props changed)
  projects/graid/8/usr.sbin/rarpd/   (props changed)
  projects/graid/8/usr.sbin/repquota/   (props changed)
  projects/graid/8/usr.sbin/rip6query/   (props changed)
  projects/graid/8/usr.sbin/rmt/   (props changed)
  projects/graid/8/usr.sbin/rndc/   (props changed)
  projects/graid/8/usr.sbin/rndc-confgen/   (props changed)
  projects/graid/8/usr.sbin/route6d/   (props changed)
  projects/graid/8/usr.sbin/rpc.lockd/   (props changed)
  projects/graid/8/usr.sbin/rpc.statd/   (props changed)
  projects/graid/8/usr.sbin/rpc.umntall/   (props changed)
  projects/graid/8/usr.sbin/rpc.yppasswdd/   (props changed)
  projects/graid/8/usr.sbin/rpc.ypupdated/   (props changed)
  projects/graid/8/usr.sbin/rpc.ypxfrd/   (props changed)
  projects/graid/8/usr.sbin/rpcbind/   (props changed)
  projects/graid/8/usr.sbin/rrenumd/   (props changed)
  projects/graid/8/usr.sbin/rtadvd/   (props changed)
  projects/graid/8/usr.sbin/rtprio/   (props changed)
  projects/graid/8/usr.sbin/rtsold/   (props changed)
  projects/graid/8/usr.sbin/rwhod/   (props changed)
  projects/graid/8/usr.sbin/sa/   (props changed)
  projects/graid/8/usr.sbin/sade/   (props changed)
  projects/graid/8/usr.sbin/sendmail/   (props changed)
  projects/graid/8/usr.sbin/service/   (props changed)
  projects/graid/8/usr.sbin/service/Makefile   (props changed)
  projects/graid/8/usr.sbin/service/service.8   (props changed)
  projects/graid/8/usr.sbin/service/service.sh   (props changed)
  projects/graid/8/usr.sbin/services_mkdb/   (props changed)
  projects/graid/8/usr.sbin/services_mkdb/Makefile   (props changed)
  projects/graid/8/usr.sbin/services_mkdb/services_mkdb.8   (props changed)
  projects/graid/8/usr.sbin/services_mkdb/services_mkdb.c   (props changed)
  projects/graid/8/usr.sbin/services_mkdb/uniq.c   (props changed)
  projects/graid/8/usr.sbin/setfib/   (props changed)
  projects/graid/8/usr.sbin/setfmac/   (props changed)
  projects/graid/8/usr.sbin/setpmac/   (props changed)
  projects/graid/8/usr.sbin/sicontrol/   (props changed)
  projects/graid/8/usr.sbin/smbmsg/   (props changed)
  projects/graid/8/usr.sbin/snapinfo/   (props changed)
  projects/graid/8/usr.sbin/spkrtest/   (props changed)
  projects/graid/8/usr.sbin/spray/   (props changed)
  projects/graid/8/usr.sbin/sysinstall/   (props changed)
  projects/graid/8/usr.sbin/syslogd/   (props changed)
  projects/graid/8/usr.sbin/tcpdchk/   (props changed)
  projects/graid/8/usr.sbin/tcpdmatch/   (props changed)
  projects/graid/8/usr.sbin/tcpdrop/   (props changed)
  projects/graid/8/usr.sbin/tcpdump/   (props changed)
  projects/graid/8/usr.sbin/timed/   (props changed)
  projects/graid/8/usr.sbin/traceroute/   (props changed)
  projects/graid/8/usr.sbin/traceroute6/   (props changed)
  projects/graid/8/usr.sbin/trpt/   (props changed)
  projects/graid/8/usr.sbin/tzsetup/   (props changed)
  projects/graid/8/usr.sbin/uathload/   (props changed)
  projects/graid/8/usr.sbin/ugidfw/   (props changed)
  projects/graid/8/usr.sbin/uhsoctl/   (props changed)
  projects/graid/8/usr.sbin/usbconfig/   (props changed)
  projects/graid/8/usr.sbin/usbdevs/   (props changed)
  projects/graid/8/usr.sbin/vidcontrol/   (props changed)
  projects/graid/8/usr.sbin/vipw/   (props changed)
  projects/graid/8/usr.sbin/wake/   (props changed)
  projects/graid/8/usr.sbin/watch/   (props changed)
  projects/graid/8/usr.sbin/watchdogd/   (props changed)
  projects/graid/8/usr.sbin/wlandebug/   (props changed)
  projects/graid/8/usr.sbin/wlconfig/   (props changed)
  projects/graid/8/usr.sbin/wpa/   (props changed)
  projects/graid/8/usr.sbin/yp_mkdb/   (props changed)
  projects/graid/8/usr.sbin/ypbind/   (props changed)
  projects/graid/8/usr.sbin/yppoll/   (props changed)
  projects/graid/8/usr.sbin/yppush/   (props changed)
  projects/graid/8/usr.sbin/ypserv/   (props changed)
  projects/graid/8/usr.sbin/ypset/   (props changed)
  projects/graid/8/usr.sbin/zic/   (props changed)
  projects/graid/8/usr.sbin/zzz/   (props changed)

Modified: projects/graid/8/sbin/geom/class/raid/graid.8
==============================================================================
--- projects/graid/8/sbin/geom/class/raid/graid.8	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sbin/geom/class/raid/graid.8	Thu Mar 24 09:12:03 2011	(r219952)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 15, 2011
+.Dd March 22, 2011
 .Dt GRAID 8
 .Os
 .Sh NAME
@@ -104,7 +104,7 @@ argument specifies the on-disk metadata 
 such as "Intel".
 The
 .Ar label
-argument specifies teh label of the created volume.
+argument specifies the label of the created volume.
 The
 .Ar level
 argument specifies the RAID level of the created volume, such as:
@@ -214,12 +214,42 @@ Supports configurations: RAID0 (2+ disks
 RAID10 (4 disks), CONCAT (2+ disks).
 Configurations not supported by JMicron RAID BIOS, but enforceable on your own
 risk: RAID1 (3+ disks), RAID1E (3+ disks), RAID10 (6+ disks), RAID5 (3+ disks).
+.It NVIDIA
+The format used by NVIDIA MediaShield RAID BIOS.
+Supports one volume per array.
+Supports configurations: RAID0 (2+ disks), RAID1 (2 disks),
+RAID5 (3+ disks), RAID10 (4+ disks), SINGLE (1 disk), CONCAT (2+ disks).
+Configurations not supported by NVIDIA MediaShield RAID BIOS, but enforceable
+on your own risk: RAID1 (3+ disks).
+.It Promise
+The format used by Promise and AMD/ATI RAID BIOSes and FreeBSD ataraid(4)
+driver.
+Supports multiple volumes per array.
+Each disk can be split to be used by up to two arbitrary volumes.
+Supports configurations: RAID0 (2+ disks), RAID1 (2 disks),
+RAID5 (3+ disks), RAID10 (4 disks), SINGLE (1 disk), CONCAT (2+ disks).
+Configurations not supported by RAID BIOSes, but enforceable on your
+own risk: RAID1 (3+ disks), RAID10 (6+ disks).
+.It SiI
+The format used by SiliconImage RAID BIOS.
+Supports one volume per array.
+Supports configurations: RAID0 (2+ disks), RAID1 (2 disks),
+RAID5 (3+ disks), RAID10 (4 disks), SINGLE (1 disk), CONCAT (2+ disks).
+Configurations not supported by SiliconImage RAID BIOS, but enforceable on your
+own risk: RAID1 (3+ disks), RAID10 (6+ disks).
 .El
 .Sh SUPPORTED RAID LEVELS
 The GEOM RAID class follows a modular design, allowing different RAID levels
 to be used.
 Support for the following RAID levels is currently implemented: RAID0, RAID1,
 RAID1E, RAID10, SINGLE, CONCAT.
+.Sh RAID LEVEL MIGRATION
+The GEOM RAID class has no support for RAID level migration, allowed by some
+metadata formats.
+If you started migration using BIOS or in some other way, make sure to
+complete it there.
+Do not run GEOM RAID class on migrating volumes under pain of possible data
+corruption!
 .Sh EXIT STATUS
 Exit status is 0 on success, and non-zero if the command fails.
 .Sh SEE ALSO

Modified: projects/graid/8/sys/conf/files
==============================================================================
--- projects/graid/8/sys/conf/files	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/conf/files	Thu Mar 24 09:12:03 2011	(r219952)
@@ -2028,6 +2028,9 @@ geom/raid/g_raid_md_if.m	optional geom_r
 geom/raid/g_raid_tr_if.m	optional geom_raid
 geom/raid/md_intel.c		optional geom_raid
 geom/raid/md_jmicron.c		optional geom_raid
+geom/raid/md_nvidia.c		optional geom_raid
+geom/raid/md_promise.c		optional geom_raid
+geom/raid/md_sii.c		optional geom_raid
 geom/raid/tr_concat.c		optional geom_raid
 geom/raid/tr_raid0.c		optional geom_raid
 geom/raid/tr_raid1.c		optional geom_raid

Modified: projects/graid/8/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/8/sys/geom/raid/g_raid.c	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/geom/raid/g_raid.c	Thu Mar 24 09:12:03 2011	(r219952)
@@ -64,7 +64,7 @@ TUNABLE_INT("kern.geom.raid.read_err_thr
 SYSCTL_UINT(_kern_geom_raid, OID_AUTO, read_err_thresh, CTLFLAG_RW,
     &g_raid_read_err_thresh, 0,
     "Number of read errors equated to disk failure");
-u_int g_raid_start_timeout = 15;
+u_int g_raid_start_timeout = 30;
 TUNABLE_INT("kern.geom.raid.start_timeout", &g_raid_start_timeout);
 SYSCTL_UINT(_kern_geom_raid, OID_AUTO, start_timeout, CTLFLAG_RW,
     &g_raid_start_timeout, 0,
@@ -259,6 +259,8 @@ g_raid_volume_event2str(int event)
 		return ("DOWN");
 	case G_RAID_VOLUME_E_START:
 		return ("START");
+	case G_RAID_VOLUME_E_STARTMD:
+		return ("STARTMD");
 	default:
 		return ("INVALID");
 	}
@@ -432,7 +434,6 @@ g_raid_event_send(void *arg, int event, 
 	struct g_raid_event *ep;
 	int error;
 
-	ep = malloc(sizeof(*ep), M_RAID, M_WAITOK);
 	if ((flags & G_RAID_EVENT_VOLUME) != 0) {
 		sc = ((struct g_raid_volume *)arg)->v_softc;
 	} else if ((flags & G_RAID_EVENT_DISK) != 0) {
@@ -442,6 +443,10 @@ g_raid_event_send(void *arg, int event, 
 	} else {
 		sc = arg;
 	}
+	ep = malloc(sizeof(*ep), M_RAID,
+	    sx_xlocked(&sc->sc_lock) ? M_WAITOK : M_NOWAIT);
+	if (ep == NULL)
+		return (ENOMEM);
 	ep->e_tgt = arg;
 	ep->e_event = event;
 	ep->e_flags = flags;
@@ -469,21 +474,16 @@ g_raid_event_send(void *arg, int event, 
 	return (error);
 }
 
-#if 0
 static void
-g_raid_event_cancel(struct g_raid_disk *disk)
+g_raid_event_cancel(struct g_raid_softc *sc, void *tgt)
 {
-	struct g_raid_softc *sc;
 	struct g_raid_event *ep, *tmpep;
 
-	sc = disk->d_softc;
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
 	mtx_lock(&sc->sc_queue_mtx);
 	TAILQ_FOREACH_SAFE(ep, &sc->sc_events, e_next, tmpep) {
-		if ((ep->e_flags & G_RAID_EVENT_VOLUME) != 0)
-			continue;
-		if (ep->e_tgt != disk)
+		if (ep->e_tgt != tgt)
 			continue;
 		TAILQ_REMOVE(&sc->sc_events, ep, e_next);
 		if ((ep->e_flags & G_RAID_EVENT_WAIT) == 0)
@@ -495,7 +495,6 @@ g_raid_event_cancel(struct g_raid_disk *
 	}
 	mtx_unlock(&sc->sc_queue_mtx);
 }
-#endif
 
 static int
 g_raid_event_check(struct g_raid_softc *sc, void *tgt)
@@ -1525,6 +1524,10 @@ g_raid_update_volume(struct g_raid_volum
 		if (vol->v_tr)
 			G_RAID_TR_START(vol->v_tr);
 		return (0);
+	default:
+		if (sc->sc_md)
+			G_RAID_MD_VOLUME_EVENT(sc->sc_md, vol, event);
+		return (0);
 	}
 
 	/* Manage root mount release. */
@@ -1694,7 +1697,7 @@ g_raid_create_node(struct g_class *mp,
 }
 
 struct g_raid_volume *
-g_raid_create_volume(struct g_raid_softc *sc, const char *name)
+g_raid_create_volume(struct g_raid_softc *sc, const char *name, int id)
 {
 	struct g_raid_volume	*vol, *vol1;
 	int i;
@@ -1704,6 +1707,8 @@ g_raid_create_volume(struct g_raid_softc
 	vol->v_softc = sc;
 	strlcpy(vol->v_name, name, G_RAID_MAX_VOLUMENAME);
 	vol->v_state = G_RAID_VOLUME_S_STARTING;
+	vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN;
+	vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_UNKNOWN;
 	bioq_init(&vol->v_inflight);
 	bioq_init(&vol->v_locked);
 	LIST_INIT(&vol->v_locks);
@@ -1716,15 +1721,24 @@ g_raid_create_volume(struct g_raid_softc
 
 	/* Find free ID for this volume. */
 	g_topology_lock();
-	for (i = 0; ; i++) {
+	vol1 = vol;
+	if (id >= 0) {
 		LIST_FOREACH(vol1, &g_raid_volumes, v_global_next) {
-			if (vol1->v_global_id == i)
+			if (vol1->v_global_id == id)
+				break;
+		}
+	}
+	if (vol1 != NULL) {
+		for (id = 0; ; id++) {
+			LIST_FOREACH(vol1, &g_raid_volumes, v_global_next) {
+				if (vol1->v_global_id == id)
+					break;
+			}
+			if (vol1 == NULL)
 				break;
 		}
-		if (vol1 == NULL)
-			break;
 	}
-	vol->v_global_id = i;
+	vol->v_global_id = id;
 	LIST_INSERT_HEAD(&g_raid_volumes, vol, v_global_next);
 	g_topology_unlock();
 
@@ -1822,6 +1836,7 @@ g_raid_destroy_node(struct g_raid_softc 
 	} else
 		G_RAID_DEBUG(1, "Array destroyed.");
 	if (worker) {
+		g_raid_event_cancel(sc, sc);
 		mtx_destroy(&sc->sc_queue_mtx);
 		sx_xunlock(&sc->sc_lock);
 		sx_destroy(&sc->sc_lock);
@@ -1872,12 +1887,16 @@ g_raid_destroy_volume(struct g_raid_volu
 	g_topology_unlock();
 	TAILQ_REMOVE(&sc->sc_volumes, vol, v_next);
 	for (i = 0; i < G_RAID_MAX_SUBDISKS; i++) {
+		g_raid_event_cancel(sc, &vol->v_subdisks[i]);
 		disk = vol->v_subdisks[i].sd_disk;
 		if (disk == NULL)
 			continue;
 		TAILQ_REMOVE(&disk->d_subdisks, &vol->v_subdisks[i], sd_next);
 	}
 	G_RAID_DEBUG1(2, sc, "Volume %s destroyed.", vol->v_name);
+	if (sc->sc_md)
+		G_RAID_MD_FREE_VOLUME(sc->sc_md, vol);
+	g_raid_event_cancel(sc, vol);
 	free(vol, M_RAID);
 	if (sc->sc_stopping == G_RAID_DESTROY_HARD) {
 		/* Wake up worker to let it selfdestruct. */
@@ -1899,6 +1918,7 @@ g_raid_destroy_disk(struct g_raid_disk *
 		disk->d_consumer = NULL;
 	}
 	TAILQ_FOREACH_SAFE(sd, &disk->d_subdisks, sd_next, tmp) {
+		g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_NONE);
 		g_raid_event_send(sd, G_RAID_SUBDISK_E_DISCONNECTED,
 		    G_RAID_EVENT_SUBDISK);
 		TAILQ_REMOVE(&disk->d_subdisks, sd, sd_next);
@@ -1907,6 +1927,7 @@ g_raid_destroy_disk(struct g_raid_disk *
 	TAILQ_REMOVE(&sc->sc_disks, disk, d_next);
 	if (sc->sc_md)
 		G_RAID_MD_FREE_DISK(sc->sc_md, disk);
+	g_raid_event_cancel(sc, disk);
 	free(disk, M_RAID);
 	return (0);
 }

Modified: projects/graid/8/sys/geom/raid/g_raid.h
==============================================================================
--- projects/graid/8/sys/geom/raid/g_raid.h	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/geom/raid/g_raid.h	Thu Mar 24 09:12:03 2011	(r219952)
@@ -193,7 +193,7 @@ struct g_raid_subdisk {
 };
 
 #define G_RAID_MAX_SUBDISKS	16
-#define G_RAID_MAX_VOLUMENAME	16
+#define G_RAID_MAX_VOLUMENAME	32
 
 #define G_RAID_VOLUME_S_STARTING	0x00
 #define G_RAID_VOLUME_S_BROKEN		0x01
@@ -211,6 +211,7 @@ struct g_raid_subdisk {
 #define G_RAID_VOLUME_E_DOWN		0x00
 #define G_RAID_VOLUME_E_UP		0x01
 #define G_RAID_VOLUME_E_START		0x10
+#define G_RAID_VOLUME_E_STARTMD		0x11
 
 #define G_RAID_VOLUME_RL_RAID0		0x00
 #define G_RAID_VOLUME_RL_RAID1		0x01
@@ -349,7 +350,7 @@ struct g_raid_softc * g_raid_create_node
     const char *name, struct g_raid_md_object *md);
 int g_raid_create_node_format(const char *format, struct g_geom **gp);
 struct g_raid_volume * g_raid_create_volume(struct g_raid_softc *sc,
-    const char *name);
+    const char *name, int id);
 struct g_raid_disk * g_raid_create_disk(struct g_raid_softc *sc);
 const char * g_raid_get_diskname(struct g_raid_disk *disk);
 

Modified: projects/graid/8/sys/geom/raid/g_raid_md_if.m
==============================================================================
--- projects/graid/8/sys/geom/raid/g_raid_md_if.m	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/geom/raid/g_raid_md_if.m	Thu Mar 24 09:12:03 2011	(r219952)
@@ -62,6 +62,30 @@ CODE {
 
 		return (-1);
 	}
+
+	static int
+	g_raid_md_volume_event_default(struct g_raid_md_object *md,
+	    struct g_raid_volume *vol, u_int event)
+	{
+
+		return (-1);
+	}
+
+	static int
+	g_raid_md_free_disk_default(struct g_raid_md_object *md,
+	    struct g_raid_volume *vol)
+	{
+
+		return (0);
+	}
+
+	static int
+	g_raid_md_free_volume_default(struct g_raid_md_object *md,
+	    struct g_raid_volume *vol)
+	{
+
+		return (0);
+	}
 };
 
 # create() - create new node from scratch.
@@ -92,6 +116,13 @@ METHOD int event {
 	u_int event;
 };
 
+# volume_event() - events handling method.
+METHOD int volume_event {
+	struct g_raid_md_object *md;
+	struct g_raid_volume *vol;
+	u_int event;
+} DEFAULT g_raid_md_volume_event_default;
+
 # write() - metadata write method.
 METHOD int write {
 	struct g_raid_md_object *md;
@@ -111,7 +142,13 @@ METHOD int fail_disk {
 METHOD int free_disk {
 	struct g_raid_md_object *md;
 	struct g_raid_disk *disk;
-};
+} DEFAULT g_raid_md_free_disk_default;
+
+# free_volume() - volume destructor.
+METHOD int free_volume {
+	struct g_raid_md_object *md;
+	struct g_raid_volume *vol;
+} DEFAULT g_raid_md_free_volume_default;
 
 # free() - destructor.
 METHOD int free {

Modified: projects/graid/8/sys/geom/raid/md_intel.c
==============================================================================
--- projects/graid/8/sys/geom/raid/md_intel.c	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/geom/raid/md_intel.c	Thu Mar 24 09:12:03 2011	(r219952)
@@ -938,7 +938,7 @@ g_raid_md_intel_start(struct g_raid_soft
 	for (i = 0; i < meta->total_volumes; i++) {
 		mvol = intel_get_volume(meta, i);
 		mmap = intel_get_map(mvol, 0);
-		vol = g_raid_create_volume(sc, mvol->name);
+		vol = g_raid_create_volume(sc, mvol->name, -1);
 		vol->v_md_data = (void *)(intptr_t)i;
 		if (mmap->type == INTEL_T_RAID0)
 			vol->v_raid_level = G_RAID_VOLUME_RL_RAID0;
@@ -1077,12 +1077,10 @@ g_raid_intel_go(void *arg)
 	sc = arg;
 	md = sc->sc_md;
 	mdi = (struct g_raid_md_intel_object *)md;
-	sx_xlock(&sc->sc_lock);
 	if (!mdi->mdio_started) {
 		G_RAID_DEBUG1(0, sc, "Force array start due to timeout.");
 		g_raid_event_send(sc, G_RAID_NODE_E_START, 0);
 	}
-	sx_xunlock(&sc->sc_lock);
 }
 
 static int
@@ -1539,7 +1537,7 @@ g_raid_md_ctl_intel(struct g_raid_md_obj
 
 		/* We have all we need, create things: volume, ... */
 		mdi->mdio_started = 1;
-		vol = g_raid_create_volume(sc, volname);
+		vol = g_raid_create_volume(sc, volname, -1);
 		vol->v_md_data = (void *)(intptr_t)0;
 		vol->v_raid_level = level;
 		vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE;
@@ -1723,7 +1721,7 @@ g_raid_md_ctl_intel(struct g_raid_md_obj
 		}
 
 		/* We have all we need, create things: volume, ... */
-		vol = g_raid_create_volume(sc, volname);
+		vol = g_raid_create_volume(sc, volname, -1);
 		vol->v_md_data = (void *)(intptr_t)i;
 		vol->v_raid_level = level;
 		vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE;
@@ -1805,7 +1803,7 @@ g_raid_md_ctl_intel(struct g_raid_md_obj
 			i = strtol(volname, &tmp, 10);
 			if (verb != volname && tmp[0] == 0) {
 				TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
-					if ((intptr_t)vol->v_md_data == i)
+					if (vol->v_global_id == i)
 						break;
 				}
 			}

Modified: projects/graid/8/sys/geom/raid/md_jmicron.c
==============================================================================
--- projects/graid/8/sys/geom/raid/md_jmicron.c	Thu Mar 24 08:56:12 2011	(r219951)
+++ projects/graid/8/sys/geom/raid/md_jmicron.c	Thu Mar 24 09:12:03 2011	(r219952)
@@ -235,7 +235,7 @@ jmicron_meta_put_name(struct jmicron_rai
 {
 
 	memset(meta->name, 0x20, 16);
-	memcpy(meta->name, buf, MIN(strlen(meta->name), 16));
+	memcpy(meta->name, buf, MIN(strlen(buf), 16));
 }
 
 static int
@@ -655,7 +655,7 @@ g_raid_md_jmicron_start(struct g_raid_so
 
 	/* Create volumes and subdisks. */
 	jmicron_meta_get_name(meta, buf);
-	vol = g_raid_create_volume(sc, buf);
+	vol = g_raid_create_volume(sc, buf, -1);
 	size = ((off_t)meta->disk_sectors_high << 16) + meta->disk_sectors_low;
 	size *= 512; //ZZZ
 	if (meta->type == JMICRON_T_RAID0) {
@@ -785,12 +785,10 @@ g_raid_jmicron_go(void *arg)
 	sc = arg;
 	md = sc->sc_md;
 	mdi = (struct g_raid_md_jmicron_object *)md;
-	sx_xlock(&sc->sc_lock);
 	if (!mdi->mdio_started) {
 		G_RAID_DEBUG1(0, sc, "Force array start due to timeout.");
 		g_raid_event_send(sc, G_RAID_NODE_E_START, 0);
 	}
-	sx_xunlock(&sc->sc_lock);
 }
 
 static int
@@ -1187,8 +1185,9 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o
 		}
 
 		/* We have all we need, create things: volume, ... */
+		mdi->mdio_total_disks = numdisks;
 		mdi->mdio_started = 1;
-		vol = g_raid_create_volume(sc, volname);
+		vol = g_raid_create_volume(sc, volname, -1);
 		vol->v_md_data = (void *)(intptr_t)0;
 		vol->v_raid_level = level;
 		vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE;

Copied and modified: projects/graid/8/sys/geom/raid/md_nvidia.c (from r219874, projects/graid/head/sys/geom/raid/md_nvidia.c)
==============================================================================
--- projects/graid/head/sys/geom/raid/md_nvidia.c	Tue Mar 22 16:54:21 2011	(r219874, copy source)
+++ projects/graid/8/sys/geom/raid/md_nvidia.c	Thu Mar 24 09:12:03 2011	(r219952)
@@ -42,7 +42,7 @@ __FBSDID("$FreeBSD$");
 #include "geom/raid/g_raid.h"
 #include "g_raid_md_if.h"
 
-static MALLOC_DEFINE(M_MD_NVIDIA, "md_nvidia_data", "GEOM_RAID NVidia metadata");
+static MALLOC_DEFINE(M_MD_NVIDIA, "md_nvidia_data", "GEOM_RAID NVIDIA metadata");
 
 struct nvidia_raid_conf {
 	uint8_t		nvidia_id[8];
@@ -57,37 +57,44 @@ struct nvidia_raid_conf {
 	uint32_t	sector_size;
 	uint8_t		name[16];
 	uint8_t		revision[4];
-	uint32_t	dummy_1;
+	uint32_t	disk_status;
 
 	uint32_t	magic_0;
-#define NVIDIA_MAGIC0               0x00640044
+#define NVIDIA_MAGIC0		0x00640044
 
 	uint64_t	volume_id[2];
-	uint8_t		flags;
+	uint8_t		state;
+#define NVIDIA_S_IDLE		0
+#define NVIDIA_S_INIT		2
+#define NVIDIA_S_REBUILD	3
+#define NVIDIA_S_UPGRADE	4
+#define NVIDIA_S_SYNC		5
 	uint8_t		array_width;
 	uint8_t		total_disks;
-	uint8_t		dummy_2;
+	uint8_t		orig_array_width;
 	uint16_t	type;
-#define NVIDIA_T_RAID0              0x00000080
-#define NVIDIA_T_RAID1              0x00000081
-#define NVIDIA_T_RAID3              0x00000083
-#define NVIDIA_T_RAID5              0x00000085
-#define NVIDIA_T_RAID10             0x00008180
-#define NVIDIA_T_CONCAT             0x000000ff
+#define NVIDIA_T_RAID0		0x0080
+#define NVIDIA_T_RAID1		0x0081
+#define NVIDIA_T_RAID3		0x0083
+#define NVIDIA_T_RAID5		0x0085	/* RLQ = 00/02? */
+#define NVIDIA_T_RAID5_SYM	0x0095	/* RLQ = 03 */
+#define NVIDIA_T_RAID10		0x008a
+#define NVIDIA_T_RAID01		0x8180
+#define NVIDIA_T_CONCAT		0x00ff
 
 	uint16_t	dummy_3;
 	uint32_t	strip_sectors;
 	uint32_t	strip_bytes;
 	uint32_t	strip_shift;
 	uint32_t	strip_mask;
-	uint32_t	strip_sizesectors;
-	uint32_t	strip_sizebytes;
+	uint32_t	stripe_sectors;
+	uint32_t	stripe_bytes;
 	uint32_t	rebuild_lba;
 	uint32_t	orig_type;
 	uint32_t	orig_total_sectors;
 	uint32_t	status;
-#define NVIDIA_S_BOOTABLE           0x00000001
-#define NVIDIA_S_DEGRADED           0x00000002
+#define NVIDIA_S_BOOTABLE	0x00000001
+#define NVIDIA_S_DEGRADED	0x00000002
 
 	uint32_t	filler[98];
 } __packed;
@@ -101,8 +108,6 @@ struct g_raid_md_nvidia_perdisk {
 struct g_raid_md_nvidia_object {
 	struct g_raid_md_object	 mdio_base;
 	uint64_t		 mdio_volume_id[2];
-	uint8_t			 mdio_location;
-	uint32_t		 mdio_generation;
 	struct nvidia_raid_conf	*mdio_meta;
 	struct callout		 mdio_start_co;	/* STARTING state timer. */
 	int			 mdio_total_disks;
@@ -134,12 +139,14 @@ static kobj_method_t g_raid_md_nvidia_me
 };
 
 static struct g_raid_md_class g_raid_md_nvidia_class = {
-	"NVidia",
+	"NVIDIA",
 	g_raid_md_nvidia_methods,
 	sizeof(struct g_raid_md_nvidia_object),
 	.mdc_priority = 100
 };
 
+static int NVIDIANodeID = 1;
+
 static void
 g_raid_md_nvidia_print(struct nvidia_raid_conf *meta)
 {
@@ -147,9 +154,9 @@ g_raid_md_nvidia_print(struct nvidia_rai
 	if (g_raid_debug < 1)
 		return;
 
-	printf("********* ATA NVidia RAID Metadata *********\n");
+	printf("********* ATA NVIDIA RAID Metadata *********\n");
 	printf("nvidia_id           <%.8s>\n", meta->nvidia_id);
-	printf("config_size         0x%08x\n", meta->config_size);
+	printf("config_size         %u\n", meta->config_size);
 	printf("checksum            0x%08x\n", meta->checksum);
 	printf("version             0x%04x\n", meta->version);
 	printf("disk_number         %d\n", meta->disk_number);
@@ -160,22 +167,22 @@ g_raid_md_nvidia_print(struct nvidia_rai
 	printf("revision            0x%02x%02x%02x%02x\n",
 	    meta->revision[0], meta->revision[1],
 	    meta->revision[2], meta->revision[3]);
-	printf("dummy_1             0x%08x\n", meta->dummy_1);
+	printf("disk_status         0x%08x\n", meta->disk_status);
 	printf("magic_0             0x%08x\n", meta->magic_0);
 	printf("volume_id           0x%016jx%016jx\n",
-	    meta->volume_id[0], meta->volume_id[1]);
-	printf("flags               0x%02x\n", meta->flags);
+	    meta->volume_id[1], meta->volume_id[0]);
+	printf("state               0x%02x\n", meta->state);
 	printf("array_width         %u\n", meta->array_width);
 	printf("total_disks         %u\n", meta->total_disks);
-	printf("dummy_2             0x%02x\n", meta->dummy_2);
+	printf("orig_array_width    %u\n", meta->orig_array_width);
 	printf("type                0x%04x\n", meta->type);
 	printf("dummy_3             0x%04x\n", meta->dummy_3);
 	printf("strip_sectors       %u\n", meta->strip_sectors);
 	printf("strip_bytes         %u\n", meta->strip_bytes);
 	printf("strip_shift         %u\n", meta->strip_shift);
 	printf("strip_mask          0x%08x\n", meta->strip_mask);
-	printf("strip_sizesectors   %u\n", meta->strip_sizesectors);
-	printf("strip_sizebytes     %u\n", meta->strip_sizebytes);
+	printf("stripe_sectors      %u\n", meta->stripe_sectors);
+	printf("stripe_bytes        %u\n", meta->stripe_bytes);
 	printf("rebuild_lba         %u\n", meta->rebuild_lba);
 	printf("orig_type           0x%04x\n", meta->orig_type);
 	printf("orig_total_sectors  %u\n", meta->orig_total_sectors);
@@ -193,6 +200,19 @@ nvidia_meta_copy(struct nvidia_raid_conf
 	return (nmeta);
 }
 
+static int
+nvidia_meta_translate_disk(struct nvidia_raid_conf *meta, int md_disk_pos)
+{
+	int disk_pos;
+
+	if (md_disk_pos >= 0 && meta->type == NVIDIA_T_RAID01) {
+		disk_pos = (md_disk_pos / meta->array_width) +
+		    (md_disk_pos % meta->array_width) * meta->array_width;
+	} else
+		disk_pos = md_disk_pos;
+	return (disk_pos);
+}
+
 static void
 nvidia_meta_get_name(struct nvidia_raid_conf *meta, char *buf)
 {
@@ -207,7 +227,6 @@ nvidia_meta_get_name(struct nvidia_raid_
 	}
 }
 
-#if 0
 static void
 nvidia_meta_put_name(struct nvidia_raid_conf *meta, char *buf)
 {
@@ -215,7 +234,6 @@ nvidia_meta_put_name(struct nvidia_raid_
 	memset(meta->name, 0x20, 16);
 	memcpy(meta->name, buf, MIN(strlen(buf), 16));
 }
-#endif
 
 static struct nvidia_raid_conf *
 nvidia_meta_read(struct g_consumer *cp)
@@ -240,33 +258,35 @@ nvidia_meta_read(struct g_consumer *cp)
 	memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
 	g_free(buf);
 
-	/* Check if this is an NVidia RAID struct */
+	/* Check if this is an NVIDIA RAID struct */
 	if (strncmp(meta->nvidia_id, NVIDIA_MAGIC, strlen(NVIDIA_MAGIC))) {
-		G_RAID_DEBUG(1, "NVidia signature check failed on %s", pp->name);
+		G_RAID_DEBUG(1, "NVIDIA signature check failed on %s", pp->name);
 		free(meta, M_MD_NVIDIA);
 		return (NULL);
 	}
 	if (meta->config_size > 128 ||
-	    meta->config_size < 10) {
-		G_RAID_DEBUG(1, "NVidia metadata size looks wrong: %d",
+	    meta->config_size < 30) {
+		G_RAID_DEBUG(1, "NVIDIA metadata size looks wrong: %d",
 		    meta->config_size);
 		free(meta, M_MD_NVIDIA);
 		return (NULL);
 	}
-	/* Check metadata major version. */
-/*	if (meta->version_major != 2) {
-		G_RAID_DEBUG(1, "NVidia version check failed on %s (%d.%d)",
-		    pp->name, meta->version_major, meta->version_minor);
-		free(meta, M_MD_NVIDIA);
-		return (NULL);
-	}
-*/
+
 	/* Check metadata checksum. */
 	for (checksum = 0, ptr = (uint32_t *)meta,
 	    i = 0; i < meta->config_size; i++)
 		checksum += *ptr++;
 	if (checksum != 0) {
-		G_RAID_DEBUG(1, "NVidia checksum check failed on %s", pp->name);
+		G_RAID_DEBUG(1, "NVIDIA checksum check failed on %s", pp->name);
+		free(meta, M_MD_NVIDIA);
+		return (NULL);
+	}
+
+	/* Check volume state. */
+	if (meta->state != NVIDIA_S_IDLE && meta->state != NVIDIA_S_INIT &&
+	    meta->state != NVIDIA_S_REBUILD && meta->state != NVIDIA_S_SYNC) {
+		G_RAID_DEBUG(1, "NVIDIA unknown state on %s (0x%02x)",
+		    pp->name, meta->state);
 		free(meta, M_MD_NVIDIA);
 		return (NULL);
 	}
@@ -274,8 +294,9 @@ nvidia_meta_read(struct g_consumer *cp)
 	/* Check raid type. */
 	if (meta->type != NVIDIA_T_RAID0 && meta->type != NVIDIA_T_RAID1 &&
 	    meta->type != NVIDIA_T_RAID3 && meta->type != NVIDIA_T_RAID5 &&
-	    meta->type != NVIDIA_T_RAID10 && meta->type != NVIDIA_T_CONCAT) {
-		G_RAID_DEBUG(1, "NVidia unknown RAID level on %s (0x%02x)",
+	    meta->type != NVIDIA_T_RAID5_SYM &&
+	    meta->type != NVIDIA_T_RAID01 && meta->type != NVIDIA_T_CONCAT) {
+		G_RAID_DEBUG(1, "NVIDIA unknown RAID level on %s (0x%02x)",
 		    pp->name, meta->type);
 		free(meta, M_MD_NVIDIA);
 		return (NULL);
@@ -284,20 +305,20 @@ nvidia_meta_read(struct g_consumer *cp)
 	return (meta);
 }
 
-#if 0
 static int
 nvidia_meta_write(struct g_consumer *cp, struct nvidia_raid_conf *meta)
 {
 	struct g_provider *pp;
 	char *buf;
 	int error, i;
-	uint16_t checksum, *ptr;
+	uint32_t checksum, *ptr;
 
 	pp = cp->provider;
 
 	/* Recalculate checksum for case if metadata were changed. */
 	meta->checksum = 0;
-	for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 159; i++)
+	for (checksum = 0, ptr = (uint32_t *)meta,
+	    i = 0; i < meta->config_size; i++)
 		checksum += *ptr++;
 	meta->checksum -= checksum;
 
@@ -305,72 +326,37 @@ nvidia_meta_write(struct g_consumer *cp,
 	buf = malloc(pp->sectorsize, M_MD_NVIDIA, M_WAITOK | M_ZERO);
 	memcpy(buf, meta, sizeof(*meta));
 
-	/* Write 4 copies of metadata. */
-	for (i = 0; i < 4; i++) {
-		error = g_write_data(cp,
-		    pp->mediasize - (pp->sectorsize * (1 + 0x200 * i)),
-		    buf, pp->sectorsize);
-		if (error != 0) {
-			G_RAID_DEBUG(1, "Cannot write metadata to %s (error=%d).",
-			    pp->name, error);
-			break;
-		}
+	/* Write metadata. */
+	error = g_write_data(cp,
+	    pp->mediasize - 2 * pp->sectorsize, buf, pp->sectorsize);
+	if (error != 0) {
+		G_RAID_DEBUG(1, "Cannot write metadata to %s (error=%d).",
+		    pp->name, error);
 	}
 
 	free(buf, M_MD_NVIDIA);
 	return (error);
 }
-#endif
 
 static int
 nvidia_meta_erase(struct g_consumer *cp)
 {
 	struct g_provider *pp;
 	char *buf;
-	int error, i;
+	int error;
 
 	pp = cp->provider;
 	buf = malloc(pp->sectorsize, M_MD_NVIDIA, M_WAITOK | M_ZERO);
-	/* Write 4 copies of metadata. */
-	for (i = 0; i < 4; i++) {
-		error = g_write_data(cp,
-		    pp->mediasize - (pp->sectorsize * (1 + 0x200 * i)),
-		    buf, pp->sectorsize);
-		if (error != 0) {
-			G_RAID_DEBUG(1, "Cannot erase metadata on %s (error=%d).",
-			    pp->name, error);
-		}
+	error = g_write_data(cp,
+	    pp->mediasize - 2 * pp->sectorsize, buf, pp->sectorsize);
+	if (error != 0) {
+		G_RAID_DEBUG(1, "Cannot erase metadata on %s (error=%d).",
+		    pp->name, error);
 	}
 	free(buf, M_MD_NVIDIA);
 	return (error);
 }
 
-static int
-nvidia_meta_write_spare(struct g_consumer *cp)
-{
-#if 0
-	struct nvidia_raid_conf *meta;
-	int error;
-
-	meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO);
-	meta->total_sectors = cp->provider->mediasize /
-	    cp->provider->sectorsize - 0x800;
-	meta->vendor_id = 0x1095;
-	meta->version_minor = 0;
-	meta->version_major = 2;
-	meta->volume_id[0] = arc4random();
-	meta->volume_id[1] = arc4random();
-	meta->type = NVIDIA_T_SPARE;
-	meta->generation = 1;
-	meta->raid1_ident = 0xff;
-	meta->raid_location = arc4random();
-	error = nvidia_meta_write(cp, meta);
-	free(meta, M_MD_NVIDIA);
-	return (error);
-#endif
-	return (0);
-}
-
 static struct g_raid_disk *
 g_raid_md_nvidia_get_disk(struct g_raid_softc *sc, int id)
 {
@@ -450,10 +436,14 @@ g_raid_md_nvidia_start_disk(struct g_rai
 	olddisk = NULL;
 
 	/* Find disk position in metadata by it's serial. */
-	if (pd->pd_meta != NULL)
+	if (pd->pd_meta != NULL) {
 		disk_pos = pd->pd_meta->disk_number;
-	else
+		if (disk_pos >= meta->total_disks || mdi->mdio_started)
+			disk_pos = -3;
+	} else
 		disk_pos = -3;
+	/* For RAID0+1 we need to translate order. */
+	disk_pos = nvidia_meta_translate_disk(meta, disk_pos);
 	if (disk_pos < 0) {
 		G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk");
 		/* If we are in the start process, that's all for now. */
@@ -469,7 +459,7 @@ g_raid_md_nvidia_start_disk(struct g_rai
 				continue;
 			/* Make sure this disk is big enough. */
 			TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) {
-				if (sd->sd_offset + sd->sd_size + 512 >
+				if (sd->sd_offset + sd->sd_size + 2 * 512 >
 				    pd->pd_disk_size) {
 					G_RAID_DEBUG1(1, sc,
 					    "Disk too small (%ju < %ju)",
@@ -488,15 +478,8 @@ g_raid_md_nvidia_start_disk(struct g_rai
 		}
 		if (olddisk == NULL) {
 nofit:
-			if (disk_pos == -3 || pd->pd_disk_pos == -3) {
-				g_raid_change_disk_state(disk,
-				    G_RAID_DISK_S_SPARE);
-				return (1);
-			} else {
-				g_raid_change_disk_state(disk,
-				    G_RAID_DISK_S_STALE);
-				return (0);
-			}
+			g_raid_change_disk_state(disk, G_RAID_DISK_S_SPARE);
+			return (1);
 		}
 		oldpd = (struct g_raid_md_nvidia_perdisk *)olddisk->d_md_data;
 		disk_pos = oldpd->pd_disk_pos;
@@ -555,32 +538,23 @@ nofit:
 			/* New or ex-spare disk. */
 			g_raid_change_subdisk_state(sd,
 			    G_RAID_SUBDISK_S_NEW);
-#if 0
-		} else if (pd->pd_meta->disk_status == NVIDIA_S_REBUILD) {
+		} else if (meta->state == NVIDIA_S_REBUILD &&
+		    (pd->pd_meta->disk_status & 0x100)) {
 			/* Rebuilding disk. */
 			g_raid_change_subdisk_state(sd,
 			    G_RAID_SUBDISK_S_REBUILD);
-			if (pd->pd_meta->generation == meta->generation)
-				sd->sd_rebuild_pos = pd->pd_meta->rebuild_lba * 512;
-			else
-				sd->sd_rebuild_pos = 0;
-		} else if (pd->pd_meta->disk_status == NVIDIA_S_CURRENT) {
-			if (pd->pd_meta->raid_status == NVIDIA_S_ONLINE ||
-			    pd->pd_meta->generation != meta->generation) {
-				/* Dirty or resyncing disk. */
-				g_raid_change_subdisk_state(sd,
-				    G_RAID_SUBDISK_S_STALE);
-#endif
-			} else {
-				/* Up to date disk. */
-				g_raid_change_subdisk_state(sd,
-				    G_RAID_SUBDISK_S_ACTIVE);
-#if 0
-			}
+			sd->sd_rebuild_pos = (off_t)pd->pd_meta->rebuild_lba /
+			    meta->array_width * pd->pd_meta->sector_size;
+		} else if (meta->state == NVIDIA_S_SYNC) {
+			/* Resyncing/dirty disk. */
+			g_raid_change_subdisk_state(sd,
+			    G_RAID_SUBDISK_S_RESYNC);
+			sd->sd_rebuild_pos = (off_t)pd->pd_meta->rebuild_lba /
+			    meta->array_width * pd->pd_meta->sector_size;
 		} else {
+			/* Up to date disk. */
 			g_raid_change_subdisk_state(sd,
-			    G_RAID_SUBDISK_S_FAILED);
-#endif
+			    G_RAID_SUBDISK_S_ACTIVE);
 		}
 		g_raid_event_send(sd, G_RAID_SUBDISK_E_NEW,
 		    G_RAID_EVENT_SUBDISK);
@@ -678,10 +652,9 @@ g_raid_md_nvidia_start(struct g_raid_sof
 	struct nvidia_raid_conf *meta;
 	struct g_raid_volume *vol;
 	struct g_raid_subdisk *sd;
-	struct g_raid_disk *disk, *best;
+	struct g_raid_disk *disk;
 	off_t size;
 	int j, disk_pos;
-	uint32_t gendiff, bestgendiff;
 	char buf[17];
 
 	md = sc->sc_md;
@@ -692,13 +665,14 @@ g_raid_md_nvidia_start(struct g_raid_sof
 	nvidia_meta_get_name(meta, buf);
 	vol = g_raid_create_volume(sc, buf, -1);
 	vol->v_mediasize = (off_t)meta->total_sectors * 512;
+	vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE;
 	if (meta->type == NVIDIA_T_RAID0) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID0;
 		size = vol->v_mediasize / mdi->mdio_total_disks;
 	} else if (meta->type == NVIDIA_T_RAID1) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID1;
 		size = vol->v_mediasize;
-	} else if (meta->type == NVIDIA_T_RAID10) {
+	} else if (meta->type == NVIDIA_T_RAID01) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E;
 		size = vol->v_mediasize / (mdi->mdio_total_disks / 2);
 	} else if (meta->type == NVIDIA_T_CONCAT) {
@@ -710,11 +684,14 @@ g_raid_md_nvidia_start(struct g_raid_sof
 	} else if (meta->type == NVIDIA_T_RAID5) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID5;
 		size = vol->v_mediasize / (mdi->mdio_total_disks - 1);
+	} else if (meta->type == NVIDIA_T_RAID5_SYM) {
+		vol->v_raid_level = G_RAID_VOLUME_RL_RAID5;
+//		vol->v_raid_level_qualifier = 0x03;
+		size = vol->v_mediasize / (mdi->mdio_total_disks - 1);
 	} else {
 		vol->v_raid_level = G_RAID_VOLUME_RL_UNKNOWN;
 		size = 0;
 	}
-	vol->v_raid_level_qualifier = G_RAID_VOLUME_RLQ_NONE;
 	vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
 	vol->v_disks_count = mdi->mdio_total_disks;
 	vol->v_sectorsize = 512; //ZZZ
@@ -737,30 +714,15 @@ g_raid_md_nvidia_start(struct g_raid_sof
 		TAILQ_INSERT_TAIL(&disk->d_subdisks, sd, sd_next);
 	}
 
-	/*
-	 * Make all disks found till the moment take their places
-	 * in order of their generation numbers.
-	 */
+	/* Make all disks found till the moment take their places. */
 	do {
-		best = NULL;
-		bestgendiff = 0xffffffff;
 		TAILQ_FOREACH(disk, &sc->sc_disks, d_next) {
-			if (disk->d_state != G_RAID_DISK_S_NONE)
-				continue;
-			pd = disk->d_md_data;
-			if (pd->pd_meta == NULL)
-				gendiff = 0xfffffffe;
-			else
-				gendiff = 0;//meta->generation -
-				    //pd->pd_meta->generation;
-			if (gendiff < bestgendiff) {
-				best = disk;
-				bestgendiff = gendiff;
+			if (disk->d_state == G_RAID_DISK_S_NONE) {
+				g_raid_md_nvidia_start_disk(disk);
+				break;
 			}
 		}
-		if (best != NULL)
-			g_raid_md_nvidia_start_disk(best);
-	} while (best != NULL);
+	} while (disk != NULL);
 
 	mdi->mdio_started = 1;
 	G_RAID_DEBUG1(0, sc, "Array started.");
@@ -796,23 +758,21 @@ g_raid_md_nvidia_new_disk(struct g_raid_
 		if (g_raid_md_nvidia_start_disk(disk))
 			g_raid_md_write_nvidia(md, NULL, NULL, NULL);
 	} else {
-		if (mdi->mdio_meta == NULL/* ||
-		    ((int32_t)(pdmeta->generation - mdi->mdio_generation)) > 0*/) {
+		if (mdi->mdio_meta == NULL ||
+		    mdi->mdio_meta->disk_number >= mdi->mdio_meta->total_disks) {
 			G_RAID_DEBUG1(1, sc, "Newer disk");
 			if (mdi->mdio_meta != NULL)
 				free(mdi->mdio_meta, M_MD_NVIDIA);
 			mdi->mdio_meta = nvidia_meta_copy(pdmeta);
-//			mdi->mdio_generation = mdi->mdio_meta->generation;
 			mdi->mdio_total_disks = pdmeta->total_disks;
 			mdi->mdio_disks_present = 1;
-		} else /*if (pdmeta->generation == mdi->mdio_generation)*/ {
+		} else if (pdmeta->disk_number < mdi->mdio_meta->total_disks) {
 			mdi->mdio_disks_present++;
 			G_RAID_DEBUG1(1, sc, "Matching disk (%d of %d up)",
 			    mdi->mdio_disks_present,
 			    mdi->mdio_total_disks);
-//		} else {
-//			G_RAID_DEBUG1(1, sc, "Older disk");
-		}
+		} else
+			G_RAID_DEBUG1(1, sc, "Spare disk");
 
 		/* If we collected all needed disks - start array. */
 		if (mdi->mdio_disks_present == mdi->mdio_total_disks)
@@ -846,9 +806,8 @@ g_raid_md_create_nvidia(struct g_raid_md
 
 	mdi = (struct g_raid_md_nvidia_object *)md;
 	arc4rand(&mdi->mdio_volume_id, 16, 0);
-	mdi->mdio_generation = 0;
-	snprintf(name, sizeof(name), "NVidia-%016jx%016jx",
-	    mdi->mdio_volume_id[0], mdi->mdio_volume_id[1]);
+	snprintf(name, sizeof(name), "NVIDIA-%d",
+	    atomic_fetchadd_int(&NVIDIANodeID, 1));
 	sc = g_raid_create_node(mp, name, md);
 	if (sc == NULL)
 		return (G_RAID_MD_TASTE_FAIL);
@@ -873,7 +832,7 @@ g_raid_md_taste_nvidia(struct g_raid_md_
 	char name[32];
 	uint16_t vendor;
 
-	G_RAID_DEBUG(1, "Tasting NVidia on %s", cp->provider->name);
+	G_RAID_DEBUG(1, "Tasting NVIDIA on %s", cp->provider->name);
 	mdi = (struct g_raid_md_nvidia_object *)md;
 	pp = cp->provider;
 
@@ -893,14 +852,14 @@ g_raid_md_taste_nvidia(struct g_raid_md_
 	g_access(cp, -1, 0, 0);
 	if (meta == NULL) {
 		if (g_raid_aggressive_spare) {
-			if (vendor == 0x1095) {
+			if (vendor == 0x10de) {
 				G_RAID_DEBUG(1,
-				    "No NVidia metadata, forcing spare.");

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-projects mailing list