svn commit: r218439 - in projects/graid/7: . contrib/bsnmp/snmpd contrib/wpa_supplicant gnu/usr.bin/groff/tmac sbin/geom/class/raid share/misc sys/geom/raid tools/tools/nanobsd usr.sbin usr.sbin/bs...

Alexander Motin mav at FreeBSD.org
Tue Feb 8 13:04:51 UTC 2011


Author: mav
Date: Tue Feb  8 13:04:51 2011
New Revision: 218439
URL: http://svn.freebsd.org/changeset/base/218439

Log:
  MFH
  r218321, r218322, r218336, r218364, r218367, r218380, r218381,
  r218394, r218399, r218401, r218404, r218405, r218406, r218407,
  r218408, r218418, r218435.

Modified:
  projects/graid/7/sbin/geom/class/raid/geom_raid.c
  projects/graid/7/sbin/geom/class/raid/graid.8
  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_ctl.c
  projects/graid/7/sys/geom/raid/md_intel.c
  projects/graid/7/sys/geom/raid/tr_raid0.c
  projects/graid/7/sys/geom/raid/tr_raid1.c
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/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/wpa_supplicant.conf   (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/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/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/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/locate/   (props changed)
  projects/graid/7/usr.bin/lockf/   (props changed)
  projects/graid/7/usr.bin/logger/   (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/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/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/Makefile   (props changed)
  projects/graid/7/usr.sbin/acpi/   (props changed)
  projects/graid/7/usr.sbin/adduser/   (props changed)
  projects/graid/7/usr.sbin/arp/   (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/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/burncd/   (props changed)
  projects/graid/7/usr.sbin/cdcontrol/   (props changed)
  projects/graid/7/usr.sbin/chown/   (props changed)
  projects/graid/7/usr.sbin/chroot/   (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/cxgbtool/   (props changed)
  projects/graid/7/usr.sbin/eeprom/   (props changed)
  projects/graid/7/usr.sbin/extattr/   (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/freebsd-update/   (props changed)
  projects/graid/7/usr.sbin/fwcontrol/   (props changed)
  projects/graid/7/usr.sbin/gstat/   (props changed)
  projects/graid/7/usr.sbin/iostat/   (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/lpr/   (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/mergemaster/   (props changed)
  projects/graid/7/usr.sbin/mfiutil/   (props changed)
  projects/graid/7/usr.sbin/mountd/   (props changed)
  projects/graid/7/usr.sbin/mptutil/   (props changed)
  projects/graid/7/usr.sbin/mtree/   (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/nscd/   (props changed)
  projects/graid/7/usr.sbin/ntp/   (props changed)
  projects/graid/7/usr.sbin/pciconf/   (props changed)
  projects/graid/7/usr.sbin/pkg_install/   (props changed)
  projects/graid/7/usr.sbin/pmccontrol/   (props changed)
  projects/graid/7/usr.sbin/pmcstat/   (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/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/rpc.lockd/   (props changed)
  projects/graid/7/usr.sbin/rpc.statd/   (props changed)
  projects/graid/7/usr.sbin/rpc.yppasswdd/   (props changed)
  projects/graid/7/usr.sbin/rtadvd/   (props changed)
  projects/graid/7/usr.sbin/rtsold/   (props changed)
  projects/graid/7/usr.sbin/sade/   (props changed)
  projects/graid/7/usr.sbin/service/   (props changed)
  projects/graid/7/usr.sbin/setfib/   (props changed)
  projects/graid/7/usr.sbin/sysinstall/   (props changed)
  projects/graid/7/usr.sbin/syslogd/   (props changed)
  projects/graid/7/usr.sbin/traceroute/   (props changed)
  projects/graid/7/usr.sbin/traceroute6/   (props changed)
  projects/graid/7/usr.sbin/tzsetup/   (props changed)
  projects/graid/7/usr.sbin/ugidfw/   (props changed)
  projects/graid/7/usr.sbin/wpa/wpa_supplicant/   (props changed)
  projects/graid/7/usr.sbin/ypserv/   (props changed)
  projects/graid/7/usr.sbin/zic/   (props changed)

Modified: projects/graid/7/sbin/geom/class/raid/geom_raid.c
==============================================================================
--- projects/graid/7/sbin/geom/class/raid/geom_raid.c	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sbin/geom/class/raid/geom_raid.c	Tue Feb  8 13:04:51 2011	(r218439)
@@ -63,8 +63,12 @@ struct g_command class_commands[] = {
 	    },
 	    NULL, "[-S size] [-s stripsize] name label level"
 	},
-	{ "delete", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
-	    "[-v] name [label|num]"
+	{ "delete", G_FLAG_VERBOSE, NULL,
+	    {
+		{ 'f', "force", NULL, G_TYPE_BOOL },
+		G_OPT_SENTINEL
+	    },
+	    NULL, "[-fv] name [label|num]"
 	},
 	{ "insert", G_FLAG_VERBOSE, NULL, G_NULL_OPTS, NULL,
 	    "[-v] name prov ..."

Modified: projects/graid/7/sbin/geom/class/raid/graid.8
==============================================================================
--- projects/graid/7/sbin/geom/class/raid/graid.8	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sbin/geom/class/raid/graid.8	Tue Feb  8 13:04:51 2011	(r218439)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 3, 2011
+.Dd February 5, 2011
 .Dt GRAID 8
 .Os
 .Sh NAME
@@ -48,6 +48,7 @@
 .Ar level
 .Nm
 .Cm delete
+.Op Fl f
 .Ar name
 .Op Ar label | Ar num
 .Nm
@@ -142,6 +143,12 @@ Optional
 or
 .Ar num
 arguments allow specifying volume for deletion.
+.Pp
+Additional options include:
+.Bl -tag -width ".Fl f"
+.It Fl f
+Delete volume(s) even if it is still open.
+.El
 .It Cm insert
 Insert specified provider(s) into specified array instead of the first missing
 or failed components.

Modified: projects/graid/7/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.c	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sys/geom/raid/g_raid.c	Tue Feb  8 13:04:51 2011	(r218439)
@@ -133,6 +133,8 @@ g_raid_node_event2str(int event)
 {
 
 	switch (event) {
+	case G_RAID_NODE_E_WAKE:
+		return ("WAKE");
 	case G_RAID_NODE_E_START:
 		return ("START");
 	default:
@@ -187,10 +189,12 @@ g_raid_subdisk_state2str(int state)
 		return ("FAILED");
 	case G_RAID_SUBDISK_S_NEW:
 		return ("NEW");
-	case G_RAID_SUBDISK_S_STALE:
-		return ("STALE");
 	case G_RAID_SUBDISK_S_REBUILD:
 		return ("REBUILD");
+	case G_RAID_SUBDISK_S_UNINITIALIZED:
+		return ("UNINITIALIZED");
+	case G_RAID_SUBDISK_S_STALE:
+		return ("STALE");
 	case G_RAID_SUBDISK_S_RESYNC:
 		return ("RESYNC");
 	case G_RAID_SUBDISK_S_ACTIVE:
@@ -323,7 +327,7 @@ g_raid_volume_str2level(const char *str,
 	return (0);
 }
 
-static const char *
+const char *
 g_raid_get_diskname(struct g_raid_disk *disk)
 {
 
@@ -332,15 +336,6 @@ g_raid_get_diskname(struct g_raid_disk *
 	return (disk->d_consumer->provider->name);
 }
 
-static const char *
-g_raid_get_subdiskname(struct g_raid_subdisk *subdisk)
-{
-
-	if (subdisk->sd_disk == NULL)
-		return ("[unknown]");
-	return (g_raid_get_diskname(subdisk->sd_disk));
-}
-
 void
 g_raid_report_disk_state(struct g_raid_disk *disk)
 {
@@ -372,7 +367,7 @@ g_raid_report_disk_state(struct g_raid_d
 	}
 	len = sizeof(s);
 	g_io_getattr("GEOM::setstate", disk->d_consumer, &len, &s);
-	G_RAID_DEBUG(2, "Disk %s state reported as %d.",
+	G_RAID_DEBUG1(2, disk->d_softc, "Disk %s state reported as %d.",
 	    g_raid_get_diskname(disk), s);
 }
 
@@ -380,7 +375,7 @@ void
 g_raid_change_disk_state(struct g_raid_disk *disk, int state)
 {
 
-	G_RAID_DEBUG(1, "Disk %s state changed from %s to %s.",
+	G_RAID_DEBUG1(0, disk->d_softc, "Disk %s state changed from %s to %s.",
 	    g_raid_get_diskname(disk),
 	    g_raid_disk_state2str(disk->d_state),
 	    g_raid_disk_state2str(state));
@@ -392,8 +387,10 @@ void
 g_raid_change_subdisk_state(struct g_raid_subdisk *sd, int state)
 {
 
-	G_RAID_DEBUG(1, "Subdisk %s state changed from %s to %s.",
-	    g_raid_get_subdiskname(sd),
+	G_RAID_DEBUG1(0, sd->sd_softc,
+	    "Subdisk %s:%d-%s state changed from %s to %s.",
+	    sd->sd_volume->v_name, sd->sd_pos,
+	    sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]",
 	    g_raid_subdisk_state2str(sd->sd_state),
 	    g_raid_subdisk_state2str(state));
 	sd->sd_state = state;
@@ -405,7 +402,8 @@ void
 g_raid_change_volume_state(struct g_raid_volume *vol, int state)
 {
 
-	G_RAID_DEBUG(1, "Volume %s state changed from %s to %s.",
+	G_RAID_DEBUG1(0, vol->v_softc,
+	    "Volume %s state changed from %s to %s.",
 	    vol->v_name,
 	    g_raid_volume_state2str(vol->v_state),
 	    g_raid_volume_state2str(state));
@@ -432,7 +430,6 @@ g_raid_event_send(void *arg, int event, 
 	int error;
 
 	ep = malloc(sizeof(*ep), M_RAID, M_WAITOK);
-	G_RAID_DEBUG(4, "%s: Sending event %p.", __func__, ep);
 	if ((flags & G_RAID_EVENT_VOLUME) != 0) {
 		sc = ((struct g_raid_volume *)arg)->v_softc;
 	} else if ((flags & G_RAID_EVENT_DISK) != 0) {
@@ -446,7 +443,7 @@ g_raid_event_send(void *arg, int event, 
 	ep->e_event = event;
 	ep->e_flags = flags;
 	ep->e_error = 0;
-	G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc);
+	G_RAID_DEBUG1(4, sc, "Sending event %p. Waking up %p.", ep, sc);
 	mtx_lock(&sc->sc_queue_mtx);
 	TAILQ_INSERT_TAIL(&sc->sc_events, ep, e_next);
 	mtx_unlock(&sc->sc_queue_mtx);
@@ -456,7 +453,7 @@ g_raid_event_send(void *arg, int event, 
 		return (0);
 
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
-	G_RAID_DEBUG(4, "%s: Sleeping %p.", __func__, ep);
+	G_RAID_DEBUG1(4, sc, "Sleeping on %p.", ep);
 	sx_xunlock(&sc->sc_lock);
 	while ((ep->e_flags & G_RAID_EVENT_DONE) == 0) {
 		mtx_lock(&sc->sc_queue_mtx);
@@ -561,6 +558,30 @@ g_raid_nsubdisks(struct g_raid_volume *v
 	return (n);
 }
 
+/*
+ * Return the first subdisk in given state.
+ * If state is equal to -1, then the first connected disks.
+ */
+struct g_raid_subdisk *
+g_raid_get_subdisk(struct g_raid_volume *vol, int state)
+{
+	struct g_raid_subdisk *sd;
+	struct g_raid_softc *sc;
+	u_int i;
+
+	sc = vol->v_softc;
+	sx_assert(&sc->sc_lock, SX_LOCKED);
+
+	for (i = 0; i < vol->v_disks_count; i++) {
+		sd = &vol->v_subdisks[i];
+		if ((state == -1 &&
+		     sd->sd_state != G_RAID_SUBDISK_S_NONE) ||
+		    sd->sd_state == state)
+			return (sd);
+	}
+	return (NULL);
+}
+
 static u_int
 g_raid_nrequests(struct g_raid_softc *sc, struct g_consumer *cp)
 {
@@ -576,18 +597,32 @@ g_raid_nrequests(struct g_raid_softc *sc
 	return (nreqs);
 }
 
+u_int
+g_raid_nopens(struct g_raid_softc *sc)
+{
+	struct g_raid_volume *vol;
+	u_int opens;
+
+	opens = 0;
+	TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
+		if (vol->v_provider_open != 0)
+			opens++;
+	}
+	return (opens);
+}
+
 static int
 g_raid_consumer_is_busy(struct g_raid_softc *sc, struct g_consumer *cp)
 {
 
 	if (cp->index > 0) {
-		G_RAID_DEBUG(2,
+		G_RAID_DEBUG1(2, sc,
 		    "I/O requests for %s exist, can't destroy it now.",
 		    cp->provider->name);
 		return (1);
 	}
 	if (g_raid_nrequests(sc, cp) > 0) {
-		G_RAID_DEBUG(2,
+		G_RAID_DEBUG1(2, sc,
 		    "I/O requests for %s in queue, can't destroy it now.",
 		    cp->provider->name);
 		return (1);
@@ -625,8 +660,6 @@ g_raid_kill_consumer(struct g_raid_softc
 		if ((pp->geom->flags & G_GEOM_WITHER) == 0)
 			retaste_wait = 1;
 	}
-	G_RAID_DEBUG(2, "Access %s r%dw%de%d = %d", pp->name, -cp->acr,
-	    -cp->acw, -cp->ace, 0);
 	if (cp->acr > 0 || cp->acw > 0 || cp->ace > 0)
 		g_access(cp, -cp->acr, -cp->acw, -cp->ace);
 	if (retaste_wait) {
@@ -684,8 +717,8 @@ g_raid_clean(struct g_raid_volume *vol, 
 			return (timeout);
 	}
 	vol->v_dirty = 0;
-	G_RAID_DEBUG(1, "Volume %s (node %s) marked as clean.",
-	    vol->v_name, sc->sc_name);
+	G_RAID_DEBUG1(1, sc, "Volume %s marked as clean.",
+	    vol->v_name);
 	g_raid_write_metadata(sc, vol, NULL, NULL);
 	return (0);
 }
@@ -702,8 +735,8 @@ g_raid_dirty(struct g_raid_volume *vol)
 //	if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0)
 //		return;
 	vol->v_dirty = 1;
-	G_RAID_DEBUG(1, "Volume %s (node %s) marked as dirty.",
-	    vol->v_name, sc->sc_name);
+	G_RAID_DEBUG1(1, sc, "Volume %s marked as dirty.",
+	    vol->v_name);
 	g_raid_write_metadata(sc, vol, NULL, NULL);
 }
 
@@ -736,7 +769,7 @@ g_raid_tr_kerneldump_common(struct g_rai
 
 	g_raid_start(&bp);
 	while (!(bp.bio_flags & BIO_DONE)) {
-		G_RAID_DEBUG(4, "Poll...");
+		G_RAID_DEBUG1(4, sc, "Poll...");
 		g_raid_poll(sc);
 		DELAY(10);
 	}
@@ -752,14 +785,11 @@ g_raid_dump(void *arg,
 	int error;
 
 	vol = (struct g_raid_volume *)arg;
-	G_RAID_DEBUG(3, "Dumping at off %llu len %llu.",
+	G_RAID_DEBUG1(3, vol->v_softc, "Dumping at off %llu len %llu.",
 	    (long long unsigned)offset, (long long unsigned)length);
 
 	error = G_RAID_TR_KERNELDUMP(vol->v_tr,
 	    virtual, physical, offset, length);
-
-	G_RAID_DEBUG(3, "Dumping at off %llu len %llu done: %d.",
-	    (long long unsigned)offset, (long long unsigned)length, error);
 	return (error);
 }
 
@@ -822,7 +852,7 @@ g_raid_start(struct bio *bp)
 	bioq_disksort(&sc->sc_queue, bp);
 	mtx_unlock(&sc->sc_queue_mtx);
 	if (!dumping) {
-		G_RAID_DEBUG(4, "%s: Waking up %p.", __func__, sc);
+		G_RAID_DEBUG1(4, sc, "Waking up %p.", sc);
 		wakeup(sc);
 	}
 }
@@ -932,13 +962,13 @@ g_raid_finish_with_locked_ranges(struct 
 			}
 			if (lp->l_pending) {
 				vol->v_pending_lock = 1;
-				G_RAID_DEBUG(4,
+				G_RAID_DEBUG1(4, vol->v_softc,
 				    "Deferred lock(%jd, %jd) has %d pending",
 				    (intmax_t)off, (intmax_t)(off + len),
 				    lp->l_pending);
 				continue;
 			}
-			G_RAID_DEBUG(4,
+			G_RAID_DEBUG1(4, vol->v_softc,
 			    "Deferred lock of %jd to %jd completed",
 			    (intmax_t)off, (intmax_t)(off + len));
 			G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg);
@@ -995,11 +1025,11 @@ g_raid_lock_range(struct g_raid_volume *
 	 */
 	if (lp->l_pending > 0) {
 		vol->v_pending_lock = 1;
-		G_RAID_DEBUG(4, "Locking range %jd to %jd deferred %d pend",
+		G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd deferred %d pend",
 		    (intmax_t)off, (intmax_t)(off+len), lp->l_pending);
 		return (EBUSY);
 	}
-	G_RAID_DEBUG(4, "Locking range %jd to %jd",
+	G_RAID_DEBUG1(4, sc, "Locking range %jd to %jd",
 	    (intmax_t)off, (intmax_t)(off+len));
 	G_RAID_TR_LOCKED(vol->v_tr, lp->l_callback_arg);
 	return (0);
@@ -1023,7 +1053,7 @@ g_raid_unlock_range(struct g_raid_volume
 			 * when the worker thread runs.
 			 * XXX
 			 */
-			G_RAID_DEBUG(4, "Unlocked %jd to %jd",
+			G_RAID_DEBUG1(4, sc, "Unlocked %jd to %jd",
 			    (intmax_t)lp->l_offset,
 			    (intmax_t)(lp->l_offset+lp->l_length));
 			mtx_lock(&sc->sc_queue_mtx);
@@ -1135,8 +1165,7 @@ g_raid_handle_event(struct g_raid_softc 
 		g_raid_event_free(ep);
 	} else {
 		ep->e_flags |= G_RAID_EVENT_DONE;
-		G_RAID_DEBUG(4, "%s: Waking up %p.", __func__,
-		    ep);
+		G_RAID_DEBUG1(4, sc, "Waking up %p.", ep);
 		mtx_lock(&sc->sc_queue_mtx);
 		wakeup(ep);
 		mtx_unlock(&sc->sc_queue_mtx);
@@ -1247,30 +1276,6 @@ out:
 	sx_xunlock(&sc->sc_lock);
 }
 
-#if 0
-static void
-g_raid_update_idle(struct g_raid_softc *sc, struct g_raid_disk *disk)
-{
-
-	sx_assert(&sc->sc_lock, SX_LOCKED);
-
-	if ((sc->sc_flags & G_RAID_DEVICE_FLAG_NOFAILSYNC) != 0)
-		return;
-#if 0
-	if (!sc->sc_idle && (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) == 0) {
-		G_RAID_DEBUG(1, "Disk %s (device %s) marked as dirty.",
-		    g_raid_get_diskname(disk), sc->sc_name);
-		disk->d_flags |= G_RAID_DISK_FLAG_DIRTY;
-	} else if (sc->sc_idle &&
-	    (disk->d_flags & G_RAID_DISK_FLAG_DIRTY) != 0) {
-		G_RAID_DEBUG(1, "Disk %s (device %s) marked as clean.",
-		    g_raid_get_diskname(disk), sc->sc_name);
-		disk->d_flags &= ~G_RAID_DISK_FLAG_DIRTY;
-	}
-#endif
-}
-#endif
-
 static void
 g_raid_launch_provider(struct g_raid_volume *vol)
 {
@@ -1307,7 +1312,8 @@ g_raid_launch_provider(struct g_raid_vol
 	vol->v_provider = pp;
 	g_error_provider(pp, 0);
 	g_topology_unlock();
-	G_RAID_DEBUG(0, "Volume %s launched.", pp->name);
+	G_RAID_DEBUG1(0, sc, "Provider %s for volume %s created.",
+	    pp->name, vol->v_name);
 }
 
 static void
@@ -1332,8 +1338,8 @@ g_raid_destroy_provider(struct g_raid_vo
 		g_io_deliver(bp, ENXIO);
 	}
 	mtx_unlock(&sc->sc_queue_mtx);
-	G_RAID_DEBUG(0, "Node %s: provider %s destroyed.", sc->sc_name,
-	    pp->name);
+	G_RAID_DEBUG1(0, sc, "Provider %s for volume %s destroyed.",
+	    pp->name, vol->v_name);
 	g_wither_provider(pp, ENXIO);
 	g_topology_unlock();
 	vol->v_provider = NULL;
@@ -1350,7 +1356,7 @@ g_raid_update_volume(struct g_raid_volum
 	sc = vol->v_softc;
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
-	G_RAID_DEBUG(2, "Event %s for volume %s.",
+	G_RAID_DEBUG1(2, sc, "Event %s for volume %s.",
 	    g_raid_volume_event2str(event),
 	    vol->v_name);
 	switch (event) {
@@ -1371,7 +1377,7 @@ g_raid_update_volume(struct g_raid_volum
 	/* Manage root mount release. */
 	if (vol->v_starting) {
 		vol->v_starting = 0;
-		G_RAID_DEBUG(1, "root_mount_rel %p", vol->v_rootmount);
+		G_RAID_DEBUG1(1, sc, "root_mount_rel %p", vol->v_rootmount);
 		root_mount_rel(vol->v_rootmount);
 		vol->v_rootmount = NULL;
 	}
@@ -1393,9 +1399,10 @@ g_raid_update_subdisk(struct g_raid_subd
 	vol = sd->sd_volume;
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
-	G_RAID_DEBUG(3, "Event %s for subdisk %s.",
+	G_RAID_DEBUG1(2, sc, "Event %s for subdisk %s:%d-%s.",
 	    g_raid_subdisk_event2str(event),
-	    g_raid_get_subdiskname(sd));
+	    vol->v_name, sd->sd_pos,
+	    sd->sd_disk ? g_raid_get_diskname(sd->sd_disk) : "[none]");
 	if (vol->v_tr)
 		G_RAID_TR_EVENT(vol->v_tr, sd, event);
 
@@ -1413,7 +1420,7 @@ g_raid_update_disk(struct g_raid_disk *d
 	sc = disk->d_softc;
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
-	G_RAID_DEBUG(2, "Event %s for disk %s.",
+	G_RAID_DEBUG1(2, sc, "Event %s for disk %s.",
 	    g_raid_disk_event2str(event),
 	    g_raid_get_diskname(disk));
 
@@ -1430,9 +1437,11 @@ g_raid_update_node(struct g_raid_softc *
 {
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
-	G_RAID_DEBUG(2, "Event %s for node %s.",
-	    g_raid_node_event2str(event), sc->sc_name);
+	G_RAID_DEBUG1(2, sc, "Event %s for the array.",
+	    g_raid_node_event2str(event));
 
+	if (event == G_RAID_NODE_E_WAKE)
+		return (0);
 	if (sc->sc_md)
 		G_RAID_MD_EVENT(sc->sc_md, NULL, event);
 	return (0);
@@ -1441,19 +1450,19 @@ g_raid_update_node(struct g_raid_softc *
 static int
 g_raid_access(struct g_provider *pp, int acr, int acw, int ace)
 {
-	struct g_raid_volume *vol, *vol1;
+	struct g_raid_volume *vol;
 	struct g_raid_softc *sc;
 	int dcr, dcw, dce, opens, error = 0;
 
 	g_topology_assert();
-	G_RAID_DEBUG(2, "Access request for %s: r%dw%de%d.", pp->name, acr,
-	    acw, ace);
-
 	sc = pp->geom->softc;
 	vol = pp->private;
 	KASSERT(sc != NULL, ("NULL softc (provider=%s).", pp->name));
 	KASSERT(vol != NULL, ("NULL volume (provider=%s).", pp->name));
 
+	G_RAID_DEBUG1(2, sc, "Access request for %s: r%dw%de%d.", pp->name,
+	    acr, acw, ace);
+
 	dcr = pp->acr + acr;
 	dcw = pp->acw + acw;
 	dce = pp->ace + ace;
@@ -1472,14 +1481,11 @@ g_raid_access(struct g_provider *pp, int
 	if (sc->sc_stopping == G_RAID_DESTROY_DELAYED &&
 	    vol->v_provider_open == 0) {
 		/* Count open volumes. */
-		opens = 0;
-		TAILQ_FOREACH(vol1, &sc->sc_volumes, v_next) {
-			if (vol1->v_provider_open != 0)
-				opens++;
-		}
+		opens = g_raid_nopens(sc);
 		if (opens == 0) {
 			sc->sc_stopping = G_RAID_DESTROY_HARD;
-			g_raid_event_send(sc, 0, 0);	/* Wake up worker. */
+			/* Wake up worker to make it selfdestruct. */
+			g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0);
 		}
 	}
 	/* Handle open volume destruction. */
@@ -1500,7 +1506,7 @@ g_raid_create_node(struct g_class *mp,
 	int error;
 
 	g_topology_assert();
-	G_RAID_DEBUG(1, "Creating node %s.", name);
+	G_RAID_DEBUG(1, "Creating array %s.", name);
 
 	gp = g_new_geomf(mp, "%s", name);
 	sc = malloc(sizeof(*sc), M_RAID, M_WAITOK | M_ZERO);
@@ -1522,7 +1528,7 @@ g_raid_create_node(struct g_class *mp,
 	error = kthread_create(g_raid_worker, sc, &sc->sc_worker, 0, 0,
 	    "g_raid %s", name);
 	if (error != 0) {
-		G_RAID_DEBUG(1, "Cannot create kernel thread for %s.", name);
+		G_RAID_DEBUG(0, "Cannot create kernel thread for %s.", name);
 		mtx_destroy(&sc->sc_queue_mtx);
 		sx_destroy(&sc->sc_lock);
 		g_destroy_geom(sc->sc_geom);
@@ -1530,7 +1536,7 @@ g_raid_create_node(struct g_class *mp,
 		return (NULL);
 	}
 
-	G_RAID_DEBUG(1, "Node %s created.", name);
+	G_RAID_DEBUG1(0, sc, "Array %s created.", name);
 	return (sc);
 }
 
@@ -1540,7 +1546,7 @@ g_raid_create_volume(struct g_raid_softc
 	struct g_raid_volume	*vol, *vol1;
 	int i;
 
-	G_RAID_DEBUG(1, "Creating volume %s.", name);
+	G_RAID_DEBUG1(1, sc, "Creating volume %s.", name);
 	vol = malloc(sizeof(*vol), M_RAID, M_WAITOK | M_ZERO);
 	vol->v_softc = sc;
 	strlcpy(vol->v_name, name, G_RAID_MAX_VOLUMENAME);
@@ -1571,7 +1577,7 @@ g_raid_create_volume(struct g_raid_softc
 
 	/* Delay root mounting. */
 	vol->v_rootmount = root_mount_hold("GRAID");
-	G_RAID_DEBUG(1, "root_mount_hold %p", vol->v_rootmount);
+	G_RAID_DEBUG1(1, sc, "root_mount_hold %p", vol->v_rootmount);
 	vol->v_starting = 1;
 	TAILQ_INSERT_TAIL(&sc->sc_volumes, vol, v_next);
 	return (vol);
@@ -1582,7 +1588,7 @@ g_raid_create_disk(struct g_raid_softc *
 {
 	struct g_raid_disk	*disk;
 
-	G_RAID_DEBUG(1, "Creating disk.");
+	G_RAID_DEBUG1(1, sc, "Creating disk.");
 	disk = malloc(sizeof(*disk), M_RAID, M_WAITOK | M_ZERO);
 	disk->d_softc = sc;
 	disk->d_state = G_RAID_DISK_S_NONE;
@@ -1597,9 +1603,11 @@ int g_raid_start_volume(struct g_raid_vo
 	struct g_raid_tr_object *obj;
 	int status;
 
-	G_RAID_DEBUG(2, "Starting volume %s.", vol->v_name);
+	G_RAID_DEBUG1(2, vol->v_softc, "Starting volume %s.", vol->v_name);
 	LIST_FOREACH(class, &g_raid_tr_classes, trc_list) {
-		G_RAID_DEBUG(2, "Tasting %s for %s transformation.", vol->v_name, class->name);
+		G_RAID_DEBUG1(2, vol->v_softc,
+		    "Tasting volume %s for %s transformation.",
+		    vol->v_name, class->name);
 		obj = (void *)kobj_create((kobj_class_t)class, M_RAID,
 		    M_WAITOK);
 		obj->tro_class = class;
@@ -1610,7 +1618,8 @@ int g_raid_start_volume(struct g_raid_vo
 		kobj_delete((kobj_t)obj, M_RAID);
 	}
 	if (class == NULL) {
-		G_RAID_DEBUG(1, "No transformation module found for %s.",
+		G_RAID_DEBUG1(0, vol->v_softc,
+		    "No transformation module found for %s.",
 		    vol->v_name);
 		vol->v_tr = NULL;
 		g_raid_change_volume_state(vol, G_RAID_VOLUME_S_UNSUPPORTED);
@@ -1618,7 +1627,8 @@ int g_raid_start_volume(struct g_raid_vo
 		    G_RAID_EVENT_VOLUME);
 		return (-1);
 	}
-	G_RAID_DEBUG(2, "Transformation module %s chosen for %s.",
+	G_RAID_DEBUG1(2, vol->v_softc,
+	    "Transformation module %s chosen for %s.",
 	    class->name, vol->v_name);
 	vol->v_tr = obj;
 	return (0);
@@ -1650,14 +1660,14 @@ g_raid_destroy_node(struct g_raid_softc 
 		sc->sc_md = NULL;
 	}
 	if (sc->sc_geom != NULL) {
-		G_RAID_DEBUG(1, "Destroying node %s.", sc->sc_name);
+		G_RAID_DEBUG1(0, sc, "Array %s destroyed.", sc->sc_name);
 		g_topology_lock();
 		sc->sc_geom->softc = NULL;
 		g_wither_geom(sc->sc_geom, ENXIO);
 		g_topology_unlock();
 		sc->sc_geom = NULL;
 	} else
-		G_RAID_DEBUG(1, "Destroying node.");
+		G_RAID_DEBUG(1, "Array destroyed.");
 	if (worker) {
 		mtx_destroy(&sc->sc_queue_mtx);
 		sx_xunlock(&sc->sc_lock);
@@ -1669,7 +1679,7 @@ g_raid_destroy_node(struct g_raid_softc 
 		kthread_exit(0);
 	} else {
 		/* Wake up worker to make it selfdestruct. */
-		g_raid_event_send(sc, 0, 0);
+		g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0);
 	}
 	return (0);
 }
@@ -1682,7 +1692,7 @@ g_raid_destroy_volume(struct g_raid_volu
 	int i;
 
 	sc = vol->v_softc;
-	G_RAID_DEBUG(2, "Destroying volume %s.", vol->v_name);
+	G_RAID_DEBUG1(2, sc, "Destroying volume %s.", vol->v_name);
 	vol->v_stopping = 1;
 	if (vol->v_state != G_RAID_VOLUME_S_STOPPED) {
 		if (vol->v_tr) {
@@ -1695,13 +1705,13 @@ g_raid_destroy_volume(struct g_raid_volu
 		return (EBUSY);
 	if (vol->v_provider != NULL)
 		return (EBUSY);
+	if (vol->v_provider_open != 0)
+		return (EBUSY);
 	if (vol->v_tr) {
 		G_RAID_TR_FREE(vol->v_tr);
 		kobj_delete((kobj_t)vol->v_tr, M_RAID);
 		vol->v_tr = NULL;
 	}
-	if (vol->v_provider_open != 0)
-		return (EBUSY);
 	if (vol->v_rootmount)
 		root_mount_rel(vol->v_rootmount);
 	g_topology_lock();
@@ -1714,10 +1724,12 @@ g_raid_destroy_volume(struct g_raid_volu
 			continue;
 		TAILQ_REMOVE(&disk->d_subdisks, &vol->v_subdisks[i], sd_next);
 	}
-	G_RAID_DEBUG(2, "Volume %s destroyed.", vol->v_name);
+	G_RAID_DEBUG1(2, sc, "Volume %s destroyed.", vol->v_name);
 	free(vol, M_RAID);
-	if (sc->sc_stopping == G_RAID_DESTROY_HARD)
-		g_raid_event_send(sc, 0, 0);	/* Wake up worker. */
+	if (sc->sc_stopping == G_RAID_DESTROY_HARD) {
+		/* Wake up worker to let it selfdestruct. */
+		g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0);
+	}
 	return (0);
 }
 
@@ -1728,7 +1740,7 @@ g_raid_destroy_disk(struct g_raid_disk *
 	struct g_raid_subdisk *sd, *tmp;
 
 	sc = disk->d_softc;
-	G_RAID_DEBUG(2, "Destroying disk.");
+	G_RAID_DEBUG1(2, sc, "Destroying disk.");
 	if (disk->d_consumer) {
 		g_topology_lock();
 		g_raid_kill_consumer(sc, disk->d_consumer);
@@ -1751,7 +1763,6 @@ g_raid_destroy_disk(struct g_raid_disk *
 int
 g_raid_destroy(struct g_raid_softc *sc, int how)
 {
-	struct g_raid_volume *vol;
 	int opens;
 
 	g_topology_assert_not();
@@ -1760,37 +1771,32 @@ g_raid_destroy(struct g_raid_softc *sc, 
 	sx_assert(&sc->sc_lock, SX_XLOCKED);
 
 	/* Count open volumes. */
-	opens = 0;
-	TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
-		if (vol->v_provider_open != 0)
-			opens++;
-	}
+	opens = g_raid_nopens(sc);
 
 	/* React on some opened volumes. */
 	if (opens > 0) {
 		switch (how) {
 		case G_RAID_DESTROY_SOFT:
-			G_RAID_DEBUG(1,
-			    "%d volumes of %s are still open.",
-			    opens, sc->sc_name);
+			G_RAID_DEBUG1(1, sc,
+			    "%d volumes are still open.",
+			    opens);
 			return (EBUSY);
 		case G_RAID_DESTROY_DELAYED:
-			G_RAID_DEBUG(1,
-			    "Node %s will be destroyed on last close.",
-			    sc->sc_name);
+			G_RAID_DEBUG1(1, sc,
+			    "Array will be destroyed on last close.");
 			sc->sc_stopping = G_RAID_DESTROY_DELAYED;
 			return (EBUSY);
 		case G_RAID_DESTROY_HARD:
-			G_RAID_DEBUG(1,
-			    "%d volumes of %s are still open.",
-			    opens, sc->sc_name);
+			G_RAID_DEBUG1(1, sc,
+			    "%d volumes are still open.",
+			    opens);
 		}
 	}
 
 	/* Mark node for destruction. */
 	sc->sc_stopping = G_RAID_DESTROY_HARD;
 	/* Wake up worker to let it selfdestruct. */
-	g_raid_event_send(sc, 0, 0);
+	g_raid_event_send(sc, G_RAID_NODE_E_WAKE, 0);
 	/* Sleep until node destroyed. */
 	sx_sleep(&sc->sc_stopping, &sc->sc_lock,
 	    PRIBIO | PDROP, "r:destroy", 0);
@@ -1816,7 +1822,7 @@ g_raid_taste(struct g_class *mp, struct 
 
 	g_topology_assert();
 	g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name);
-	G_RAID_DEBUG(2, "Tasting %s.", pp->name);
+	G_RAID_DEBUG(2, "Tasting provider %s.", pp->name);
 
 	gp = g_new_geomf(mp, "mirror:taste");
 	/*
@@ -1828,7 +1834,8 @@ g_raid_taste(struct g_class *mp, struct 
 
 	geom = NULL;
 	LIST_FOREACH(class, &g_raid_md_classes, mdc_list) {
-		G_RAID_DEBUG(2, "Tasting %s for %s metadata.", pp->name, class->name);
+		G_RAID_DEBUG(2, "Tasting provider %s for %s metadata.",
+		    pp->name, class->name);
 		obj = (void *)kobj_create((kobj_class_t)class, M_RAID,
 		    M_WAITOK);
 		obj->mdo_class = class;
@@ -1842,7 +1849,7 @@ g_raid_taste(struct g_class *mp, struct 
 	g_detach(cp);
 	g_destroy_consumer(cp);
 	g_destroy_geom(gp);
-	G_RAID_DEBUG(2, "Tasting %s done.", pp->name);
+	G_RAID_DEBUG(2, "Tasting provider %s done.", pp->name);
 	return (geom);
 }
 
@@ -1853,13 +1860,13 @@ g_raid_create_node_format(const char *fo
 	struct g_raid_md_object *obj;
 	int status;
 
-	G_RAID_DEBUG(2, "Creating node for %s metadata.", format);
+	G_RAID_DEBUG(2, "Creating array for %s metadata.", format);
 	LIST_FOREACH(class, &g_raid_md_classes, mdc_list) {
 		if (strcasecmp(class->name, format) == 0)
 			break;
 	}
 	if (class == NULL) {
-		G_RAID_DEBUG(2, "Creating node for %s metadata.", format);
+		G_RAID_DEBUG(1, "No support for %s metadata.", format);
 		return (G_RAID_MD_TASTE_FAIL);
 	}
 	obj = (void *)kobj_create((kobj_class_t)class, M_RAID,
@@ -1893,6 +1900,8 @@ void g_raid_write_metadata(struct g_raid
     struct g_raid_subdisk *sd, struct g_raid_disk *disk)
 {
 
+	if (sc->sc_stopping == G_RAID_DESTROY_HARD)
+		return;
 	if (sc->sc_md)
 		G_RAID_MD_WRITE(sc->sc_md, vol, sd, disk);
 }

Modified: projects/graid/7/sys/geom/raid/g_raid.h
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.h	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sys/geom/raid/g_raid.h	Tue Feb  8 13:04:51 2011	(r218439)
@@ -64,6 +64,17 @@ extern struct g_class g_raid_class;
 		}							\
 	}								\
 } while (0)
+#define	G_RAID_DEBUG1(lvl, sc, fmt, ...)	do {			\
+	if (g_raid_debug >= (lvl)) {					\
+		if (g_raid_debug > 0) {					\
+			printf("GEOM_RAID[%u]: %s: " fmt "\n",		\
+			    lvl, (sc)->sc_name, ## __VA_ARGS__);	\
+		} else {						\
+			printf("GEOM_RAID: %s: " fmt "\n",		\
+			    (sc)->sc_name, ## __VA_ARGS__);		\
+		}							\
+	}								\
+} while (0)
 #define	G_RAID_LOGREQ(lvl, bp, fmt, ...)	do {			\
 	if (g_raid_debug >= (lvl)) {					\
 		if (g_raid_debug > 0) {					\
@@ -240,6 +251,7 @@ struct g_raid_volume {
 	LIST_ENTRY(g_raid_volume)	 v_global_next; /* Global list entry. */
 };
 
+#define G_RAID_NODE_E_WAKE	0x00
 #define G_RAID_NODE_E_START	0x01
 
 struct g_raid_softc {
@@ -327,6 +339,7 @@ int g_raid_create_node_format(const char
 struct g_raid_volume * g_raid_create_volume(struct g_raid_softc *sc,
     const char *name);
 struct g_raid_disk * g_raid_create_disk(struct g_raid_softc *sc);
+const char * g_raid_get_diskname(struct g_raid_disk *disk);
 
 int g_raid_start_volume(struct g_raid_volume *vol);
 
@@ -356,6 +369,9 @@ int g_raid_tr_kerneldump_common(struct g
 
 u_int g_raid_ndisks(struct g_raid_softc *sc, int state);
 u_int g_raid_nsubdisks(struct g_raid_volume *vol, int state);
+u_int g_raid_nopens(struct g_raid_softc *sc);
+struct g_raid_subdisk * g_raid_get_subdisk(struct g_raid_volume *vol,
+    int state);
 #define	G_RAID_DESTROY_SOFT		0
 #define	G_RAID_DESTROY_DELAYED	1
 #define	G_RAID_DESTROY_HARD		2

Modified: projects/graid/7/sys/geom/raid/g_raid_ctl.c
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid_ctl.c	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sys/geom/raid/g_raid_ctl.c	Tue Feb  8 13:04:51 2011	(r218439)
@@ -90,7 +90,7 @@ g_raid_ctl_label(struct gctl_req *req, s
 	}
 	crstatus = g_raid_create_node_format(format, &geom);
 	if (crstatus == G_RAID_MD_TASTE_FAIL) {
-		gctl_error(req, "Failed to create node with format '%s'.",
+		gctl_error(req, "Failed to create array with format '%s'.",
 		    format);
 		return;
 	}
@@ -132,12 +132,12 @@ g_raid_ctl_stop(struct gctl_req *req, st
 	}
 	nodename = gctl_get_asciiparam(req, "arg0");
 	if (nodename == NULL) {
-		gctl_error(req, "No node name recieved.");
+		gctl_error(req, "No array name recieved.");
 		return;
 	}
 	sc = g_raid_find_node(mp, nodename);
 	if (sc == NULL) {
-		gctl_error(req, "Node '%s' not found.", nodename);
+		gctl_error(req, "Array '%s' not found.", nodename);
 		return;
 	}
 	force = gctl_get_paraml(req, "force", sizeof(*force));
@@ -172,12 +172,12 @@ g_raid_ctl_other(struct gctl_req *req, s
 	}
 	nodename = gctl_get_asciiparam(req, "arg0");
 	if (nodename == NULL) {
-		gctl_error(req, "No node name recieved.");
+		gctl_error(req, "No array name recieved.");
 		return;
 	}
 	sc = g_raid_find_node(mp, nodename);
 	if (sc == NULL) {
-		gctl_error(req, "Node '%s' not found.", nodename);
+		gctl_error(req, "Array '%s' not found.", nodename);
 		return;
 	}
 	g_topology_unlock();

Modified: projects/graid/7/sys/geom/raid/md_intel.c
==============================================================================
--- projects/graid/7/sys/geom/raid/md_intel.c	Tue Feb  8 13:02:25 2011	(r218438)
+++ projects/graid/7/sys/geom/raid/md_intel.c	Tue Feb  8 13:04:51 2011	(r218439)
@@ -74,6 +74,19 @@ struct intel_raid_vol {
 	uint8_t		name[16];
 	u_int64_t	total_sectors __packed;
 	uint32_t	state;
+#define INTEL_ST_BOOTABLE		0x00000001
+#define INTEL_ST_BOOT_DEVICE		0x00000002
+#define INTEL_ST_READ_COALESCING	0x00000004
+#define INTEL_ST_WRITE_COALESCING	0x00000008
+#define INTEL_ST_LAST_SHUTDOWN_DIRTY	0x00000010
+#define INTEL_ST_HIDDEN_AT_BOOT		0x00000020
+#define INTEL_ST_CURRENTLY_HIDDEN	0x00000040
+#define INTEL_ST_VERIFY_AND_FIX		0x00000080
+#define INTEL_ST_MAP_STATE_UNINIT	0x00000100
+#define INTEL_ST_NO_AUTO_RECOVERY	0x00000200
+#define INTEL_ST_CLONE_N_GO		0x00000400
+#define INTEL_ST_CLONE_MAN_SYNC		0x00000800
+#define INTEL_ST_CNG_MASTER_DISK_NUM	0x00001000
 	uint32_t	reserved;
 	uint8_t		migr_priority;
 	uint8_t		num_sub_vols;
@@ -330,8 +343,10 @@ intel_meta_read(struct g_consumer *cp)
 {
 	struct g_provider *pp;
 	struct intel_raid_conf *meta;
+	struct intel_raid_vol *mvol;
+	struct intel_raid_map *mmap;
 	char *buf;
-	int error, i, left;
+	int error, i, j, k, left, size;
 	uint32_t checksum, *ptr;
 
 	pp = cp->provider;
@@ -352,14 +367,15 @@ intel_meta_read(struct g_consumer *cp)
 		g_free(buf);
 		return (NULL);
 	}
-	if (meta->config_size > 65536) {
-		G_RAID_DEBUG(1, "Intel metadata size looks too big: %d",
+	if (meta->config_size > 65536 ||
+	    meta->config_size < sizeof(struct intel_raid_conf)) {
+		G_RAID_DEBUG(1, "Intel metadata size looks wrong: %d",
 		    meta->config_size);
 		g_free(buf);
 		return (NULL);
 	}
 	meta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK);
-	memcpy(meta, buf, pp->sectorsize);
+	memcpy(meta, buf, min(meta->config_size, pp->sectorsize));
 	g_free(buf);
 
 	/* Read all the rest, if needed. */
@@ -392,6 +408,68 @@ intel_meta_read(struct g_consumer *cp)
 		return (NULL);
 	}
 
+	/* Validate metadata size. */
+	size = sizeof(struct intel_raid_conf) +
+	    sizeof(struct intel_raid_disk) * (meta->total_disks - 1) +
+	    sizeof(struct intel_raid_vol) * meta->total_volumes;
+	if (size > meta->config_size) {
+badsize:
+		G_RAID_DEBUG(1, "Intel metadata size incorrect %d < %d",
+		    meta->config_size, size);
+		free(meta, M_MD_INTEL);
+		return (NULL);
+	}
+	for (i = 0; i < meta->total_volumes; i++) {
+		mvol = intel_get_volume(meta, i);
+		mmap = intel_get_map(mvol, 0);
+		size += 4 * (mmap->total_disks - 1);
+		if (size > meta->config_size)
+			goto badsize;
+		if (mvol->migr_state) {
+			size += sizeof(struct intel_raid_map);
+			if (size > meta->config_size)
+				goto badsize;
+			mmap = intel_get_map(mvol, 1);
+			size += 4 * (mmap->total_disks - 1);
+			if (size > meta->config_size)
+				goto badsize;
+		}
+	}
+
+	/* Validate disk indexes. */
+	for (i = 0; i < meta->total_volumes; i++) {
+		mvol = intel_get_volume(meta, i);
+		for (j = 0; j < (mvol->migr_state ? 2 : 1); j++) {
+			mmap = intel_get_map(mvol, j);
+			for (k = 0; k < mmap->total_disks; k++) {
+				if ((mmap->disk_idx[k] & INTEL_DI_IDX) >
+				    meta->total_disks) {
+					G_RAID_DEBUG(1, "Intel metadata disk"
+					    " index %d too big (>%d)",
+					    mmap->disk_idx[k] & INTEL_DI_IDX,
+					    meta->total_disks);
+					free(meta, M_MD_INTEL);
+					return (NULL);
+				}
+			}
+		}
+	}
+
+	/* Validate migration types. */
+	for (i = 0; i < meta->total_volumes; i++) {
+		mvol = intel_get_volume(meta, i);
+		if (mvol->migr_state &&
+		    mvol->migr_type != INTEL_MT_INIT &&
+		    mvol->migr_type != INTEL_MT_REBUILD &&
+		    mvol->migr_type != INTEL_MT_VERIFY &&
+		    mvol->migr_type != INTEL_MT_REPAIR) {
+			G_RAID_DEBUG(1, "Intel metadata has unsupported"
+			    " migration type %d", mvol->migr_type);
+			free(meta, M_MD_INTEL);
+			return (NULL);
+		}
+	}
+
 	return (meta);
 }
 
@@ -525,7 +603,7 @@ g_raid_md_intel_start_disk(struct g_raid
 	/* Find disk position in metadata by it's serial. */
 	disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial);
 	if (disk_pos < 0) {
-		G_RAID_DEBUG(1, "Unknown, probably new or stale disk");
+		G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk");
 		/* Failed stale disk is useless for us. */
 		if (pd->pd_disk_meta.flags & INTEL_F_FAILED) {
 			g_raid_change_disk_state(disk, G_RAID_DISK_S_STALE_FAILED);
@@ -546,7 +624,7 @@ g_raid_md_intel_start_disk(struct g_raid
 			TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) {
 				if (sd->sd_offset + sd->sd_size + 4096 >
 				    (off_t)pd->pd_disk_meta.sectors * 512) {
-					G_RAID_DEBUG(1,
+					G_RAID_DEBUG1(1, sc,
 					    "Disk too small (%llu < %llu)",
 					    ((unsigned long long)
 					    pd->pd_disk_meta.sectors) * 512,
@@ -586,7 +664,7 @@ nofit:
 		if (olddisk == NULL)
 			panic("No disk at position %d!", disk_pos);
 		if (olddisk->d_state != G_RAID_DISK_S_OFFLINE) {
-			G_RAID_DEBUG(1, "More then one disk for pos %d",

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


More information about the svn-src-projects mailing list