From owner-svn-src-projects@FreeBSD.ORG Thu Mar 24 09:12:55 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4B0461065670; Thu, 24 Mar 2011 09:12:55 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 391F88FC12; Thu, 24 Mar 2011 09:12:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p2O9Ct9m023545; Thu, 24 Mar 2011 09:12:55 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p2O9CtvU023535; Thu, 24 Mar 2011 09:12:55 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201103240912.p2O9CtvU023535@svn.freebsd.org> From: Alexander Motin Date: Thu, 24 Mar 2011 09:12:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219953 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac sbin/geom/class/raid share/misc sys/conf sys/geom/raid sys/modules/geom/geom_raid tool... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Mar 2011 09:12:55 -0000 Author: mav Date: Thu Mar 24 09:12:54 2011 New Revision: 219953 URL: http://svn.freebsd.org/changeset/base/219953 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/7/sys/geom/raid/md_nvidia.c - copied, changed from r219874, projects/graid/head/sys/geom/raid/md_nvidia.c projects/graid/7/sys/geom/raid/md_promise.c - copied, changed from r219477, projects/graid/head/sys/geom/raid/md_promise.c projects/graid/7/sys/geom/raid/md_sii.c - copied, changed from r219583, projects/graid/head/sys/geom/raid/md_sii.c Modified: projects/graid/7/sbin/geom/class/raid/graid.8 projects/graid/7/sys/conf/files projects/graid/7/sys/geom/raid/g_raid.c projects/graid/7/sys/geom/raid/g_raid.h projects/graid/7/sys/geom/raid/g_raid_md_if.m projects/graid/7/sys/geom/raid/md_intel.c projects/graid/7/sys/geom/raid/md_jmicron.c projects/graid/7/sys/geom/raid/tr_concat.c projects/graid/7/sys/modules/geom/geom_raid/Makefile Directory Properties: projects/graid/7/ (props changed) projects/graid/7/COPYRIGHT (props changed) projects/graid/7/Makefile (props changed) projects/graid/7/Makefile.inc1 (props changed) projects/graid/7/ObsoleteFiles.inc (props changed) projects/graid/7/UPDATING (props changed) projects/graid/7/bin/ (props changed) projects/graid/7/bin/chflags/ (props changed) projects/graid/7/bin/chio/ (props changed) projects/graid/7/bin/cp/ (props changed) projects/graid/7/bin/csh/ (props changed) projects/graid/7/bin/dd/ (props changed) projects/graid/7/bin/df/ (props changed) projects/graid/7/bin/echo/ (props changed) projects/graid/7/bin/ed/ (props changed) projects/graid/7/bin/expr/ (props changed) projects/graid/7/bin/kill/ (props changed) projects/graid/7/bin/ln/ (props changed) projects/graid/7/bin/ls/ (props changed) projects/graid/7/bin/pax/ (props changed) projects/graid/7/bin/ps/ (props changed) projects/graid/7/bin/rm/ (props changed) projects/graid/7/bin/sh/ (props changed) projects/graid/7/bin/test/ (props changed) projects/graid/7/cddl/contrib/opensolaris/ (props changed) projects/graid/7/cddl/lib/libzpool/ (props changed) projects/graid/7/contrib/bind9/ (props changed) projects/graid/7/contrib/binutils/ (props changed) projects/graid/7/contrib/bsnmp/ (props changed) projects/graid/7/contrib/bsnmp/snmpd/bsnmpd.1 (props changed) projects/graid/7/contrib/cpio/ (props changed) projects/graid/7/contrib/csup/ (props changed) projects/graid/7/contrib/expat/ (props changed) projects/graid/7/contrib/gcc/ (props changed) projects/graid/7/contrib/gdb/ (props changed) projects/graid/7/contrib/gdtoa/ (props changed) projects/graid/7/contrib/groff/ (props changed) projects/graid/7/contrib/ipfilter/ (props changed) projects/graid/7/contrib/less/ (props changed) projects/graid/7/contrib/libpcap/ (props changed) projects/graid/7/contrib/ncurses/ (props changed) projects/graid/7/contrib/netcat/ (props changed) projects/graid/7/contrib/ntp/ (props changed) projects/graid/7/contrib/nvi/ (props changed) projects/graid/7/contrib/pf/ (props changed) projects/graid/7/contrib/sendmail/ (props changed) projects/graid/7/contrib/smbfs/ (props changed) projects/graid/7/contrib/tcp_wrappers/ (props changed) projects/graid/7/contrib/tcsh/ (props changed) projects/graid/7/contrib/telnet/ (props changed) projects/graid/7/contrib/top/ (props changed) projects/graid/7/contrib/traceroute/ (props changed) projects/graid/7/contrib/wpa_supplicant/ (props changed) projects/graid/7/contrib/wpa_supplicant/COPYING (props changed) projects/graid/7/contrib/wpa_supplicant/ChangeLog (props changed) projects/graid/7/contrib/wpa_supplicant/FREEBSD-Xlist (props changed) projects/graid/7/contrib/wpa_supplicant/FREEBSD-upgrade (props changed) projects/graid/7/contrib/wpa_supplicant/Makefile (props changed) projects/graid/7/contrib/wpa_supplicant/README (props changed) projects/graid/7/contrib/wpa_supplicant/aes.c (props changed) projects/graid/7/contrib/wpa_supplicant/aes.h (props changed) projects/graid/7/contrib/wpa_supplicant/aes_wrap.c (props changed) projects/graid/7/contrib/wpa_supplicant/aes_wrap.h (props changed) projects/graid/7/contrib/wpa_supplicant/asn1.c (props changed) projects/graid/7/contrib/wpa_supplicant/asn1.h (props changed) projects/graid/7/contrib/wpa_supplicant/asn1_test.c (props changed) projects/graid/7/contrib/wpa_supplicant/base64.c (props changed) projects/graid/7/contrib/wpa_supplicant/base64.h (props changed) projects/graid/7/contrib/wpa_supplicant/bignum.c (props changed) projects/graid/7/contrib/wpa_supplicant/bignum.h (props changed) projects/graid/7/contrib/wpa_supplicant/build_config.h (props changed) projects/graid/7/contrib/wpa_supplicant/common.c (props changed) projects/graid/7/contrib/wpa_supplicant/common.h (props changed) projects/graid/7/contrib/wpa_supplicant/config.c (props changed) projects/graid/7/contrib/wpa_supplicant/config.h (props changed) projects/graid/7/contrib/wpa_supplicant/config_file.c (props changed) projects/graid/7/contrib/wpa_supplicant/config_none.c (props changed) projects/graid/7/contrib/wpa_supplicant/config_ssid.h (props changed) projects/graid/7/contrib/wpa_supplicant/config_types.h (props changed) projects/graid/7/contrib/wpa_supplicant/config_winreg.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto.h (props changed) projects/graid/7/contrib/wpa_supplicant/crypto_cryptoapi.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto_gnutls.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto_internal.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto_libtomcrypt.c (props changed) projects/graid/7/contrib/wpa_supplicant/crypto_none.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface.h (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_dbus.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_dbus.h (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_dbus_handlers.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_dbus_handlers.h (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_named_pipe.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_udp.c (props changed) projects/graid/7/contrib/wpa_supplicant/ctrl_iface_unix.c (props changed) projects/graid/7/contrib/wpa_supplicant/dbus-wpa_supplicant.conf (props changed) projects/graid/7/contrib/wpa_supplicant/dbus-wpa_supplicant.service (props changed) projects/graid/7/contrib/wpa_supplicant/dbus_dict_helpers.c (props changed) projects/graid/7/contrib/wpa_supplicant/dbus_dict_helpers.h (props changed) projects/graid/7/contrib/wpa_supplicant/defconfig (props changed) projects/graid/7/contrib/wpa_supplicant/defs.h (props changed) projects/graid/7/contrib/wpa_supplicant/des.c (props changed) projects/graid/7/contrib/wpa_supplicant/doc/ (props changed) projects/graid/7/contrib/wpa_supplicant/driver.h (props changed) projects/graid/7/contrib/wpa_supplicant/driver_hostap.h (props changed) projects/graid/7/contrib/wpa_supplicant/driver_ndis.c (props changed) projects/graid/7/contrib/wpa_supplicant/driver_ndis.h (props changed) projects/graid/7/contrib/wpa_supplicant/driver_wired.c (props changed) projects/graid/7/contrib/wpa_supplicant/drivers.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_aka.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_defs.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_fast.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_gpsk.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_gpsk_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_gpsk_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_gtc.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_i.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_leap.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_md5.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_methods.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_methods.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_mschapv2.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_otp.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_pax.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_pax_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_pax_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_peap.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_psk.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_psk_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_psk_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sake.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sake_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sake_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sim.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sim_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_sim_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_testing.txt (props changed) projects/graid/7/contrib/wpa_supplicant/eap_tls.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_tls_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_tls_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_tlv.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_tlv.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_ttls.c (props changed) projects/graid/7/contrib/wpa_supplicant/eap_ttls.h (props changed) projects/graid/7/contrib/wpa_supplicant/eap_vendor_test.c (props changed) projects/graid/7/contrib/wpa_supplicant/eapol_sm.c (props changed) projects/graid/7/contrib/wpa_supplicant/eapol_sm.h (props changed) projects/graid/7/contrib/wpa_supplicant/eapol_test.c (props changed) projects/graid/7/contrib/wpa_supplicant/eloop.c (props changed) projects/graid/7/contrib/wpa_supplicant/eloop.h (props changed) projects/graid/7/contrib/wpa_supplicant/eloop_none.c (props changed) projects/graid/7/contrib/wpa_supplicant/eloop_win.c (props changed) projects/graid/7/contrib/wpa_supplicant/events.c (props changed) projects/graid/7/contrib/wpa_supplicant/examples/ (props changed) projects/graid/7/contrib/wpa_supplicant/hostapd.h (props changed) projects/graid/7/contrib/wpa_supplicant/includes.h (props changed) projects/graid/7/contrib/wpa_supplicant/l2_packet.h (props changed) projects/graid/7/contrib/wpa_supplicant/libtommath.c (props changed) projects/graid/7/contrib/wpa_supplicant/main.c (props changed) projects/graid/7/contrib/wpa_supplicant/md4.c (props changed) projects/graid/7/contrib/wpa_supplicant/md5.c (props changed) projects/graid/7/contrib/wpa_supplicant/md5.h (props changed) projects/graid/7/contrib/wpa_supplicant/mlme.c (props changed) projects/graid/7/contrib/wpa_supplicant/mlme.h (props changed) projects/graid/7/contrib/wpa_supplicant/ms_funcs.c (props changed) projects/graid/7/contrib/wpa_supplicant/ms_funcs.h (props changed) projects/graid/7/contrib/wpa_supplicant/nmake.mak (props changed) projects/graid/7/contrib/wpa_supplicant/openssl-0.9.8d-tls-extensions.patch (props changed) projects/graid/7/contrib/wpa_supplicant/openssl-0.9.8e-tls-extensions.patch (props changed) projects/graid/7/contrib/wpa_supplicant/openssl-tls-extensions.patch (props changed) projects/graid/7/contrib/wpa_supplicant/os.h (props changed) projects/graid/7/contrib/wpa_supplicant/os_internal.c (props changed) projects/graid/7/contrib/wpa_supplicant/os_none.c (props changed) projects/graid/7/contrib/wpa_supplicant/os_unix.c (props changed) projects/graid/7/contrib/wpa_supplicant/pcsc_funcs.c (props changed) projects/graid/7/contrib/wpa_supplicant/pcsc_funcs.h (props changed) projects/graid/7/contrib/wpa_supplicant/pmksa_cache.c (props changed) projects/graid/7/contrib/wpa_supplicant/pmksa_cache.h (props changed) projects/graid/7/contrib/wpa_supplicant/preauth.c (props changed) projects/graid/7/contrib/wpa_supplicant/preauth.h (props changed) projects/graid/7/contrib/wpa_supplicant/preauth_test.c (props changed) projects/graid/7/contrib/wpa_supplicant/radius.c (props changed) projects/graid/7/contrib/wpa_supplicant/radius.h (props changed) projects/graid/7/contrib/wpa_supplicant/radius_client.c (props changed) projects/graid/7/contrib/wpa_supplicant/radius_client.h (props changed) projects/graid/7/contrib/wpa_supplicant/rc4.c (props changed) projects/graid/7/contrib/wpa_supplicant/rc4.h (props changed) projects/graid/7/contrib/wpa_supplicant/rsa.c (props changed) projects/graid/7/contrib/wpa_supplicant/rsa.h (props changed) projects/graid/7/contrib/wpa_supplicant/sha1.c (props changed) projects/graid/7/contrib/wpa_supplicant/sha1.h (props changed) projects/graid/7/contrib/wpa_supplicant/sha256.c (props changed) projects/graid/7/contrib/wpa_supplicant/sha256.h (props changed) projects/graid/7/contrib/wpa_supplicant/state_machine.h (props changed) projects/graid/7/contrib/wpa_supplicant/tls.h (props changed) projects/graid/7/contrib/wpa_supplicant/tls_gnutls.c (props changed) projects/graid/7/contrib/wpa_supplicant/tls_internal.c (props changed) projects/graid/7/contrib/wpa_supplicant/tls_none.c (props changed) projects/graid/7/contrib/wpa_supplicant/tls_openssl.c (props changed) projects/graid/7/contrib/wpa_supplicant/tls_schannel.c (props changed) projects/graid/7/contrib/wpa_supplicant/tlsv1_client.c (props changed) projects/graid/7/contrib/wpa_supplicant/tlsv1_client.h (props changed) projects/graid/7/contrib/wpa_supplicant/tlsv1_common.c (props changed) projects/graid/7/contrib/wpa_supplicant/tlsv1_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/todo.txt (props changed) projects/graid/7/contrib/wpa_supplicant/version.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa.c (props changed) projects/graid/7/contrib/wpa_supplicant/wpa.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_cli.c (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_common.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_ctrl.c (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_ctrl.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_gui/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_gui-qt4/ (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_i.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_passphrase.c (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.c (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.conf (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant.h (props changed) projects/graid/7/contrib/wpa_supplicant/wpa_supplicant_i.h (props changed) projects/graid/7/contrib/wpa_supplicant/x509v3.c (props changed) projects/graid/7/contrib/wpa_supplicant/x509v3.h (props changed) projects/graid/7/crypto/openssh/ (props changed) projects/graid/7/crypto/openssl/ (props changed) projects/graid/7/etc/ (props changed) projects/graid/7/games/factor/ (props changed) projects/graid/7/games/fortune/ (props changed) projects/graid/7/games/grdc/ (props changed) projects/graid/7/gnu/ (props changed) projects/graid/7/gnu/lib/libstdc++/ (props changed) projects/graid/7/gnu/usr.bin/ (props changed) projects/graid/7/gnu/usr.bin/cc/ (props changed) projects/graid/7/gnu/usr.bin/cpio/ (props changed) projects/graid/7/gnu/usr.bin/cvs/ (props changed) projects/graid/7/gnu/usr.bin/gdb/ (props changed) projects/graid/7/gnu/usr.bin/gdb/kgdb/ (props changed) projects/graid/7/gnu/usr.bin/grep/ (props changed) projects/graid/7/gnu/usr.bin/groff/ (props changed) projects/graid/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/graid/7/gnu/usr.bin/man/ (props changed) projects/graid/7/gnu/usr.bin/sort/ (props changed) projects/graid/7/include/ (props changed) projects/graid/7/kerberos5/ (props changed) projects/graid/7/lib/ (props changed) projects/graid/7/lib/bind/ (props changed) projects/graid/7/lib/csu/ (props changed) projects/graid/7/lib/libarchive/ (props changed) projects/graid/7/lib/libbluetooth/ (props changed) projects/graid/7/lib/libc/ (props changed) projects/graid/7/lib/libc/stdtime/ (props changed) projects/graid/7/lib/libc_r/ (props changed) projects/graid/7/lib/libcam/ (props changed) projects/graid/7/lib/libdisk/ (props changed) projects/graid/7/lib/libdwarf/ (props changed) projects/graid/7/lib/libelf/ (props changed) projects/graid/7/lib/libexpat/ (props changed) projects/graid/7/lib/libfetch/ (props changed) projects/graid/7/lib/libftpio/ (props changed) projects/graid/7/lib/libgeom/ (props changed) projects/graid/7/lib/libgssapi/ (props changed) projects/graid/7/lib/libkse/ (props changed) projects/graid/7/lib/libkvm/ (props changed) projects/graid/7/lib/libmagic/ (props changed) projects/graid/7/lib/libmemstat/ (props changed) projects/graid/7/lib/libpmc/ (props changed) projects/graid/7/lib/libradius/ (props changed) projects/graid/7/lib/libsm/ (props changed) projects/graid/7/lib/libstand/ (props changed) projects/graid/7/lib/libthr/ (props changed) projects/graid/7/lib/libthread_db/ (props changed) projects/graid/7/lib/libufs/ (props changed) projects/graid/7/lib/libutil/ (props changed) projects/graid/7/lib/msun/ (props changed) projects/graid/7/libexec/ (props changed) projects/graid/7/libexec/ftpd/ (props changed) projects/graid/7/libexec/rpc.rquotad/ (props changed) projects/graid/7/libexec/rpc.rstatd/ (props changed) projects/graid/7/libexec/rtld-elf/ (props changed) projects/graid/7/libexec/tftpd/ (props changed) projects/graid/7/release/ (props changed) projects/graid/7/release/doc/ (props changed) projects/graid/7/release/doc/en_US.ISO8859-1/hardware/ (props changed) projects/graid/7/release/picobsd/tinyware/login/ (props changed) projects/graid/7/rescue/ (props changed) projects/graid/7/sbin/ (props changed) projects/graid/7/sbin/atacontrol/ (props changed) projects/graid/7/sbin/bsdlabel/ (props changed) projects/graid/7/sbin/clri/ (props changed) projects/graid/7/sbin/ddb/ (props changed) projects/graid/7/sbin/devd/ (props changed) projects/graid/7/sbin/devfs/ (props changed) projects/graid/7/sbin/dhclient/ (props changed) projects/graid/7/sbin/dumpfs/ (props changed) projects/graid/7/sbin/fdisk/ (props changed) projects/graid/7/sbin/fdisk_pc98/ (props changed) projects/graid/7/sbin/fsck/ (props changed) projects/graid/7/sbin/fsck_ffs/ (props changed) projects/graid/7/sbin/fsck_msdosfs/ (props changed) projects/graid/7/sbin/geom/ (props changed) projects/graid/7/sbin/geom/class/journal/ (props changed) projects/graid/7/sbin/geom/class/label/ (props changed) projects/graid/7/sbin/geom/class/part/ (props changed) projects/graid/7/sbin/geom/class/stripe/ (props changed) projects/graid/7/sbin/geom/misc/ (props changed) projects/graid/7/sbin/growfs/ (props changed) projects/graid/7/sbin/ifconfig/ (props changed) projects/graid/7/sbin/init/ (props changed) projects/graid/7/sbin/ipf/ (props changed) projects/graid/7/sbin/ipfw/ (props changed) projects/graid/7/sbin/md5/ (props changed) projects/graid/7/sbin/mdconfig/ (props changed) projects/graid/7/sbin/mksnap_ffs/ (props changed) projects/graid/7/sbin/mount/ (props changed) projects/graid/7/sbin/mount_msdosfs/ (props changed) projects/graid/7/sbin/natd/ (props changed) projects/graid/7/sbin/newfs/ (props changed) projects/graid/7/sbin/newfs_msdos/ (props changed) projects/graid/7/sbin/ping6/ (props changed) projects/graid/7/sbin/reboot/ (props changed) projects/graid/7/sbin/restore/ (props changed) projects/graid/7/sbin/route/ (props changed) projects/graid/7/sbin/savecore/ (props changed) projects/graid/7/sbin/sconfig/ (props changed) projects/graid/7/sbin/shutdown/ (props changed) projects/graid/7/sbin/sysctl/ (props changed) projects/graid/7/sbin/tunefs/ (props changed) projects/graid/7/secure/lib/libcrypto/ (props changed) projects/graid/7/secure/lib/libssh/ (props changed) projects/graid/7/secure/lib/libssl/ (props changed) projects/graid/7/secure/libexec/sftp-server/ (props changed) projects/graid/7/secure/usr.bin/bdes/ (props changed) projects/graid/7/secure/usr.bin/openssl/ (props changed) projects/graid/7/secure/usr.bin/ssh/ (props changed) projects/graid/7/secure/usr.sbin/sshd/ (props changed) projects/graid/7/share/ (props changed) projects/graid/7/share/colldef/ (props changed) projects/graid/7/share/dict/ (props changed) projects/graid/7/share/doc/bind9/ (props changed) projects/graid/7/share/doc/papers/jail/ (props changed) projects/graid/7/share/doc/smm/01.setup/ (props changed) projects/graid/7/share/examples/ (props changed) projects/graid/7/share/man/ (props changed) projects/graid/7/share/man/man1/ (props changed) projects/graid/7/share/man/man3/ (props changed) projects/graid/7/share/man/man4/ (props changed) projects/graid/7/share/man/man5/ (props changed) projects/graid/7/share/man/man7/ (props changed) projects/graid/7/share/man/man8/ (props changed) projects/graid/7/share/man/man9/ (props changed) projects/graid/7/share/misc/ (props changed) projects/graid/7/share/misc/iso639 (props changed) projects/graid/7/share/misc/pci_vendors (props changed) projects/graid/7/share/mk/ (props changed) projects/graid/7/share/mklocale/ (props changed) projects/graid/7/share/monetdef/ (props changed) projects/graid/7/share/msgdef/ (props changed) projects/graid/7/share/numericdef/ (props changed) projects/graid/7/share/sendmail/ (props changed) projects/graid/7/share/syscons/ (props changed) projects/graid/7/share/syscons/keymaps/ (props changed) projects/graid/7/share/termcap/ (props changed) projects/graid/7/share/timedef/ (props changed) projects/graid/7/share/zoneinfo/ (props changed) projects/graid/7/sys/ (props changed) projects/graid/7/sys/cddl/contrib/opensolaris/ (props changed) projects/graid/7/sys/contrib/dev/acpica/ (props changed) projects/graid/7/sys/contrib/pf/ (props changed) projects/graid/7/tools/ (props changed) projects/graid/7/tools/build/ (props changed) projects/graid/7/tools/build/options/ (props changed) projects/graid/7/tools/debugscripts/ (props changed) projects/graid/7/tools/regression/acct/ (props changed) projects/graid/7/tools/regression/atm/ (props changed) projects/graid/7/tools/regression/bin/ (props changed) projects/graid/7/tools/regression/bin/date/ (props changed) projects/graid/7/tools/regression/bin/sh/ (props changed) projects/graid/7/tools/regression/file/ (props changed) projects/graid/7/tools/regression/file/flock/ (props changed) projects/graid/7/tools/regression/lib/libc/ (props changed) projects/graid/7/tools/regression/usr.bin/ (props changed) projects/graid/7/tools/regression/usr.bin/jot/ (props changed) projects/graid/7/tools/regression/usr.bin/tr/ (props changed) projects/graid/7/tools/sched/ (props changed) projects/graid/7/tools/test/ (props changed) projects/graid/7/tools/tools/ (props changed) projects/graid/7/tools/tools/aac/ (props changed) projects/graid/7/tools/tools/crypto/ (props changed) projects/graid/7/tools/tools/editing/ (props changed) projects/graid/7/tools/tools/nanobsd/ (props changed) projects/graid/7/tools/tools/nanobsd/FlashDevice.sub (props changed) projects/graid/7/tools/tools/nanobsd/nanobsd.sh (props changed) projects/graid/7/tools/tools/netrate/ (props changed) projects/graid/7/tools/tools/tinybsd/ (props changed) projects/graid/7/tools/tools/umastat/ (props changed) projects/graid/7/tools/tools/usb/ (props changed) projects/graid/7/usr.bin/ (props changed) projects/graid/7/usr.bin/basename/ (props changed) projects/graid/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) projects/graid/7/usr.bin/calendar/ (props changed) projects/graid/7/usr.bin/catman/ (props changed) projects/graid/7/usr.bin/cksum/ (props changed) projects/graid/7/usr.bin/comm/ (props changed) projects/graid/7/usr.bin/cpuset/ (props changed) projects/graid/7/usr.bin/csup/ (props changed) projects/graid/7/usr.bin/dirname/ (props changed) projects/graid/7/usr.bin/du/ (props changed) projects/graid/7/usr.bin/fetch/ (props changed) projects/graid/7/usr.bin/file/ (props changed) projects/graid/7/usr.bin/find/ (props changed) projects/graid/7/usr.bin/finger/ (props changed) projects/graid/7/usr.bin/fold/ (props changed) projects/graid/7/usr.bin/fstat/ (props changed) projects/graid/7/usr.bin/gcore/ (props changed) projects/graid/7/usr.bin/getopt/ (props changed) projects/graid/7/usr.bin/gprof/ (props changed) projects/graid/7/usr.bin/gzip/ (props changed) projects/graid/7/usr.bin/hexdump/ (props changed) projects/graid/7/usr.bin/id/ (props changed) projects/graid/7/usr.bin/indent/ (props changed) projects/graid/7/usr.bin/ipcrm/ (props changed) projects/graid/7/usr.bin/ipcs/ (props changed) projects/graid/7/usr.bin/jot/ (props changed) projects/graid/7/usr.bin/kdump/ (props changed) projects/graid/7/usr.bin/ktrace/ (props changed) projects/graid/7/usr.bin/ldd/ (props changed) projects/graid/7/usr.bin/less/ (props changed) projects/graid/7/usr.bin/lex/ (props changed) projects/graid/7/usr.bin/locate/ (props changed) projects/graid/7/usr.bin/lockf/ (props changed) projects/graid/7/usr.bin/logger/ (props changed) projects/graid/7/usr.bin/m4/ (props changed) projects/graid/7/usr.bin/mail/ (props changed) projects/graid/7/usr.bin/make/ (props changed) projects/graid/7/usr.bin/ncal/ (props changed) projects/graid/7/usr.bin/netstat/ (props changed) projects/graid/7/usr.bin/newgrp/ (props changed) projects/graid/7/usr.bin/nsupdate/ (props changed) projects/graid/7/usr.bin/pkill/ (props changed) projects/graid/7/usr.bin/procstat/ (props changed) projects/graid/7/usr.bin/quota/ (props changed) projects/graid/7/usr.bin/rpcgen/ (props changed) projects/graid/7/usr.bin/rpcinfo/ (props changed) projects/graid/7/usr.bin/ruptime/ (props changed) projects/graid/7/usr.bin/script/ (props changed) projects/graid/7/usr.bin/sed/ (props changed) projects/graid/7/usr.bin/shar/ (props changed) projects/graid/7/usr.bin/sockstat/ (props changed) projects/graid/7/usr.bin/stat/ (props changed) projects/graid/7/usr.bin/su/ (props changed) projects/graid/7/usr.bin/systat/ (props changed) projects/graid/7/usr.bin/tail/ (props changed) projects/graid/7/usr.bin/tar/ (props changed) projects/graid/7/usr.bin/tftp/ (props changed) projects/graid/7/usr.bin/tip/ (props changed) projects/graid/7/usr.bin/top/ (props changed) projects/graid/7/usr.bin/truncate/ (props changed) projects/graid/7/usr.bin/truss/ (props changed) projects/graid/7/usr.bin/uname/ (props changed) projects/graid/7/usr.bin/unifdef/ (props changed) projects/graid/7/usr.bin/units/ (props changed) projects/graid/7/usr.bin/uudecode/ (props changed) projects/graid/7/usr.bin/vmstat/ (props changed) projects/graid/7/usr.bin/w/ (props changed) projects/graid/7/usr.bin/wc/ (props changed) projects/graid/7/usr.bin/whereis/ (props changed) projects/graid/7/usr.bin/whois/ (props changed) projects/graid/7/usr.bin/window/ (props changed) projects/graid/7/usr.bin/xargs/ (props changed) projects/graid/7/usr.bin/xinstall/ (props changed) projects/graid/7/usr.bin/ypcat/ (props changed) projects/graid/7/usr.bin/ypmatch/ (props changed) projects/graid/7/usr.bin/ypwhich/ (props changed) projects/graid/7/usr.sbin/ (props changed) projects/graid/7/usr.sbin/IPXrouted/ (props changed) projects/graid/7/usr.sbin/Makefile (props changed) projects/graid/7/usr.sbin/Makefile.inc (props changed) projects/graid/7/usr.sbin/ac/ (props changed) projects/graid/7/usr.sbin/accton/ (props changed) projects/graid/7/usr.sbin/acpi/ (props changed) projects/graid/7/usr.sbin/adduser/ (props changed) projects/graid/7/usr.sbin/amd/ (props changed) projects/graid/7/usr.sbin/ancontrol/ (props changed) projects/graid/7/usr.sbin/apm/ (props changed) projects/graid/7/usr.sbin/apmd/ (props changed) projects/graid/7/usr.sbin/arlcontrol/ (props changed) projects/graid/7/usr.sbin/arp/ (props changed) projects/graid/7/usr.sbin/asf/ (props changed) projects/graid/7/usr.sbin/audit/ (props changed) projects/graid/7/usr.sbin/auditd/ (props changed) projects/graid/7/usr.sbin/auditreduce/ (props changed) projects/graid/7/usr.sbin/authpf/ (props changed) projects/graid/7/usr.sbin/bluetooth/ (props changed) projects/graid/7/usr.sbin/bluetooth/btpand/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcsecd/ (props changed) projects/graid/7/usr.sbin/bluetooth/hcseriald/ (props changed) projects/graid/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) projects/graid/7/usr.sbin/bluetooth/sdpd/ (props changed) projects/graid/7/usr.sbin/boot0cfg/ (props changed) projects/graid/7/usr.sbin/boot98cfg/ (props changed) projects/graid/7/usr.sbin/bootparamd/ (props changed) projects/graid/7/usr.sbin/bsnmpd/ (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c (props changed) projects/graid/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/graid/7/usr.sbin/btxld/ (props changed) projects/graid/7/usr.sbin/burncd/ (props changed) projects/graid/7/usr.sbin/cdcontrol/ (props changed) projects/graid/7/usr.sbin/chkgrp/ (props changed) projects/graid/7/usr.sbin/chown/ (props changed) projects/graid/7/usr.sbin/chroot/ (props changed) projects/graid/7/usr.sbin/ckdist/ (props changed) projects/graid/7/usr.sbin/clear_locks/ (props changed) projects/graid/7/usr.sbin/config/ (props changed) projects/graid/7/usr.sbin/config/SMM.doc/ (props changed) projects/graid/7/usr.sbin/cpucontrol/ (props changed) projects/graid/7/usr.sbin/crashinfo/ (props changed) projects/graid/7/usr.sbin/cron/ (props changed) projects/graid/7/usr.sbin/cron/cron/ (props changed) projects/graid/7/usr.sbin/crunch/ (props changed) projects/graid/7/usr.sbin/ctm/ (props changed) projects/graid/7/usr.sbin/cxgbtool/ (props changed) projects/graid/7/usr.sbin/daemon/ (props changed) projects/graid/7/usr.sbin/dconschat/ (props changed) projects/graid/7/usr.sbin/devinfo/ (props changed) projects/graid/7/usr.sbin/digictl/ (props changed) projects/graid/7/usr.sbin/diskinfo/ (props changed) projects/graid/7/usr.sbin/dnssec-keygen/ (props changed) projects/graid/7/usr.sbin/dnssec-signzone/ (props changed) projects/graid/7/usr.sbin/editmap/ (props changed) projects/graid/7/usr.sbin/edquota/ (props changed) projects/graid/7/usr.sbin/eeprom/ (props changed) projects/graid/7/usr.sbin/extattr/ (props changed) projects/graid/7/usr.sbin/extattrctl/ (props changed) projects/graid/7/usr.sbin/faithd/ (props changed) projects/graid/7/usr.sbin/fdcontrol/ (props changed) projects/graid/7/usr.sbin/fdformat/ (props changed) projects/graid/7/usr.sbin/fdread/ (props changed) projects/graid/7/usr.sbin/fdwrite/ (props changed) projects/graid/7/usr.sbin/fifolog/ (props changed) projects/graid/7/usr.sbin/flowctl/ (props changed) projects/graid/7/usr.sbin/freebsd-update/ (props changed) projects/graid/7/usr.sbin/ftp-proxy/ (props changed) projects/graid/7/usr.sbin/fwcontrol/ (props changed) projects/graid/7/usr.sbin/getfmac/ (props changed) projects/graid/7/usr.sbin/getpmac/ (props changed) projects/graid/7/usr.sbin/gstat/ (props changed) projects/graid/7/usr.sbin/i4b/ (props changed) projects/graid/7/usr.sbin/ifmcstat/ (props changed) projects/graid/7/usr.sbin/inetd/ (props changed) projects/graid/7/usr.sbin/iostat/ (props changed) projects/graid/7/usr.sbin/ip6addrctl/ (props changed) projects/graid/7/usr.sbin/ipfwpcap/ (props changed) projects/graid/7/usr.sbin/jail/ (props changed) projects/graid/7/usr.sbin/jexec/ (props changed) projects/graid/7/usr.sbin/jls/ (props changed) projects/graid/7/usr.sbin/kbdcontrol/ (props changed) projects/graid/7/usr.sbin/kbdmap/ (props changed) projects/graid/7/usr.sbin/kernbb/ (props changed) projects/graid/7/usr.sbin/keyserv/ (props changed) projects/graid/7/usr.sbin/kgmon/ (props changed) projects/graid/7/usr.sbin/kgzip/ (props changed) projects/graid/7/usr.sbin/kldxref/ (props changed) projects/graid/7/usr.sbin/lastlogin/ (props changed) projects/graid/7/usr.sbin/lmcconfig/ (props changed) projects/graid/7/usr.sbin/lpr/ (props changed) projects/graid/7/usr.sbin/lptcontrol/ (props changed) projects/graid/7/usr.sbin/mailstats/ (props changed) projects/graid/7/usr.sbin/mailwrapper/ (props changed) projects/graid/7/usr.sbin/makefs/ (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) projects/graid/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) projects/graid/7/usr.sbin/makefs/getid.c (props changed) projects/graid/7/usr.sbin/makemap/ (props changed) projects/graid/7/usr.sbin/manctl/ (props changed) projects/graid/7/usr.sbin/memcontrol/ (props changed) projects/graid/7/usr.sbin/mergemaster/ (props changed) projects/graid/7/usr.sbin/mfiutil/ (props changed) projects/graid/7/usr.sbin/mixer/ (props changed) projects/graid/7/usr.sbin/mld6query/ (props changed) projects/graid/7/usr.sbin/mlxcontrol/ (props changed) projects/graid/7/usr.sbin/mount_nwfs/ (props changed) projects/graid/7/usr.sbin/mount_portalfs/ (props changed) projects/graid/7/usr.sbin/mount_smbfs/ (props changed) projects/graid/7/usr.sbin/mountd/ (props changed) projects/graid/7/usr.sbin/moused/ (props changed) projects/graid/7/usr.sbin/mptable/ (props changed) projects/graid/7/usr.sbin/mptutil/ (props changed) projects/graid/7/usr.sbin/mtest/ (props changed) projects/graid/7/usr.sbin/mtree/ (props changed) projects/graid/7/usr.sbin/named/ (props changed) projects/graid/7/usr.sbin/named-checkconf/ (props changed) projects/graid/7/usr.sbin/named-checkzone/ (props changed) projects/graid/7/usr.sbin/named.reload/ (props changed) projects/graid/7/usr.sbin/ndiscvt/ (props changed) projects/graid/7/usr.sbin/ndp/ (props changed) projects/graid/7/usr.sbin/newsyslog/ (props changed) projects/graid/7/usr.sbin/nfsd/ (props changed) projects/graid/7/usr.sbin/ngctl/ (props changed) projects/graid/7/usr.sbin/nghook/ (props changed) projects/graid/7/usr.sbin/nologin/ (props changed) projects/graid/7/usr.sbin/nscd/ (props changed) projects/graid/7/usr.sbin/ntp/ (props changed) projects/graid/7/usr.sbin/nvram/ (props changed) projects/graid/7/usr.sbin/ofwdump/ (props changed) projects/graid/7/usr.sbin/pccard/ (props changed) projects/graid/7/usr.sbin/pciconf/ (props changed) projects/graid/7/usr.sbin/periodic/ (props changed) projects/graid/7/usr.sbin/pkg_install/ (props changed) projects/graid/7/usr.sbin/pmcannotate/ (props changed) projects/graid/7/usr.sbin/pmccontrol/ (props changed) projects/graid/7/usr.sbin/pmcstat/ (props changed) projects/graid/7/usr.sbin/pnpinfo/ (props changed) projects/graid/7/usr.sbin/portsnap/ (props changed) projects/graid/7/usr.sbin/powerd/ (props changed) projects/graid/7/usr.sbin/ppp/ (props changed) projects/graid/7/usr.sbin/pppctl/ (props changed) projects/graid/7/usr.sbin/pppd/ (props changed) projects/graid/7/usr.sbin/pppstats/ (props changed) projects/graid/7/usr.sbin/praliases/ (props changed) projects/graid/7/usr.sbin/praudit/ (props changed) projects/graid/7/usr.sbin/procctl/ (props changed) projects/graid/7/usr.sbin/pstat/ (props changed) projects/graid/7/usr.sbin/pw/ (props changed) projects/graid/7/usr.sbin/pwd_mkdb/ (props changed) projects/graid/7/usr.sbin/quot/ (props changed) projects/graid/7/usr.sbin/quotaon/ (props changed) projects/graid/7/usr.sbin/rarpd/ (props changed) projects/graid/7/usr.sbin/raycontrol/ (props changed) projects/graid/7/usr.sbin/repquota/ (props changed) projects/graid/7/usr.sbin/rip6query/ (props changed) projects/graid/7/usr.sbin/rmt/ (props changed) projects/graid/7/usr.sbin/rndc/ (props changed) projects/graid/7/usr.sbin/rndc-confgen/ (props changed) projects/graid/7/usr.sbin/route6d/ (props changed) projects/graid/7/usr.sbin/rpc.lockd/ (props changed) projects/graid/7/usr.sbin/rpc.statd/ (props changed) projects/graid/7/usr.sbin/rpc.umntall/ (props changed) projects/graid/7/usr.sbin/rpc.yppasswdd/ (props changed) projects/graid/7/usr.sbin/rpc.ypupdated/ (props changed) projects/graid/7/usr.sbin/rpc.ypxfrd/ (props changed) projects/graid/7/usr.sbin/rpcbind/ (props changed) projects/graid/7/usr.sbin/rrenumd/ (props changed) projects/graid/7/usr.sbin/rtadvd/ (props changed) projects/graid/7/usr.sbin/rtprio/ (props changed) projects/graid/7/usr.sbin/rtsold/ (props changed) projects/graid/7/usr.sbin/rwhod/ (props changed) projects/graid/7/usr.sbin/sa/ (props changed) projects/graid/7/usr.sbin/sade/ (props changed) projects/graid/7/usr.sbin/sendmail/ (props changed) projects/graid/7/usr.sbin/service/ (props changed) projects/graid/7/usr.sbin/service/Makefile (props changed) projects/graid/7/usr.sbin/service/service.8 (props changed) projects/graid/7/usr.sbin/service/service.sh (props changed) projects/graid/7/usr.sbin/setfib/ (props changed) projects/graid/7/usr.sbin/setfmac/ (props changed) projects/graid/7/usr.sbin/setpmac/ (props changed) projects/graid/7/usr.sbin/sicontrol/ (props changed) projects/graid/7/usr.sbin/sliplogin/ (props changed) projects/graid/7/usr.sbin/slstat/ (props changed) projects/graid/7/usr.sbin/smbmsg/ (props changed) projects/graid/7/usr.sbin/snapinfo/ (props changed) projects/graid/7/usr.sbin/spkrtest/ (props changed) projects/graid/7/usr.sbin/spray/ (props changed) projects/graid/7/usr.sbin/sysinstall/ (props changed) projects/graid/7/usr.sbin/syslogd/ (props changed) projects/graid/7/usr.sbin/tcpdchk/ (props changed) projects/graid/7/usr.sbin/tcpdmatch/ (props changed) projects/graid/7/usr.sbin/tcpdrop/ (props changed) projects/graid/7/usr.sbin/tcpdump/ (props changed) projects/graid/7/usr.sbin/timed/ (props changed) projects/graid/7/usr.sbin/traceroute/ (props changed) projects/graid/7/usr.sbin/traceroute6/ (props changed) projects/graid/7/usr.sbin/trpt/ (props changed) projects/graid/7/usr.sbin/tzsetup/ (props changed) projects/graid/7/usr.sbin/ugidfw/ (props changed) projects/graid/7/usr.sbin/usbdevs/ (props changed) projects/graid/7/usr.sbin/vidcontrol/ (props changed) projects/graid/7/usr.sbin/vipw/ (props changed) projects/graid/7/usr.sbin/watch/ (props changed) projects/graid/7/usr.sbin/watchdogd/ (props changed) projects/graid/7/usr.sbin/wlandebug/ (props changed) projects/graid/7/usr.sbin/wlconfig/ (props changed) projects/graid/7/usr.sbin/wpa/ (props changed) projects/graid/7/usr.sbin/wpa/wpa_supplicant/ (props changed) projects/graid/7/usr.sbin/yp_mkdb/ (props changed) projects/graid/7/usr.sbin/ypbind/ (props changed) projects/graid/7/usr.sbin/yppoll/ (props changed) projects/graid/7/usr.sbin/yppush/ (props changed) projects/graid/7/usr.sbin/ypserv/ (props changed) projects/graid/7/usr.sbin/ypset/ (props changed) projects/graid/7/usr.sbin/zic/ (props changed) projects/graid/7/usr.sbin/zzz/ (props changed) Modified: projects/graid/7/sbin/geom/class/raid/graid.8 ============================================================================== --- projects/graid/7/sbin/geom/class/raid/graid.8 Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sbin/geom/class/raid/graid.8 Thu Mar 24 09:12:54 2011 (r219953) @@ -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/7/sys/conf/files ============================================================================== --- projects/graid/7/sys/conf/files Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/conf/files Thu Mar 24 09:12:54 2011 (r219953) @@ -1534,6 +1534,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/7/sys/geom/raid/g_raid.c ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.c Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/geom/raid/g_raid.c Thu Mar 24 09:12:54 2011 (r219953) @@ -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) @@ -1524,6 +1523,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. */ @@ -1693,7 +1696,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; @@ -1703,6 +1706,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); @@ -1715,15 +1720,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(); @@ -1821,6 +1835,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); @@ -1871,12 +1886,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. */ @@ -1898,6 +1917,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); @@ -1906,6 +1926,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/7/sys/geom/raid/g_raid.h ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid.h Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/geom/raid/g_raid.h Thu Mar 24 09:12:54 2011 (r219953) @@ -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/7/sys/geom/raid/g_raid_md_if.m ============================================================================== --- projects/graid/7/sys/geom/raid/g_raid_md_if.m Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/geom/raid/g_raid_md_if.m Thu Mar 24 09:12:54 2011 (r219953) @@ -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/7/sys/geom/raid/md_intel.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_intel.c Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/geom/raid/md_intel.c Thu Mar 24 09:12:54 2011 (r219953) @@ -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/7/sys/geom/raid/md_jmicron.c ============================================================================== --- projects/graid/7/sys/geom/raid/md_jmicron.c Thu Mar 24 09:12:03 2011 (r219952) +++ projects/graid/7/sys/geom/raid/md_jmicron.c Thu Mar 24 09:12:54 2011 (r219953) @@ -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/7/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/7/sys/geom/raid/md_nvidia.c Thu Mar 24 09:12:54 2011 (r219953) @@ -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 ***