svn commit: r218463 - in projects/graid/7: . contrib/bsnmp/snmpd
contrib/wpa_supplicant gnu/usr.bin/groff/tmac share/misc
sys/geom/raid tools/tools/nanobsd usr.sbin
usr.sbin/bsnmpd/modules/snmp_hos...
Alexander Motin
mav at FreeBSD.org
Tue Feb 8 22:17:59 UTC 2011
Author: mav
Date: Tue Feb 8 22:17:59 2011
New Revision: 218463
URL: http://svn.freebsd.org/changeset/base/218463
Log:
MFH r218459
Modified:
projects/graid/7/sys/geom/raid/g_raid.c
projects/graid/7/sys/geom/raid/g_raid.h
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/sys/geom/raid/g_raid.c
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 22:16:32 2011 (r218462)
+++ projects/graid/7/sys/geom/raid/g_raid.c Tue Feb 8 22:17:59 2011 (r218463)
@@ -1000,7 +1000,8 @@ g_raid_iodone(struct bio *bp, int error)
}
int
-g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp)
+g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len,
+ struct bio *ignore, void *argp)
{
struct g_raid_softc *sc;
struct g_raid_lock *lp;
@@ -1015,7 +1016,7 @@ g_raid_lock_range(struct g_raid_volume *
lp->l_pending = 0;
TAILQ_FOREACH(bp, &vol->v_inflight.queue, bio_queue) {
- if (g_raid_bio_overlaps(bp, off, len))
+ if (bp != ignore && g_raid_bio_overlaps(bp, off, len))
lp->l_pending++;
}
Modified: projects/graid/7/sys/geom/raid/g_raid.h
==============================================================================
--- projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 22:16:32 2011 (r218462)
+++ projects/graid/7/sys/geom/raid/g_raid.h Tue Feb 8 22:17:59 2011 (r218463)
@@ -377,7 +377,8 @@ struct g_raid_subdisk * g_raid_get_subdi
#define G_RAID_DESTROY_HARD 2
int g_raid_destroy(struct g_raid_softc *sc, int how);
int g_raid_event_send(void *arg, int event, int flags);
-int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len, void *argp);
+int g_raid_lock_range(struct g_raid_volume *vol, off_t off, off_t len,
+ struct bio *ignore, void *argp);
int g_raid_unlock_range(struct g_raid_volume *vol, off_t off, off_t len);
g_ctl_req_t g_raid_ctl;
Modified: projects/graid/7/sys/geom/raid/tr_raid1.c
==============================================================================
--- projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 22:16:32 2011 (r218462)
+++ projects/graid/7/sys/geom/raid/tr_raid1.c Tue Feb 8 22:17:59 2011 (r218463)
@@ -255,7 +255,7 @@ g_raid_tr_raid1_rebuild_some(struct g_ra
trs->trso_flags |= TR_RAID1_F_DOING_SOME;
trs->trso_flags |= TR_RAID1_F_LOCKED;
g_raid_lock_range(sd->sd_volume, /* Lock callback starts I/O */
- bp->bio_offset, bp->bio_length, bp);
+ bp->bio_offset, bp->bio_length, NULL, bp);
}
static void
@@ -737,7 +737,7 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
/* Lock callback starts I/O */
trs->trso_flags |= TR_RAID1_F_LOCKED;
g_raid_lock_range(sd->sd_volume,
- bp->bio_offset, bp->bio_length, bp);
+ bp->bio_offset, bp->bio_length, NULL, bp);
}
} else if (trs->trso_type == TR_RAID1_RESYNC) {
/*
@@ -749,8 +749,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
}
return;
}
- if (bp->bio_error != 0 && bp->bio_cmd == BIO_READ &&
- pbp->bio_children == 1 && bp->bio_cflags == 0) {
+ pbp->bio_inbed++;
+ if (bp->bio_cmd == BIO_READ && bp->bio_error != 0) {
/*
* Read failed on first drive. Retry the read error on
* another disk drive, if available, before erroring out the
@@ -758,9 +758,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
*/
vol = tr->tro_volume;
sd->sd_read_errs++;
- G_RAID_LOGREQ(3, bp,
- "Read failure, attempting recovery. %d total read errs",
- sd->sd_read_errs);
+ G_RAID_LOGREQ(0, bp,
+ "Read error (%d), %d read errors total",
+ bp->bio_error, sd->sd_read_errs);
/*
* If there are too many read errors, we move to degraded.
@@ -768,13 +768,18 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
* everything to get it back in sync), or just degrade the
* drive, which kicks off a resync?
*/
- if (sd->sd_read_errs > g_raid1_read_err_thresh)
+ if (sd->sd_read_errs > g_raid1_read_err_thresh) {
g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk);
+ if (pbp->bio_children == 1)
+ goto remapdone;
+ }
/*
* Find the other disk, and try to do the I/O to it.
*/
for (nsd = NULL, i = 0; i < vol->v_disks_count; i++) {
+ if (pbp->bio_children > 1)
+ break;
nsd = &vol->v_subdisks[i];
if (sd == nsd)
continue;
@@ -784,8 +789,12 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
if (cbp == NULL)
break;
G_RAID_LOGREQ(2, cbp, "Retrying read");
- g_raid_subdisk_iostart(nsd, cbp);
- pbp->bio_inbed++;
+ pbp->bio_driver1 = sd; /* Save original subdisk. */
+ cbp->bio_caller1 = nsd;
+ cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP;
+ /* Lock callback starts I/O */
+ g_raid_lock_range(sd->sd_volume,
+ cbp->bio_offset, cbp->bio_length, pbp, cbp);
return;
}
/*
@@ -796,9 +805,8 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
*/
G_RAID_LOGREQ(2, bp, "Couldn't retry read, failing it");
}
- pbp->bio_inbed++;
- if (pbp->bio_cmd == BIO_READ && pbp->bio_children == 2 &&
- bp->bio_cflags == 0) {
+ if (bp->bio_cmd == BIO_READ && bp->bio_error == 0 &&
+ pbp->bio_children > 1) {
/*
* If it was a read, and bio_children is 2, then we just
* recovered the data from the second drive. We should try to
@@ -813,17 +821,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
G_RAID_LOGREQ(3, bp, "Recovered data from other drive");
cbp = g_clone_bio(pbp);
if (cbp != NULL) {
- nsd = bp->bio_caller1;
cbp->bio_cmd = BIO_WRITE;
cbp->bio_cflags = G_RAID_BIO_FLAG_REMAP;
- cbp->bio_caller1 = nsd;
- G_RAID_LOGREQ(3, bp,
+ G_RAID_LOGREQ(3, cbp,
"Attempting bad sector remap on failing drive.");
- /* Lock callback starts I/O */
- g_raid_lock_range(sd->sd_volume,
- cbp->bio_offset, cbp->bio_length, cbp);
+ g_raid_subdisk_iostart(pbp->bio_driver1, cbp);
+ return;
}
}
+remapdone:
if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) {
/*
* We're done with a remap write, mark the range as unlocked.
@@ -834,14 +840,15 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
* it now. However, we need to reset error to 0 in that case
* because we're not failing the original I/O which succeeded.
*/
- G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error);
- g_raid_unlock_range(sd->sd_volume, bp->bio_offset,
- bp->bio_length);
- if (bp->bio_error) {
- G_RAID_LOGREQ(3, bp, "Error on remap: mark subdisk bad.");
+ if (pbp->bio_cmd == BIO_WRITE && bp->bio_error) {
+ G_RAID_LOGREQ(0, bp, "Remap write failed: "
+ "failing subdisk.");
g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk);
bp->bio_error = 0;
}
+ G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error);
+ g_raid_unlock_range(sd->sd_volume, bp->bio_offset,
+ bp->bio_length);
}
error = bp->bio_error;
g_destroy_bio(bp);
More information about the svn-src-projects
mailing list