Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 17 Feb 2011 16:21:26 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218775 - 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...
Message-ID:  <201102171621.p1HGLQqd017464@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Thu Feb 17 16:21:26 2011
New Revision: 218775
URL: http://svn.freebsd.org/changeset/base/218775

Log:
  MFH r218702, r218705, r218706, r218721, r218722, r218727, r218728, r218732,
  r218734, r218740.

Added:
  projects/graid/7/sys/geom/raid/md_jmicron.c
     - copied, changed from r218722, projects/graid/head/sys/geom/raid/md_jmicron.c
  projects/graid/7/sys/geom/raid/tr_concat.c
     - copied unchanged from r218706, projects/graid/head/sys/geom/raid/tr_concat.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/md_intel.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/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/graid.8
==============================================================================
--- projects/graid/7/sbin/geom/class/raid/graid.8	Thu Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sbin/geom/class/raid/graid.8	Thu Feb 17 16:21:26 2011	(r218775)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 13, 2011
+.Dd February 15, 2011
 .Dt GRAID 8
 .Os
 .Sh NAME
@@ -205,14 +205,21 @@ The format used by Intel RAID BIOS.
 Supports up to two volumes per array.
 Supports configurations: RAID0 (2+ disks), RAID1 (2 disks),
 RAID5 (3+ disks), RAID10 (4 disks).
-Configurations not supported by Intel RAID BIOS, but enforsable on your own
+Configurations not supported by Intel RAID BIOS, but enforceable on your own
 risk: RAID1 (3+ disks), RAID1E (3+ disks), RAID10 (6+ disks).
+.It JMicron
+The format used by JMicron RAID BIOS.
+Supports one volume per array.
+Supports configurations: RAID0 (2+ disks), RAID1 (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).
 .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.
+RAID1E, RAID10, SINGLE, CONCAT.
 .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 Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sys/conf/files	Thu Feb 17 16:21:26 2011	(r218775)
@@ -1531,6 +1531,8 @@ geom/raid/g_raid_ctl.c		optional geom_ra
 geom/raid/g_raid_md_if.m	optional geom_raid
 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/tr_concat.c		optional geom_raid
 geom/raid/tr_raid0.c		optional geom_raid
 geom/raid/tr_raid1.c		optional geom_raid
 geom/raid/tr_raid1e.c		optional geom_raid

Modified: projects/graid/7/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.c	Thu Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sys/geom/raid/g_raid.c	Thu Feb 17 16:21:26 2011	(r218775)
@@ -585,6 +585,32 @@ g_raid_get_subdisk(struct g_raid_volume 
 	return (NULL);
 }
 
+struct g_consumer *
+g_raid_open_consumer(struct g_raid_softc *sc, const char *name)
+{
+	struct g_consumer *cp;
+	struct g_provider *pp;
+
+	g_topology_assert();
+
+	if (strncmp(name, "/dev/", 5) == 0)
+		name += 5;
+	pp = g_provider_by_name(name);
+	if (pp == NULL)
+		return (NULL);
+	cp = g_new_consumer(sc->sc_geom);
+	if (g_attach(cp, pp) != 0) {
+		g_destroy_consumer(cp);
+		return (NULL);
+	}
+	if (g_access(cp, 1, 1, 1) != 0) {
+		g_detach(cp);
+		g_destroy_consumer(cp);
+		return (NULL);
+	}
+	return (cp);
+}
+
 static u_int
 g_raid_nrequests(struct g_raid_softc *sc, struct g_consumer *cp)
 {
@@ -652,11 +678,12 @@ g_raid_kill_consumer(struct g_raid_softc
 	struct g_provider *pp;
 	int retaste_wait;
 
-	g_topology_assert();
+	g_topology_assert_not();
 
+	g_topology_lock();
 	cp->private = NULL;
 	if (g_raid_consumer_is_busy(sc, cp))
-		return;
+		goto out;
 	pp = cp->provider;
 	retaste_wait = 0;
 	if (cp->acw == 1) {
@@ -676,11 +703,13 @@ g_raid_kill_consumer(struct g_raid_softc
 		 * after retaste event is sent.
 		 */
 		g_post_event(g_raid_destroy_consumer, cp, M_WAITOK, NULL);
-		return;
+		goto out;
 	}
 	G_RAID_DEBUG(1, "Consumer %s destroyed.", pp->name);
 	g_detach(cp);
 	g_destroy_consumer(cp);
+out:
+	g_topology_unlock();
 }
 
 static void
@@ -1227,11 +1256,8 @@ g_raid_disk_done_request(struct bio *bp)
 	if (bp->bio_from != NULL) {
 		bp->bio_from->index--;
 		disk = bp->bio_from->private;
-		if (disk == NULL) {
-			g_topology_lock();
+		if (disk == NULL)
 			g_raid_kill_consumer(sc, bp->bio_from);
-			g_topology_unlock();
-		}
 	}
 	bp->bio_offset -= sd->sd_offset;
 
@@ -1301,6 +1327,7 @@ g_raid_worker(void *arg)
 			t = now;
 			TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
 				if (bioq_first(&vol->v_inflight) == NULL &&
+				    vol->v_tr &&
 				    timevalcmp(&vol->v_last_done, &t, < ))
 					t = vol->v_last_done;
 			}
@@ -1867,9 +1894,7 @@ g_raid_destroy_disk(struct g_raid_disk *
 	sc = disk->d_softc;
 	G_RAID_DEBUG1(2, sc, "Destroying disk.");
 	if (disk->d_consumer) {
-		g_topology_lock();
 		g_raid_kill_consumer(sc, disk->d_consumer);
-		g_topology_unlock();
 		disk->d_consumer = NULL;
 	}
 	TAILQ_FOREACH_SAFE(sd, &disk->d_subdisks, sd_next, tmp) {
@@ -2227,7 +2252,7 @@ g_raid_md_modevent(module_t mod, int typ
 	switch (type) {
 	case MOD_LOAD:
 		c = LIST_FIRST(&g_raid_md_classes);
-		if (c == NULL || c->mdc_priority < class->mdc_priority)
+		if (c == NULL || c->mdc_priority > class->mdc_priority)
 			LIST_INSERT_HEAD(&g_raid_md_classes, class, mdc_list);
 		else {
 			while ((nc = LIST_NEXT(c, mdc_list)) != NULL &&
@@ -2260,7 +2285,7 @@ g_raid_tr_modevent(module_t mod, int typ
 	switch (type) {
 	case MOD_LOAD:
 		c = LIST_FIRST(&g_raid_tr_classes);
-		if (c == NULL || c->trc_priority < class->trc_priority)
+		if (c == NULL || c->trc_priority > class->trc_priority)
 			LIST_INSERT_HEAD(&g_raid_tr_classes, class, trc_list);
 		else {
 			while ((nc = LIST_NEXT(c, trc_list)) != NULL &&

Modified: projects/graid/7/sys/geom/raid/g_raid.h
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.h	Thu Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sys/geom/raid/g_raid.h	Thu Feb 17 16:21:26 2011	(r218775)
@@ -364,6 +364,8 @@ void g_raid_subdisk_iostart(struct g_rai
 int g_raid_subdisk_kerneldump(struct g_raid_subdisk *sd,
     void *virtual, vm_offset_t physical, off_t offset, size_t length);
 
+struct g_consumer *g_raid_open_consumer(struct g_raid_softc *sc,
+    const char *name);
 void g_raid_kill_consumer(struct g_raid_softc *sc, struct g_consumer *cp);
 
 void g_raid_report_disk_state(struct g_raid_disk *disk);

Modified: projects/graid/7/sys/geom/raid/md_intel.c
==============================================================================
--- projects/graid/7/sys/geom/raid/md_intel.c	Thu Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sys/geom/raid/md_intel.c	Thu Feb 17 16:21:26 2011	(r218775)
@@ -715,9 +715,9 @@ nofit:
 		TAILQ_REMOVE(&olddisk->d_subdisks, sd, sd_next);
 		TAILQ_INSERT_TAIL(&disk->d_subdisks, sd, sd_next);
 		sd->sd_disk = disk;
-		oldpd->pd_disk_pos = -2;
-		pd->pd_disk_pos = disk_pos;
 	}
+	oldpd->pd_disk_pos = -2;
+	pd->pd_disk_pos = disk_pos;
 
 	/* If it was placeholder -- destroy it. */
 	if (olddisk->d_state == G_RAID_DISK_S_OFFLINE) {
@@ -1327,9 +1327,7 @@ g_raid_md_event_intel(struct g_raid_md_o
 		if (pd->pd_disk_pos >= 0) {
 			g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
 			if (disk->d_consumer) {
-				g_topology_lock();
 				g_raid_kill_consumer(sc, disk->d_consumer);
-				g_topology_unlock();
 				disk->d_consumer = NULL;
 			}
 			TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
@@ -1428,38 +1426,18 @@ g_raid_md_ctl_intel(struct g_raid_md_obj
 			if (strcmp(diskname, "NONE") == 0) {
 				cp = NULL;
 				pp = NULL;
-				goto makedisk;
-			}
-			if (strncmp(diskname, "/dev/", 5) == 0)
-				diskname += 5;
-			g_topology_lock();
-			pp = g_provider_by_name(diskname);
-			if (pp == NULL) {
-				gctl_error(req, "Provider '%s' not found.",
-				    diskname);
-				g_topology_unlock();
-				error = -7;
-				break;
-			}
-			cp = g_new_consumer(sc->sc_geom);
-			if (g_attach(cp, pp) != 0) {
-				gctl_error(req, "Can't attach provider '%s'.",
-				    diskname);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -7;
-				break;
-			}
-			if (g_access(cp, 1, 1, 1) != 0) {
-				gctl_error(req, "Can't open provider '%s'.",
-				    diskname);
-				g_detach(cp);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -7;
-				break;
+			} else {
+				g_topology_lock();
+				cp = g_raid_open_consumer(sc, diskname);
+				if (cp == NULL) {
+					gctl_error(req, "Can't open disk '%s'.",
+					    diskname);
+					g_topology_unlock();
+					error = -4;
+					break;
+				}
+				pp = cp->provider;
 			}
-makedisk:
 			pd = malloc(sizeof(*pd), M_MD_INTEL, M_WAITOK | M_ZERO);
 			pd->pd_disk_pos = i;
 			disk = g_raid_create_disk(sc);
@@ -1467,13 +1445,11 @@ makedisk:
 			disk->d_consumer = cp;
 			if (cp == NULL) {
 				strcpy(&pd->pd_disk_meta.serial[0], "NONE");
-				pd->pd_disk_meta.id = 0;
 				pd->pd_disk_meta.id = 0xffffffff;
 				pd->pd_disk_meta.flags = INTEL_F_ASSIGNED;
 				continue;
 			}
 			cp->private = disk;
-
 			g_topology_unlock();
 
 			error = g_raid_md_get_label(cp,
@@ -1908,9 +1884,7 @@ makedisk:
 			if (pd->pd_disk_pos >= 0) {
 				g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
 				if (disk->d_consumer) {
-					g_topology_lock();
 					g_raid_kill_consumer(sc, disk->d_consumer);
-					g_topology_unlock();
 					disk->d_consumer = NULL;
 				}
 				TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
@@ -1952,37 +1926,18 @@ makedisk:
 				error = -3;
 				break;
 			}
-			if (strncmp(diskname, "/dev/", 5) == 0)
-				diskname += 5;
 
 			/* Try to find provider with specified name. */
 			g_topology_lock();
-			pp = g_provider_by_name(diskname);
-			if (pp == NULL) {
-				gctl_error(req, "Provider '%s' not found.",
+			cp = g_raid_open_consumer(sc, diskname);
+			if (cp == NULL) {
+				gctl_error(req, "Can't open disk '%s'.",
 				    diskname);
 				g_topology_unlock();
 				error = -4;
 				break;
 			}
-			cp = g_new_consumer(sc->sc_geom);
-			if (g_attach(cp, pp) != 0) {
-				gctl_error(req, "Can't attach provider '%s'.",
-				    diskname);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -5;
-				break;
-			}
-			if (g_access(cp, 1, 1, 1) != 0) {
-				gctl_error(req, "Can't open provider '%s'.",
-				    diskname);
-				g_detach(cp);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -6;
-				break;
-			}
+			pp = cp->provider;
 			g_topology_unlock();
 
 			/* Read disk serial. */
@@ -1992,9 +1947,7 @@ makedisk:
 				gctl_error(req,
 				    "Can't get serial for provider '%s'.",
 				    diskname);
-				g_topology_lock();
 				g_raid_kill_consumer(sc, cp);
-				g_topology_unlock();
 				error = -7;
 				break;
 			}

Copied and modified: projects/graid/7/sys/geom/raid/md_jmicron.c (from r218722, projects/graid/head/sys/geom/raid/md_jmicron.c)
==============================================================================
--- projects/graid/head/sys/geom/raid/md_jmicron.c	Tue Feb 15 22:01:39 2011	(r218722, copy source)
+++ projects/graid/7/sys/geom/raid/md_jmicron.c	Thu Feb 17 16:21:26 2011	(r218775)
@@ -91,6 +91,7 @@ struct g_raid_md_jmicron_perdisk {
 	struct jmicron_raid_conf	*pd_meta;
 	int				 pd_disk_pos;
 	int				 pd_disk_id;
+	off_t				 pd_disk_size;
 };
 
 struct g_raid_md_jmicron_object {
@@ -154,7 +155,7 @@ g_raid_md_jmicron_print(struct jmicron_r
 	printf("stripe_shift        %d\n", meta->stripe_shift);
 	printf("flags               %04x\n", meta->flags);
 	printf("spare              ");
-	for (k = 0; k < 2; k++)
+	for (k = 0; k < JMICRON_MAX_SPARE; k++)
 		printf(" 0x%08x", meta->spare[k]);
 	printf("\n");
 	printf("disks              ");
@@ -247,7 +248,7 @@ jmicron_meta_find_disk(struct jmicron_ra
 		if ((meta->disks[pos] & JMICRON_DISK_MASK) == id)
 			return (pos);
 	}
-	for (pos = 0; pos < 2; pos++) {
+	for (pos = 0; pos < JMICRON_MAX_SPARE; pos++) {
 		if ((meta->spare[pos] & JMICRON_DISK_MASK) == id)
 			return (-3);
 	}
@@ -389,6 +390,8 @@ g_raid_md_jmicron_supported(int level, i
 	case G_RAID_VOLUME_RL_SINGLE:
 		if (disks != 1)
 			return (0);
+		if (!force)
+			return (0);
 		break;
 	case G_RAID_VOLUME_RL_CONCAT:
 		if (disks < 2)
@@ -442,23 +445,19 @@ g_raid_md_jmicron_start_disk(struct g_ra
 			if (tmpdisk->d_state != G_RAID_DISK_S_OFFLINE &&
 			    tmpdisk->d_state != G_RAID_DISK_S_FAILED)
 				continue;
-#if 0
 			/* Make sure this disk is big enough. */
 			TAILQ_FOREACH(sd, &tmpdisk->d_subdisks, sd_next) {
-				if (sd->sd_offset + sd->sd_size + 4096 >
-				    (off_t)pd->pd_disk_meta.sectors * 512) {
+				if (sd->sd_offset + sd->sd_size + 512 >
+				    pd->pd_disk_size) {
 					G_RAID_DEBUG1(1, sc,
-					    "Disk too small (%llu < %llu)",
-					    ((unsigned long long)
-					    pd->pd_disk_meta.sectors) * 512,
-					    (unsigned long long)
-					    sd->sd_offset + sd->sd_size + 4096);
+					    "Disk too small (%ju < %ju)",
+					    pd->pd_disk_size,
+					    sd->sd_offset + sd->sd_size + 512);
 					break;
 				}
 			}
 			if (sd != NULL)
 				continue;
-#endif
 			if (tmpdisk->d_state == G_RAID_DISK_S_OFFLINE) {
 				olddisk = tmpdisk;
 				break;
@@ -669,7 +668,10 @@ g_raid_md_jmicron_start(struct g_raid_so
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E;
 		vol->v_mediasize = size * mdi->mdio_total_disks / 2;
 	} else if (meta->type == JMICRON_T_CONCAT) {
-		vol->v_raid_level = G_RAID_VOLUME_RL_CONCAT;
+		if (mdi->mdio_total_disks == 1)
+			vol->v_raid_level = G_RAID_VOLUME_RL_SINGLE;
+		else
+			vol->v_raid_level = G_RAID_VOLUME_RL_CONCAT;
 		vol->v_mediasize = 0;
 	} else if (meta->type == JMICRON_T_RAID5) {
 		vol->v_raid_level = G_RAID_VOLUME_RL_RAID5;
@@ -746,23 +748,26 @@ g_raid_md_jmicron_new_disk(struct g_raid
 		if (g_raid_md_jmicron_start_disk(disk))
 			g_raid_md_write_jmicron(md, NULL, NULL, NULL);
 	} else {
-		/* If we haven't started yet - check metadata freshness. */
-		if (mdi->mdio_meta == NULL) {
-			G_RAID_DEBUG1(1, sc, "Newer disk");
+		/*
+		 * If we haven't started yet - update common metadata
+		 * to get subdisks details, avoiding data from spare disks.
+		 */
+		if (mdi->mdio_meta == NULL ||
+		    jmicron_meta_find_disk(mdi->mdio_meta,
+		     mdi->mdio_meta->disk_id) == -3) {
 			if (mdi->mdio_meta != NULL)
 				free(mdi->mdio_meta, M_MD_JMICRON);
 			mdi->mdio_meta = jmicron_meta_copy(pdmeta);
 			mdi->mdio_total_disks = jmicron_meta_total_disks(pdmeta);
-			mdi->mdio_disks_present = 1;
-		} else {
-			mdi->mdio_disks_present++;
-			G_RAID_DEBUG1(1, sc, "Matching disk (%d of %d+%d up)",
-			    mdi->mdio_disks_present,
-			    mdi->mdio_total_disks,
-			    jmicron_meta_total_spare(mdi->mdio_meta));
-			mdi->mdio_meta->flags |=
-			    pdmeta->flags & JMICRON_F_BADSEC;
 		}
+		mdi->mdio_meta->flags |= pdmeta->flags & JMICRON_F_BADSEC;
+
+		mdi->mdio_disks_present++;
+		G_RAID_DEBUG1(1, sc, "Matching disk (%d of %d+%d up)",
+		    mdi->mdio_disks_present,
+		    mdi->mdio_total_disks,
+		    jmicron_meta_total_spare(mdi->mdio_meta));
+
 		/* If we collected all needed disks - start array. */
 		if (mdi->mdio_disks_present == mdi->mdio_total_disks +
 		    jmicron_meta_total_spare(mdi->mdio_meta))
@@ -928,13 +933,13 @@ search:
 	pd = malloc(sizeof(*pd), M_MD_JMICRON, M_WAITOK | M_ZERO);
 	pd->pd_meta = meta;
 	if (spare == 2) {
-//		pd->pd_disk_meta.sectors = pp->mediasize / pp->sectorsize;
 		pd->pd_disk_pos = -3;
 		pd->pd_disk_id = arc4random() & JMICRON_DISK_MASK;
 	} else {
 		pd->pd_disk_pos = -1;
 		pd->pd_disk_id = meta->disk_id;
 	}
+	pd->pd_disk_size = pp->mediasize;
 	disk = g_raid_create_disk(sc);
 	disk->d_md_data = (void *)pd;
 	disk->d_consumer = rcp;
@@ -987,9 +992,7 @@ g_raid_md_event_jmicron(struct g_raid_md
 		if (pd->pd_disk_pos >= 0) {
 			g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
 			if (disk->d_consumer) {
-				g_topology_lock();
 				g_raid_kill_consumer(sc, disk->d_consumer);
-				g_topology_unlock();
 				disk->d_consumer = NULL;
 			}
 			TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
@@ -1087,38 +1090,18 @@ g_raid_md_ctl_jmicron(struct g_raid_md_o
 			if (strcmp(diskname, "NONE") == 0) {
 				cp = NULL;
 				pp = NULL;
-				goto makedisk;
-			}
-			if (strncmp(diskname, "/dev/", 5) == 0)
-				diskname += 5;
-			g_topology_lock();
-			pp = g_provider_by_name(diskname);
-			if (pp == NULL) {
-				gctl_error(req, "Provider '%s' not found.",
-				    diskname);
-				g_topology_unlock();
-				error = -7;
-				break;
-			}
-			cp = g_new_consumer(sc->sc_geom);
-			if (g_attach(cp, pp) != 0) {
-				gctl_error(req, "Can't attach provider '%s'.",
-				    diskname);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -7;
-				break;
-			}
-			if (g_access(cp, 1, 1, 1) != 0) {
-				gctl_error(req, "Can't open provider '%s'.",
-				    diskname);
-				g_detach(cp);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -7;
-				break;
+			} else {
+				g_topology_lock();
+				cp = g_raid_open_consumer(sc, diskname);
+				if (cp == NULL) {
+					gctl_error(req, "Can't open '%s'.",
+					    diskname);
+					g_topology_unlock();
+					error = -7;
+					break;
+				}
+				pp = cp->provider;
 			}
-makedisk:
 			pd = malloc(sizeof(*pd), M_MD_JMICRON, M_WAITOK | M_ZERO);
 			pd->pd_disk_pos = i;
 			pd->pd_disk_id = arc4random() & JMICRON_DISK_MASK;
@@ -1128,7 +1111,6 @@ makedisk:
 			if (cp == NULL)
 				continue;
 			cp->private = disk;
-
 			g_topology_unlock();
 
 			/* Read kernel dumping information. */
@@ -1141,7 +1123,7 @@ makedisk:
 				    "Dumping not supported by %s.",
 				    cp->provider->name);
 
-//			pd->pd_disk_meta.sectors = pp->mediasize / pp->sectorsize;
+			pd->pd_disk_size = pp->mediasize;
 			if (size > pp->mediasize)
 				size = pp->mediasize;
 			if (sectorsize < pp->sectorsize)
@@ -1199,7 +1181,7 @@ makedisk:
 			gctl_error(req, "Size too small.");
 			return (-13);
 		}
-		if (size > 0xffffffffllu * sectorsize) {
+		if (size > 0xffffffffffffllu * sectorsize) {
 			gctl_error(req, "Size too big.");
 			return (-14);
 		}
@@ -1213,7 +1195,8 @@ makedisk:
 		vol->v_strip_size = strip;
 		vol->v_disks_count = numdisks;
 		if (level == G_RAID_VOLUME_RL_RAID0 ||
-		    level == G_RAID_VOLUME_RL_CONCAT)
+		    level == G_RAID_VOLUME_RL_CONCAT ||
+		    level == G_RAID_VOLUME_RL_SINGLE)
 			vol->v_mediasize = size * numdisks;
 		else if (level == G_RAID_VOLUME_RL_RAID1)
 			vol->v_mediasize = size;
@@ -1319,9 +1302,7 @@ makedisk:
 			if (pd->pd_disk_pos >= 0) {
 				g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
 				if (disk->d_consumer) {
-					g_topology_lock();
 					g_raid_kill_consumer(sc, disk->d_consumer);
-					g_topology_unlock();
 					disk->d_consumer = NULL;
 				}
 				TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
@@ -1363,48 +1344,30 @@ makedisk:
 				error = -3;
 				break;
 			}
-			if (strncmp(diskname, "/dev/", 5) == 0)
-				diskname += 5;
 
 			/* Try to find provider with specified name. */
 			g_topology_lock();
-			pp = g_provider_by_name(diskname);
-			if (pp == NULL) {
-				gctl_error(req, "Provider '%s' not found.",
+			cp = g_raid_open_consumer(sc, diskname);
+			if (cp == NULL) {
+				gctl_error(req, "Can't open disk '%s'.",
 				    diskname);
 				g_topology_unlock();
 				error = -4;
 				break;
 			}
-			cp = g_new_consumer(sc->sc_geom);
-			if (g_attach(cp, pp) != 0) {
-				gctl_error(req, "Can't attach provider '%s'.",
-				    diskname);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -5;
-				break;
-			}
-			if (g_access(cp, 1, 1, 1) != 0) {
-				gctl_error(req, "Can't open provider '%s'.",
-				    diskname);
-				g_detach(cp);
-				g_destroy_consumer(cp);
-				g_topology_unlock();
-				error = -6;
-				break;
-			}
-			g_topology_unlock();
+			pp = cp->provider;
 
 			pd = malloc(sizeof(*pd), M_MD_JMICRON, M_WAITOK | M_ZERO);
 			pd->pd_disk_pos = -3;
 			pd->pd_disk_id = arc4random() & JMICRON_DISK_MASK;
+			pd->pd_disk_size = pp->mediasize;
 
 			disk = g_raid_create_disk(sc);
 			disk->d_consumer = cp;
 			disk->d_consumer->private = disk;
 			disk->d_md_data = (void *)pd;
 			cp->private = disk;
+			g_topology_unlock();
 
 			/* Read kernel dumping information. */
 			disk->d_kd.offset = 0;
@@ -1470,7 +1433,8 @@ g_raid_md_write_jmicron(struct g_raid_md
 		meta->type = JMICRON_T_RAID1;
 	else if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E)
 		meta->type = JMICRON_T_RAID01;
-	else if (vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT)
+	else if (vol->v_raid_level == G_RAID_VOLUME_RL_CONCAT ||
+	    vol->v_raid_level == G_RAID_VOLUME_RL_SINGLE)
 		meta->type = JMICRON_T_CONCAT;
 	else
 		meta->type = JMICRON_T_RAID5;

Copied: projects/graid/7/sys/geom/raid/tr_concat.c (from r218706, projects/graid/head/sys/geom/raid/tr_concat.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/graid/7/sys/geom/raid/tr_concat.c	Thu Feb 17 16:21:26 2011	(r218775, copy of r218706, projects/graid/head/sys/geom/raid/tr_concat.c)
@@ -0,0 +1,341 @@
+/*-
+ * Copyright (c) 2010 Alexander Motin <mav@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/bio.h>
+#include <sys/endian.h>
+#include <sys/kernel.h>
+#include <sys/kobj.h>
+#include <sys/lock.h>
+#include <sys/malloc.h>
+#include <sys/mutex.h>
+#include <sys/systm.h>
+#include <geom/geom.h>
+#include "geom/raid/g_raid.h"
+#include "g_raid_tr_if.h"
+
+static MALLOC_DEFINE(M_TR_CONCAT, "tr_concat_data", "GEOM_RAID CONCAT data");
+
+struct g_raid_tr_concat_object {
+	struct g_raid_tr_object	 trso_base;
+	int			 trso_starting;
+	int			 trso_stopped;
+};
+
+static g_raid_tr_taste_t g_raid_tr_taste_concat;
+static g_raid_tr_event_t g_raid_tr_event_concat;
+static g_raid_tr_start_t g_raid_tr_start_concat;
+static g_raid_tr_stop_t g_raid_tr_stop_concat;
+static g_raid_tr_iostart_t g_raid_tr_iostart_concat;
+static g_raid_tr_iodone_t g_raid_tr_iodone_concat;
+static g_raid_tr_kerneldump_t g_raid_tr_kerneldump_concat;
+static g_raid_tr_free_t g_raid_tr_free_concat;
+
+static kobj_method_t g_raid_tr_concat_methods[] = {
+	KOBJMETHOD(g_raid_tr_taste,	g_raid_tr_taste_concat),
+	KOBJMETHOD(g_raid_tr_event,	g_raid_tr_event_concat),
+	KOBJMETHOD(g_raid_tr_start,	g_raid_tr_start_concat),
+	KOBJMETHOD(g_raid_tr_stop,	g_raid_tr_stop_concat),
+	KOBJMETHOD(g_raid_tr_iostart,	g_raid_tr_iostart_concat),
+	KOBJMETHOD(g_raid_tr_iodone,	g_raid_tr_iodone_concat),
+	KOBJMETHOD(g_raid_tr_kerneldump,	g_raid_tr_kerneldump_concat),
+	KOBJMETHOD(g_raid_tr_free,	g_raid_tr_free_concat),
+	{ 0, 0 }
+};
+
+static struct g_raid_tr_class g_raid_tr_concat_class = {
+	"CONCAT",
+	g_raid_tr_concat_methods,
+	sizeof(struct g_raid_tr_concat_object),
+	.trc_priority = 100
+};
+
+static int
+g_raid_tr_taste_concat(struct g_raid_tr_object *tr, struct g_raid_volume *volume)
+{
+	struct g_raid_tr_concat_object *trs;
+
+	trs = (struct g_raid_tr_concat_object *)tr;
+	if (tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_SINGLE &&
+	    tr->tro_volume->v_raid_level != G_RAID_VOLUME_RL_CONCAT)
+		return (G_RAID_TR_TASTE_FAIL);
+	trs->trso_starting = 1;
+	return (G_RAID_TR_TASTE_SUCCEED);
+}
+
+static int
+g_raid_tr_update_state_concat(struct g_raid_volume *vol)
+{
+	struct g_raid_tr_concat_object *trs;
+	struct g_raid_softc *sc;
+	off_t size;
+	u_int s;
+	int i, n, f;
+
+	sc = vol->v_softc;
+	trs = (struct g_raid_tr_concat_object *)vol->v_tr;
+	if (trs->trso_stopped)
+		s = G_RAID_VOLUME_S_STOPPED;
+	else if (trs->trso_starting)
+		s = G_RAID_VOLUME_S_STARTING;
+	else {
+		n = g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_ACTIVE);
+		f = g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_FAILED);
+		if (n + f == vol->v_disks_count) {
+			if (f == 0)
+				s = G_RAID_VOLUME_S_OPTIMAL;
+			else
+				s = G_RAID_VOLUME_S_SUBOPTIMAL;
+		} else
+			s = G_RAID_VOLUME_S_BROKEN;
+	}
+	if (s != vol->v_state) {
+
+		/*
+		 * Some metadata modules may not know CONCAT volume
+		 * mediasize until all disks connected. Recalculate.
+		 */
+		if (G_RAID_VOLUME_S_ALIVE(s) &&
+		    !G_RAID_VOLUME_S_ALIVE(vol->v_state)) {
+			size = 0;
+			for (i = 0; i < vol->v_disks_count; i++) {
+				if (vol->v_subdisks[i].sd_state !=
+				    G_RAID_SUBDISK_S_NONE)
+					size += vol->v_subdisks[i].sd_size;
+			}
+			vol->v_mediasize = size;
+		}
+
+		g_raid_event_send(vol, G_RAID_VOLUME_S_ALIVE(s) ?
+		    G_RAID_VOLUME_E_UP : G_RAID_VOLUME_E_DOWN,
+		    G_RAID_EVENT_VOLUME);
+		g_raid_change_volume_state(vol, s);
+		if (!trs->trso_starting && !trs->trso_stopped)
+			g_raid_write_metadata(sc, vol, NULL, NULL);
+	}
+	return (0);
+}
+
+static int
+g_raid_tr_event_concat(struct g_raid_tr_object *tr,
+    struct g_raid_subdisk *sd, u_int event)
+{
+	struct g_raid_tr_concat_object *trs;
+	struct g_raid_softc *sc;
+	struct g_raid_volume *vol;
+	int state;
+
+	trs = (struct g_raid_tr_concat_object *)tr;
+	vol = tr->tro_volume;
+	sc = vol->v_softc;
+
+	state = sd->sd_state;
+	if (state != G_RAID_SUBDISK_S_NONE &&
+	    state != G_RAID_SUBDISK_S_FAILED &&
+	    state != G_RAID_SUBDISK_S_ACTIVE) {
+		G_RAID_DEBUG1(1, sc,
+		    "Promote subdisk %s:%d from %s to ACTIVE.",
+		    vol->v_name, sd->sd_pos,
+		    g_raid_subdisk_state2str(sd->sd_state));
+		g_raid_change_subdisk_state(sd, G_RAID_SUBDISK_S_ACTIVE);
+	}
+	if (state != sd->sd_state &&
+	    !trs->trso_starting && !trs->trso_stopped)
+		g_raid_write_metadata(sc, vol, sd, NULL);
+	g_raid_tr_update_state_concat(vol);
+	return (0);
+}
+
+static int
+g_raid_tr_start_concat(struct g_raid_tr_object *tr)
+{
+	struct g_raid_tr_concat_object *trs;
+	struct g_raid_volume *vol;
+
+	trs = (struct g_raid_tr_concat_object *)tr;
+	vol = tr->tro_volume;
+	trs->trso_starting = 0;
+	g_raid_tr_update_state_concat(vol);
+	return (0);
+}
+
+static int
+g_raid_tr_stop_concat(struct g_raid_tr_object *tr)
+{
+	struct g_raid_tr_concat_object *trs;
+	struct g_raid_volume *vol;
+
+	trs = (struct g_raid_tr_concat_object *)tr;
+	vol = tr->tro_volume;
+	trs->trso_starting = 0;
+	trs->trso_stopped = 1;
+	g_raid_tr_update_state_concat(vol);
+	return (0);
+}
+
+static void
+g_raid_tr_iostart_concat(struct g_raid_tr_object *tr, struct bio *bp)
+{
+	struct g_raid_volume *vol;
+	struct g_raid_subdisk *sd;
+	struct bio_queue_head queue;
+	struct bio *cbp;
+	char *addr;
+	off_t offset, length, remain;
+	u_int no;
+
+	vol = tr->tro_volume;
+	if (vol->v_state != G_RAID_VOLUME_S_OPTIMAL &&
+	    vol->v_state != G_RAID_VOLUME_S_SUBOPTIMAL) {
+		g_raid_iodone(bp, EIO);
+		return;
+	}
+	if (bp->bio_cmd == BIO_FLUSH) {
+		g_raid_tr_flush_common(tr, bp);
+		return;
+	}
+
+	offset = bp->bio_offset;
+	remain = bp->bio_length;
+	addr = bp->bio_data;
+	no = 0;
+	while (no < vol->v_disks_count &&
+	    offset >= vol->v_subdisks[no].sd_size) {
+		offset -= vol->v_subdisks[no].sd_size;
+		no++;
+	}
+	KASSERT(no < vol->v_disks_count,
+	    ("Request starts after volume end (%ju)", bp->bio_offset));
+	bioq_init(&queue);
+	do {
+		sd = &vol->v_subdisks[no];
+		length = MIN(sd->sd_size - offset, remain);
+		cbp = g_clone_bio(bp);
+		if (cbp == NULL)
+			goto failure;
+		cbp->bio_offset = offset;
+		cbp->bio_data = addr;
+		cbp->bio_length = length;
+		cbp->bio_caller1 = sd;
+		bioq_insert_tail(&queue, cbp);
+		remain -= length;
+		addr += length;
+		offset = 0;
+		no++;
+		KASSERT(no < vol->v_disks_count || remain == 0,
+		    ("Request ends after volume end (%ju, %ju)",
+			bp->bio_offset, bp->bio_length));
+	} while (remain > 0);
+	for (cbp = bioq_first(&queue); cbp != NULL;
+	    cbp = bioq_first(&queue)) {
+		bioq_remove(&queue, cbp);
+		sd = cbp->bio_caller1;
+		cbp->bio_caller1 = NULL;
+		g_raid_subdisk_iostart(sd, cbp);
+	}
+	return;
+failure:
+	for (cbp = bioq_first(&queue); cbp != NULL;
+	    cbp = bioq_first(&queue)) {
+		bioq_remove(&queue, cbp);
+		g_destroy_bio(cbp);
+	}
+	if (bp->bio_error == 0)
+		bp->bio_error = ENOMEM;
+	g_raid_iodone(bp, bp->bio_error);
+}
+
+static int
+g_raid_tr_kerneldump_concat(struct g_raid_tr_object *tr,
+    void *virtual, vm_offset_t physical, off_t boffset, size_t blength)
+{
+	struct g_raid_volume *vol;
+	struct g_raid_subdisk *sd;
+	char *addr;
+	off_t offset, length, remain;
+	int error, no;
+
+	vol = tr->tro_volume;
+	if (vol->v_state != G_RAID_VOLUME_S_OPTIMAL)
+		return (ENXIO);
+
+	offset = boffset;
+	remain = blength;
+	addr = virtual;
+	no = 0;
+	while (no < vol->v_disks_count &&
+	    offset >= vol->v_subdisks[no].sd_size) {
+		offset -= vol->v_subdisks[no].sd_size;
+		no++;
+	}
+	KASSERT(no < vol->v_disks_count,
+	    ("Request starts after volume end (%ju)", boffset));
+	do {
+		sd = &vol->v_subdisks[no];
+		length = MIN(sd->sd_size - offset, remain);
+		error = g_raid_subdisk_kerneldump(&vol->v_subdisks[no],
+		    addr, 0, offset, length);
+		if (error != 0)
+			return (error);
+		remain -= length;
+		addr += length;
+		offset = 0;
+		no++;
+		KASSERT(no < vol->v_disks_count || remain == 0,
+		    ("Request ends after volume end (%ju, %ju)",
+			boffset, blength));
+	} while (remain > 0);
+	return (0);
+}
+
+static void
+g_raid_tr_iodone_concat(struct g_raid_tr_object *tr,
+    struct g_raid_subdisk *sd,struct bio *bp)
+{
+	struct bio *pbp;
+
+	pbp = bp->bio_parent;
+	if (pbp->bio_error == 0)
+		pbp->bio_error = bp->bio_error;
+	g_destroy_bio(bp);
+	pbp->bio_inbed++;
+	if (pbp->bio_children == pbp->bio_inbed) {
+		pbp->bio_completed = pbp->bio_length;
+		g_raid_iodone(pbp, bp->bio_error);
+	}
+}
+
+static int
+g_raid_tr_free_concat(struct g_raid_tr_object *tr)
+{
+
+	return (0);
+}
+
+G_RAID_TR_DECLARE(g_raid_tr_concat);

Modified: projects/graid/7/sys/modules/geom/geom_raid/Makefile
==============================================================================
--- projects/graid/7/sys/modules/geom/geom_raid/Makefile	Thu Feb 17 16:12:55 2011	(r218774)
+++ projects/graid/7/sys/modules/geom/geom_raid/Makefile	Thu Feb 17 16:21:26 2011	(r218775)
@@ -9,9 +9,9 @@ SRCS+=	bus_if.h device_if.h
 SRCS+=	g_raid_md_if.h g_raid_md_if.c
 SRCS+=	g_raid_tr_if.h g_raid_tr_if.c
 
-SRCS+=	md_intel.c
+SRCS+=	md_intel.c md_jmicron.c
 
-SRCS+=	tr_raid0.c tr_raid1.c tr_raid1e.c
+SRCS+=	tr_concat.c tr_raid0.c tr_raid1.c tr_raid1e.c
 
 MFILES=	kern/bus_if.m kern/device_if.m
 MFILES+= geom/raid/g_raid_md_if.m geom/raid/g_raid_tr_if.m



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102171621.p1HGLQqd017464>