PERFORCE change 120322 for review

Ulf Lilleengen lulf at FreeBSD.org
Thu May 24 16:47:27 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=120322

Change 120322 by lulf at lulf_vimes on 2007/05/24 16:47:07

	- Integrate from Lukas.
	- RAID5 Rebuild now works in the new event system.
	- Beeing able to check parity comes in next commit.
	- Also fixes small issues i got with gcc 4.2

Affected files ...

.. //depot/projects/soc2007/lulf/gvinum_fixup/Makefile#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/Makefile.inc1#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sbin/gvinum/gvinum.c#3 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.amd64#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.arm#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.i386#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.ia64#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.pc98#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.powerpc#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.sparc64#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.sun4v#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/NOTES#4 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/files#5 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.mk#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.pre.mk#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kmod.mk#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/options#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.c#4 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#9 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.h#7 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_init.c#3 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_plex.c#4 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_raid5.c#3 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_subr.c#5 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_var.h#8 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/Makefile#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/busdma_machdep.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/elf_machdep.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/machdep.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/mp_machdep.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/pmap.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/sys_machdep.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/i386/vm_machdep.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/include/proc.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/include/smp.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/i386/linux/linux_machdep.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/Make.tags.inc#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/imgact_elf.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/init_main.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_acct.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_clock.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_exec.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_exit.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_fork.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_lock.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_malloc.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_mib.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_mutex.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_resource.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_rwlock.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_sx.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_synch.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_thread.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/kern_timeout.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_lock.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_prof.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_sleepqueue.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_trap.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_turnstile.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/subr_witness.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_domain.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_mbuf.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_sockbuf.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_socket.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_syscalls.c#4 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/uipc_usrreq.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vfs_bio.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vfs_default.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vfs_subr.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vfs_vnops.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/kern/vnode_if.src#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/acct.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/callout.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/lockf.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/param.h#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/sx.h#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/sysctl.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/sysent.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/systm.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/vmmeter.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/sys/vnode.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/swap_pager.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/uma_core.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/uma_int.h#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_contig.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_fault.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_glue.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_map.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_meter.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_mmap.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_object.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_page.c#3 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_pageout.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_pageq.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vm_zeroidle.c#2 integrate
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/vm/vnode_pager.c#2 integrate

Differences ...

==== //depot/projects/soc2007/lulf/gvinum_fixup/Makefile#2 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile,v 1.340 2007/04/02 21:32:44 marcel Exp $
+# $FreeBSD: src/Makefile,v 1.341 2007/05/16 08:46:35 des Exp $
 #
 # The user-driven targets are:
 #
@@ -17,9 +17,14 @@
 # kernel              - buildkernel + installkernel.
 # doxygen             - Build API documentation of the kernel, needs doxygen.
 # update              - Convenient way to update your source tree (cvs).
-# check-old           - Print a list of old files/directories in the system.
-# delete-old          - Delete obsolete files and directories interactively.
-# delete-old-libs     - Delete obsolete libraries interactively.
+# check-old           - List obsolete directories/files/libraries.
+# check-old-dirs      - List obsolete directories.
+# check-old-files     - List obsolete files.
+# check-old-libs      - List obsolete libraries.
+# delete-old          - Delete obsolete directories/files/libraries.
+# delete-old-dirs     - Delete obsolete directories.
+# delete-old-files    - Delete obsolete files.
+# delete-old-libs     - Delete obsolete libraries.
 #
 # This makefile is simple by design. The FreeBSD make automatically reads
 # the /usr/share/mk/sys.mk unless the -m argument is specified on the
@@ -70,8 +75,10 @@
 # developer convenience only.  They are intentionally not documented and
 # completely subject to change without notice.
 #
-TGTS=	all all-man buildenv buildenvvars buildkernel buildworld check-old \
-	checkdpadd clean cleandepend cleandir delete-old delete-old-libs \
+TGTS=	all all-man buildenv buildenvvars buildkernel buildworld \
+	check-old check-old-dirs check-old-files check-old-libs \
+	checkdpadd clean cleandepend cleandir \
+	delete-old delete-old-dirs delete-old-files delete-old-libs \
 	depend distribute distributeworld distrib-dirs distribution doxygen \
 	everything hierarchy install installcheck installkernel \
 	installkernel.debug reinstallkernel reinstallkernel.debug \

==== //depot/projects/soc2007/lulf/gvinum_fixup/Makefile.inc1#3 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile.inc1,v 1.572 2007/04/17 15:52:36 pjd Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.581 2007/05/19 20:34:29 des Exp $
 #
 # Make command line options:
 #	-DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
@@ -994,21 +994,31 @@
 #
 libraries:
 	cd ${.CURDIR}; \
+	    ${MAKE} -f Makefile.inc1 _prereq_libs; \
 	    ${MAKE} -f Makefile.inc1 _startup_libs; \
 	    ${MAKE} -f Makefile.inc1 _prebuild_libs; \
 	    ${MAKE} -f Makefile.inc1 _generic_libs;
 
+#
+# static libgcc.a prerequisite for shared libc
+#
+_prereq_libs= gnu/lib/libgcc
+
 # These dependencies are not automatically generated:
 #
-# gnu/lib/csu, gnu/lib/libgcc and lib/csu must be built before all
-# shared libraries for ELF.
+# gnu/lib/csu, gnu/lib/libgcc, lib/csu and lib/libc must be built before
+# all shared libraries for ELF.
 #
-_startup_libs=	gnu/lib/csu gnu/lib/libgcc
+_startup_libs=	gnu/lib/csu
 .if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH}-elf)
 _startup_libs+=	lib/csu/${MACHINE_ARCH}-elf
 .else
 _startup_libs+=	lib/csu/${MACHINE_ARCH}
 .endif
+_startup_libs+=	gnu/lib/libgcc
+_startup_libs+=	lib/libc
+
+gnu/lib/libgcc__L: lib/libc__L
 
 _prebuild_libs=	${_kerberos5_lib_libasn1} ${_kerberos5_lib_libkrb5} \
 		${_kerberos5_lib_libroken} \
@@ -1016,7 +1026,7 @@
 		${_lib_libgssapi} ${_lib_libipx} \
 		lib/libkiconv lib/libkvm lib/libmd \
 		lib/ncurses/ncurses lib/ncurses/ncursesw \
-		lib/libopie lib/libpam lib/libpthread \
+		lib/libopie lib/libpam lib/${DEFAULT_THREAD_LIB} \
 		lib/libradius lib/libsbuf lib/libtacplus lib/libutil \
 		${_lib_libypclnt} lib/libz lib/msun \
 		${_secure_lib_libcrypto} ${_secure_lib_libssh} \
@@ -1068,6 +1078,18 @@
 lib/libradius__L: lib/libmd__L
 .endif
 
+.for _lib in ${_prereq_libs}
+${_lib}__PL: .PHONY
+.if exists(${.CURDIR}/${_lib})
+	${_+_}@${ECHODIR} "===> ${_lib} (obj,depend,all,install)"; \
+		cd ${.CURDIR}/${_lib}; \
+		${MAKE} DIRPRFX=${_lib}/ obj; \
+		${MAKE} DIRPRFX=${_lib}/ depend; \
+		${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ all; \
+		${MAKE} -DWITHOUT_PROFILE -DNO_PIC DIRPRFX=${_lib}/ install
+.endif
+.endfor
+
 .for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs}
 ${_lib}__L: .PHONY
 .if exists(${.CURDIR}/${_lib})
@@ -1091,6 +1113,7 @@
 		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET all; \
 		${MAKE} DIRPRFX=lib/libpam/ -D_NO_LIBPAM_SO_YET install
 
+_prereq_libs:  ${_prereq_libs:S/$/__PL/}
 _startup_libs: ${_startup_libs:S/$/__L/}
 _prebuild_libs: ${_prebuild_libs:S/$/__L/}
 _generic_libs: ${_generic_libs:S/$/__L/}
@@ -1114,7 +1137,10 @@
 
 .include <bsd.subdir.mk>
 
-.if make(delete-old) || make(delete-old-libs) || make(check-old)
+.if make(check-old) || make(check-old-dirs) || \
+    make(check-old-files) || make(check-old-libs) || \
+    make(delete-old) || make(delete-old-dirs) || \
+    make(delete-old-files) || make(delete-old-libs)
 
 #
 # check for / delete old files section
@@ -1135,18 +1161,14 @@
 
 delete-old-files:
 	@echo ">>> Removing old files (only deletes safe to delete libs)"
-.for file in ${OLD_FILES}
 # Ask for every old file if the user really wants to remove it.
 # It's annoying, but better safe than sorry.
-	@if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \
-		rm ${RM_I} "${DESTDIR}/${file}" || true; \
-		if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then\
-			echo "Removing schg flag on ${DESTDIR}/${file}"; \
-			chflags noschg "${DESTDIR}/${file}"; \
-			rm ${RM_I} "${DESTDIR}/${file}"; \
+	@for file in ${OLD_FILES}; do \
+		if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
+			chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
+			rm ${RM_I} "${DESTDIR}/$${file}"; \
 		fi; \
-	fi
-.endfor
+	done
 # Remove catpages without corresponding manpages.
 	@3<&0; \
 	find ${DESTDIR}/usr/share/man/cat* ! -type d | \
@@ -1161,11 +1183,11 @@
 
 check-old-files:
 	@echo ">>> Checking for old files"
-.for file in ${OLD_FILES}
-	@if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \
-		 echo "${DESTDIR}/${file}"; \
-	fi
-.endfor
+	@for file in ${OLD_FILES}; do \
+		if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
+		 	echo "${DESTDIR}/$${file}"; \
+		fi; \
+	done
 # Check for catpages without corresponding manpages.
 	@find ${DESTDIR}/usr/share/man/cat* ! -type d | \
 	sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \
@@ -1179,51 +1201,42 @@
 delete-old-libs:
 	@echo ">>> Removing old libraries"
 	@echo "${OLD_LIBS_MESSAGE}" | fmt
-.for file in ${OLD_LIBS}
-	@if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \
-		rm ${RM_I} "${DESTDIR}/${file}" || true; \
-		if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then\
-			echo "Removing schg flag on ${DESTDIR}/${file}"; \
-			chflags noschg "${DESTDIR}/${file}"; \
-			rm ${RM_I} "${DESTDIR}/${file}"; \
+	@for file in ${OLD_LIBS}; do \
+		if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
+			chflags noschg "${DESTDIR}/$${file}" 2>/dev/null || true; \
+			rm ${RM_I} "${DESTDIR}/$${file}"; \
 		fi; \
-	fi
-.endfor
+	done
 	@echo ">>> Old libraries removed"
 
 check-old-libs:
 	@echo ">>> Checking for old libraries"
-.for file in ${OLD_LIBS}
-	@if [ -f "${DESTDIR}/${file}" -o -L "${DESTDIR}/${file}" ]; then \
-		echo "${DESTDIR}/${file}"; \
-	fi
-.endfor
+	@for file in ${OLD_LIBS}; do \
+		if [ -f "${DESTDIR}/$${file}" -o -L "${DESTDIR}/$${file}" ]; then \
+			echo "${DESTDIR}/$${file}"; \
+		fi; \
+	done
 
 delete-old-dirs:
 	@echo ">>> Removing old directories"
-.for dir in ${OLD_DIRS}
-# Don't fail if an old directory isn't empty.
-	@if [ -d "${DESTDIR}/${dir}" ]; then \
-		rmdir -v "${DESTDIR}/${dir}" || true; \
-	else \
-		if [ -L "${DESTDIR}/${dir}" ]; then \
-			echo "${DESTDIR}/${dir} is a link, please remove everything manually."; \
+	@for dir in ${OLD_DIRS}; do \
+		if [ -d "${DESTDIR}/$${dir}" ]; then \
+			rmdir -v "${DESTDIR}/$${dir}" || true; \
+		elif [ -L "${DESTDIR}/$${dir}" ]; then \
+			echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
 		fi; \
-	fi
-.endfor
+	done
 	@echo ">>> Old directories removed"
 
 check-old-dirs:
 	@echo ">>> Checking for old directories"
-.for dir in ${OLD_DIRS}
-	@if [ -d "${DESTDIR}/${dir}" ]; then \
-		echo "${DESTDIR}/${dir}"; \
-	else \
-		if [ -L "${DESTDIR}/${dir}" ]; then \
-			echo "${DESTDIR}/${dir} is a link, please remove everything manually."; \
+	@for dir in ${OLD_DIRS}; do \
+		if [ -d "${DESTDIR}/$${dir}" ]; then \
+			echo "${DESTDIR}/$${dir}"; \
+		elif [ -L "${DESTDIR}/$${dir}" ]; then \
+			echo "${DESTDIR}/$${dir} is a link, please remove everything manually."; \
 		fi; \
-	fi
-.endfor
+	done
 
 delete-old: delete-old-files delete-old-dirs
 	@echo "To remove old libraries run '${MAKE} delete-old-libs'."

==== //depot/projects/soc2007/lulf/gvinum_fixup/sbin/gvinum/gvinum.c#3 (text+ko) ====

@@ -554,8 +554,7 @@
 gvinum_parityop(int argc, char **argv, int rebuild)
 {
 	struct gctl_req *req;
-	int flags, i, rv;
-	off_t offset;
+	int flags, i;
 	const char *errstr;
 	char *op, *msg;
 
@@ -592,7 +591,17 @@
 		return;
 	}
 
-	do {
+	req = gctl_get_handle();
+	gctl_ro_param(req, "class", -1, "VINUM");
+	gctl_ro_param(req, "verb", -1, op);
+	gctl_ro_param(req, "flags", sizeof(int), &flags);
+	gctl_ro_param(req, "plex", -1, argv[0]);
+
+	errstr = gctl_issue(req);
+	if (errstr)
+		warnx("%s\n", errstr);
+	gctl_free(req);
+/*	do {
 		rv = 0;
 		req = gctl_get_handle();
 		gctl_ro_param(req, "class", -1, "VINUM");
@@ -621,16 +630,16 @@
 		}
 		fflush(stdout);
 
-		/* Clear the -f flag. */
+		 Clear the -f flag. 
 		flags &= ~GV_FLAG_F;
-	} while (rv >= 0);
+	} while (rv >= 0);*/
 
-	if ((rv == 2) && (flags & GV_FLAG_V)) {
+/*	if ((rv == 2) && (flags & GV_FLAG_V)) {
 		if (rebuild)
 			printf("Rebuilt parity on %s\n", argv[0]);
 		else
 			printf("%s has correct parity\n", argv[0]);
-	}
+	}*/
 }
 
 void

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.amd64#2 (text+ko) ====

@@ -2,7 +2,7 @@
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
 #	from FreeBSD: src/sys/conf/Makefile.i386,v 1.255 2002/02/20 23:35:49
-# $FreeBSD: src/sys/conf/Makefile.amd64,v 1.22 2005/11/28 17:51:30 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.amd64,v 1.24 2007/05/16 17:23:53 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.arm#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.arm -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.arm,v 1.31 2006/07/24 22:09:47 cognet Exp $
+# $FreeBSD: src/sys/conf/Makefile.arm,v 1.33 2007/05/16 17:23:53 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.i386#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.i386 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.i386,v 1.271 2006/01/29 03:32:19 nyan Exp $
+# $FreeBSD: src/sys/conf/Makefile.i386,v 1.273 2007/05/16 17:23:53 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.ia64#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.ia64 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: src/sys/conf/Makefile.alpha,v 1.76
-# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.67 2005/11/28 17:51:31 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.ia64,v 1.69 2007/05/16 17:23:53 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.pc98#2 (text+ko) ====

@@ -3,7 +3,7 @@
 # Makefile.i386 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.173 2006/01/29 03:32:19 nyan Exp $
+# $FreeBSD: src/sys/conf/Makefile.pc98,v 1.175 2007/05/16 17:23:53 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.powerpc#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.powerpc -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.powerpc,v 1.283 2005/11/28 17:51:31 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.powerpc,v 1.285 2007/05/16 17:23:54 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.sparc64#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.sparc64 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.sparc64,v 1.38 2005/11/28 17:51:31 imp Exp $
+# $FreeBSD: src/sys/conf/Makefile.sparc64,v 1.40 2007/05/16 17:23:54 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/Makefile.sun4v#2 (text+ko) ====

@@ -1,7 +1,7 @@
 # Makefile.sparc64 -- with config changes.
 # Copyright 1990 W. Jolitz
 #	from: @(#)Makefile.i386	7.1 5/10/91
-# $FreeBSD: src/sys/conf/Makefile.sun4v,v 1.1 2006/10/05 06:14:24 kmacy Exp $
+# $FreeBSD: src/sys/conf/Makefile.sun4v,v 1.3 2007/05/16 17:23:54 wkoszek Exp $
 #
 # Makefile for FreeBSD
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/NOTES#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/NOTES,v 1.1424 2007/05/09 15:55:45 scottl Exp $
+# $FreeBSD: src/sys/conf/NOTES,v 1.1427 2007/05/16 17:19:47 scottl Exp $
 #
 # NOTES -- Lines that can be cut/pasted into kernel and hints configs.
 #
@@ -669,6 +669,7 @@
 options 	NETGRAPH_BLUETOOTH_UBTBCMFW	# ubtbcmfw(4)
 options 	NETGRAPH_BPF
 options 	NETGRAPH_BRIDGE
+options 	NETGRAPH_CAR
 options 	NETGRAPH_CISCO
 options 	NETGRAPH_DEFLATE
 options 	NETGRAPH_DEVICE
@@ -790,6 +791,7 @@
 device		wlan_tkip		#802.11 TKIP support
 device		wlan_xauth		#802.11 external authenticator support
 device		wlan_acl		#802.11 MAC ACL support
+device		wlan_amrr		#AMRR transmit rate control algorithm
 device		token			#Generic TokenRing
 device		fddi			#Generic FDDI
 device		arcnet			#Generic Arcnet
@@ -1627,6 +1629,7 @@
 device		mlx		# Mylex DAC960
 device		amr		# AMI MegaRAID
 device		mfi		# LSI MegaRAID SAS
+device		mfip		# LSI MegaRAID SAS passthrough, requires CAM
 options 	MFI_DEBUG
 
 #

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/files#5 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/files,v 1.1204 2007/05/09 07:07:24 scottl Exp $
+# $FreeBSD: src/sys/conf/files,v 1.1210 2007/05/22 12:00:31 mav Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -340,6 +340,8 @@
 contrib/pf/netinet/in4_cksum.c	optional pf inet
 crypto/blowfish/bf_ecb.c	optional ipsec ipsec_esp
 crypto/blowfish/bf_skey.c	optional crypto | ipsec ipsec_esp
+crypto/camellia/camellia.c	optional crypto | ipsec ipsec_esp
+crypto/camellia/camellia-api.c	optional crypto | ipsec ipsec_esp
 crypto/des/des_ecb.c		optional crypto | ipsec ipsec_esp | netsmb
 crypto/des/des_setkey.c		optional crypto | ipsec ipsec_esp | netsmb
 crypto/rc4/rc4.c		optional netgraph_mppc_encryption
@@ -754,6 +756,7 @@
 dev/mfi/mfi_pci.c		optional mfi pci
 dev/mfi/mfi_disk.c		optional mfi
 dev/mfi/mfi_linux.c		optional mfi compat_linux
+dev/mfi/mfi_cam.c		optional mfip scbus
 dev/mii/acphy.c			optional miibus | acphy
 dev/mii/amphy.c			optional miibus | amphy
 dev/mii/bmtphy.c		optional miibus | bmtphy
@@ -1423,7 +1426,7 @@
 kern/sched_4bsd.c		optional sched_4bsd
 kern/sched_core.c		optional sched_core
 kern/sched_ule.c		optional sched_ule
-kern/serdev_if.m		optional puc | scc
+kern/serdev_if.m		standard
 kern/subr_acl_posix1e.c		standard
 kern/subr_autoconf.c		standard
 kern/subr_blist.c		standard
@@ -1582,6 +1585,8 @@
 net/if_tun.c			optional tun
 net/if_tap.c			optional tap
 net/if_vlan.c			optional vlan
+net/mppcc.c			optional netgraph_mppc_compression
+net/mppcd.c			optional netgraph_mppc_compression
 net/netisr.c			standard
 net/ppp_deflate.c		optional ppp_deflate
 net/ppp_tty.c			optional ppp
@@ -1740,6 +1745,7 @@
 netgraph/ng_base.c		optional netgraph
 netgraph/ng_bpf.c		optional netgraph_bpf
 netgraph/ng_bridge.c		optional netgraph_bridge
+netgraph/ng_car.c		optional netgraph_car
 netgraph/ng_cisco.c		optional netgraph_cisco
 netgraph/ng_deflate.c		optional netgraph_deflate
 netgraph/ng_device.c		optional netgraph_device
@@ -1821,10 +1827,12 @@
 netinet/tcp_hostcache.c		optional inet
 netinet/tcp_input.c		optional inet
 netinet/tcp_output.c		optional inet
+netinet/tcp_reass.c		optional inet
 netinet/tcp_sack.c		optional inet
 netinet/tcp_subr.c		optional inet
 netinet/tcp_syncache.c		optional inet
 netinet/tcp_timer.c		optional inet
+netinet/tcp_timewait.c		optional inet
 netinet/tcp_usrreq.c		optional inet
 netinet/udp_usrreq.c		optional inet
 netinet/libalias/alias.c	optional libalias | netgraph_nat
@@ -1842,6 +1850,7 @@
 netinet6/esp_input.c		optional ipsec ipsec_esp
 netinet6/esp_output.c		optional ipsec ipsec_esp
 netinet6/esp_rijndael.c		optional ipsec ipsec_esp
+netinet6/esp_camellia.c		optional ipsec ipsec_esp
 netinet6/frag6.c		optional inet6
 netinet6/icmp6.c		optional inet6
 netinet6/in6.c			optional inet6

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.mk#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.mk,v 1.50 2006/11/26 23:16:46 kmacy Exp $
+# $FreeBSD: src/sys/conf/kern.mk,v 1.51 2007/05/19 04:45:54 kan Exp $
 
 #
 # Warning flags for compiling the kernel and components of the kernel.
@@ -12,7 +12,7 @@
 .else
 CWARNFLAGS?=	-Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes \
 		-Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual \
-		${_wundef} -fformat-extensions
+		${_wundef} -Wno-pointer-sign -fformat-extensions
 .if !defined(NO_UNDEF)
 _wundef=	-Wundef
 .endif
@@ -46,7 +46,7 @@
 # a very small subset of float registers for integer divides.
 #
 .if ${MACHINE_ARCH} == "ia64"
-CFLAGS+=	-ffixed-r13 -mfixed-range=f32-f127 -mno-sdata
+CFLAGS+=	-ffixed-r13 -mfixed-range=f32-f127 -fpic #-mno-sdata
 INLINE_LIMIT?=	15000
 .endif
 

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kern.pre.mk#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.82 2007/05/04 00:00:10 jfv Exp $
+# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.83 2007/05/19 04:48:07 kan Exp $
 
 # Part of a unified Makefile for building kernels.  This part contains all
 # of the definitions that need to be before %BEFORE_DEPEND.
@@ -53,7 +53,7 @@
 NOSTDINC= -nostdinc
 .endif
 
-INCLUDES= ${NOSTDINC} -I- ${INCLMAGIC} -I. -I$S
+INCLUDES= ${NOSTDINC} ${INCLMAGIC} -I. -I$S
 
 # This hack lets us use the OpenBSD altq code without spamming a new
 # include path into contrib'ed source files.
@@ -90,7 +90,7 @@
 CFLAGS+= -fno-common -finline-limit=${INLINE_LIMIT}
 CFLAGS+= --param inline-unit-growth=100
 CFLAGS+= --param large-function-growth=1000
-WERROR?= -Werror
+#WERROR?= -Werror
 .endif
 
 # XXX LOCORE means "don't declare C stuff" not "for locore.s".

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/kmod.mk#2 (text+ko) ====

@@ -1,5 +1,5 @@
 #	From: @(#)bsd.prog.mk	5.26 (Berkeley) 6/25/91
-# $FreeBSD: src/sys/conf/kmod.mk,v 1.217 2007/03/21 03:42:49 sam Exp $
+# $FreeBSD: src/sys/conf/kmod.mk,v 1.218 2007/05/19 04:48:08 kan Exp $
 #
 # The include file <bsd.kmod.mk> handles building and installing loadable
 # kernel modules.
@@ -79,7 +79,7 @@
 . if !empty(CFLAGS:M-O[23s]) && empty(CFLAGS:M-fno-strict-aliasing)
 CFLAGS+=	-fno-strict-aliasing
 . endif
-WERROR?=	-Werror
+#WERROR?=	-Werror
 .endif
 CFLAGS+=	${WERROR}
 CFLAGS+=	-D_KERNEL
@@ -93,7 +93,7 @@
 NOSTDINC=	-nostdinc
 .endif
 CFLAGS+=	${C_DIALECT}
-CFLAGS:=	${CFLAGS:N-I*} ${NOSTDINC} -I- ${INCLMAGIC} ${CFLAGS:M-I*}
+CFLAGS:=	${CFLAGS:N-I*} ${NOSTDINC} ${INCLMAGIC} ${CFLAGS:M-I*}
 .if defined(KERNBUILDDIR)
 CFLAGS+=	-DHAVE_KERNEL_OPTION_HEADERS -include ${KERNBUILDDIR}/opt_global.h
 .endif

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/conf/options#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.587 2007/05/06 17:04:34 piso Exp $
+# $FreeBSD: src/sys/conf/options,v 1.588 2007/05/15 16:43:01 mav Exp $
 #
 #        On the handling of kernel options
 #
@@ -442,6 +442,7 @@
 NETGRAPH_BLUETOOTH_UBTBCMFW	opt_netgraph.h
 NETGRAPH_BPF		opt_netgraph.h
 NETGRAPH_BRIDGE		opt_netgraph.h
+NETGRAPH_CAR		opt_netgraph.h
 NETGRAPH_CISCO		opt_netgraph.h
 NETGRAPH_DEFLATE	opt_netgraph.h
 NETGRAPH_DEVICE		opt_netgraph.h

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/part/g_part.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.5 2007/05/09 05:37:53 marcel Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/part/g_part.c,v 1.7 2007/05/15 23:29:57 marcel Exp $");
 
 #include <sys/param.h>
 #include <sys/bio.h>
@@ -592,6 +592,13 @@
 	if (null != NULL)
 		kobj_delete((kobj_t)null, M_GEOM);
 
+	/*
+	 * Support automatic commit by filling in the gpp_geom
+	 * parameter.
+	 */
+	gpp->gpp_parms |= G_PART_PARM_GEOM;
+	gpp->gpp_geom = gp;
+
 	/* Provide feedback if so requested. */
 	if (gpp->gpp_parms & G_PART_PARM_OUTPUT) {
 		sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND);
@@ -899,20 +906,20 @@
 	const char *p;
 	enum g_part_ctl ctlreq;
 	unsigned int i, mparms, oparms, parm;
+	int auto_commit, close_on_error;
 	int error, modifies;
 
 	G_PART_TRACE((G_T_TOPOLOGY, "%s(%s,%s)", __func__, mp->name, verb));
 	g_topology_assert();
 
 	ctlreq = G_PART_CTL_NONE;
-	modifies = 0;
+	modifies = 1;
 	mparms = 0;
 	oparms = G_PART_PARM_FLAGS | G_PART_PARM_OUTPUT | G_PART_PARM_VERSION;
 	switch (*verb) {
 	case 'a':
 		if (!strcmp(verb, "add")) {
 			ctlreq = G_PART_CTL_ADD;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM | G_PART_PARM_SIZE |
 			    G_PART_PARM_START | G_PART_PARM_TYPE;
 			oparms |= G_PART_PARM_INDEX | G_PART_PARM_LABEL;
@@ -922,9 +929,9 @@
 		if (!strcmp(verb, "commit")) {
 			ctlreq = G_PART_CTL_COMMIT;
 			mparms |= G_PART_PARM_GEOM;
+			modifies = 0;
 		} else if (!strcmp(verb, "create")) {
 			ctlreq = G_PART_CTL_CREATE;
-			modifies = 1;
 			mparms |= G_PART_PARM_PROVIDER | G_PART_PARM_SCHEME;
 			oparms |= G_PART_PARM_ENTRIES;
 		}
@@ -932,34 +939,28 @@
 	case 'd':
 		if (!strcmp(verb, "delete")) {
 			ctlreq = G_PART_CTL_DELETE;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX;
 		} else if (!strcmp(verb, "destroy")) {
 			ctlreq = G_PART_CTL_DESTROY;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM;
 		}
 		break;
 	case 'm':
 		if (!strcmp(verb, "modify")) {
 			ctlreq = G_PART_CTL_MODIFY;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX;
 			oparms |= G_PART_PARM_LABEL | G_PART_PARM_TYPE;
 		} else if (!strcmp(verb, "move")) {
 			ctlreq = G_PART_CTL_MOVE;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX;
 		}
 		break;
 	case 'r':
 		if (!strcmp(verb, "recover")) {
 			ctlreq = G_PART_CTL_RECOVER;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM;
 		} else if (!strcmp(verb, "resize")) {
 			ctlreq = G_PART_CTL_RESIZE;
-			modifies = 1;
 			mparms |= G_PART_PARM_GEOM | G_PART_PARM_INDEX;
 		}
 		break;
@@ -967,6 +968,7 @@
 		if (!strcmp(verb, "undo")) {
 			ctlreq = G_PART_CTL_UNDO;
 			mparms |= G_PART_PARM_GEOM;
+			modifies = 0;
 		}
 		break;
 	}
@@ -1045,6 +1047,8 @@
 			error = g_part_parm_uint(p, &gpp.gpp_entries);
 			break;
 		case G_PART_PARM_FLAGS:
+			if (p[0] == '\0')
+				continue;
 			error = g_part_parm_str(p, &gpp.gpp_flags);
 			break;
 		case G_PART_PARM_GEOM:
@@ -1054,7 +1058,9 @@
 			error = g_part_parm_uint(p, &gpp.gpp_index);
 			break;
 		case G_PART_PARM_LABEL:
-			error = g_part_parm_str(p, &gpp.gpp_label);
+			/* An empty label is always valid. */
+			gpp.gpp_label = p;
+			error = 0;
 			break;
 		case G_PART_PARM_OUTPUT:
 			error = 0;	/* Write-only parameter */
@@ -1094,6 +1100,8 @@
 	}
 
 	/* Obtain permissions if possible/necessary. */
+	close_on_error = 0;
+	table = NULL;	/* Suppress uninit. warning. */
 	if (modifies && (gpp.gpp_parms & G_PART_PARM_GEOM)) {
 		table = gpp.gpp_geom->softc;
 		if (table != NULL && !table->gpt_opened) {
@@ -1105,6 +1113,7 @@
 				return;
 			}
 			table->gpt_opened = 1;
+			close_on_error = 1;
 		}
 	}
 
@@ -1143,6 +1152,22 @@
 		error = g_part_ctl_undo(req, &gpp);
 		break;
 	}
+
+	/* Implement automatic commit. */
+	if (!error) {
+		auto_commit = (modifies &&
+		    (gpp.gpp_parms & G_PART_PARM_FLAGS) &&
+		    strchr(gpp.gpp_flags, 'C') != NULL) ? 1 : 0;
+		if (auto_commit) {
+			KASSERT(gpp.gpp_parms & G_PART_PARM_GEOM, (__func__));
+			error = g_part_ctl_commit(req, &gpp);
+		}
+	}
+
+	if (error && close_on_error) {
+		g_access(LIST_FIRST(&gpp.gpp_geom->consumer), -1, -1, -1);
+		table->gpt_opened = 0;
+	}
 }
 
 static int

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#9 (text+ko) ====

@@ -74,7 +74,7 @@
 	gv_post_event(sc, GV_EVENT_DRIVE_LOST, d, NULL, NULL);
 }
 
-static void
+void
 gv_start(struct bio *bp)
 {
 	struct g_geom *gp;
@@ -333,10 +333,10 @@
 #if 0
 	} else if (!strcmp(verb, "move")) {
 		gv_move(gp, req);
+#endif
 
-	} else if (!strcmp(verb, "parityop")) {
-		gv_parityop(gp, req);
-#endif
+	} else if (!strcmp(verb, "rebuildparity")) {
+		gv_rebuild_parity(sc, req);
 
 	} else if (!strcmp(verb, "remove")) {
 		gv_remove(gp, req);
@@ -568,6 +568,19 @@
 					    "%d\n", err);
 				break;
 
+			case GV_EVENT_REBUILD:
+				printf("VINUM: event 'rebuild'\n");
+				/* 
+				 * Start the rebuild. The gv_plex_done will
+				 * handle issuing of the remaining rebuild bio's
+				 * until it's finished. 
+				 */
+				/* XXX: Should check plex state here. */
+				p = ev->arg1;
+				p->synced = 0;
+				gv_issue_next_parity_bio(p);
+				break;
+
 			case GV_EVENT_THREAD_EXIT:
 				printf("VINUM: event 'thread exit'\n");
 				g_free(ev);

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.h#7 (text+ko) ====

@@ -81,7 +81,7 @@
 int	gv_consumer_is_open(struct g_consumer *);
 int	gv_provider_is_open(struct g_provider *);
 int	gv_object_type(struct gv_softc *, char *);
-void	gv_parse_config(struct gv_softc *, u_char *);
+void	gv_parse_config(struct gv_softc *, char *);
 int	gv_sd_to_drive(struct gv_sd *, struct gv_drive *);
 int	gv_sd_to_plex(struct gv_sd *, struct gv_plex *);
 void	gv_update_plex_config(struct gv_plex *);
@@ -95,6 +95,7 @@
 void	gv_drive_tasted(struct gv_softc *, struct g_provider *);
 void	gv_drive_lost(struct gv_softc *, struct gv_drive *);
 void	gv_setup_objects(struct gv_softc *);
+void	gv_start(struct bio *);
 
 void	gv_done(struct bio *);
 void	gv_volume_start(struct gv_softc *, struct bio *);
@@ -110,4 +111,7 @@
 
 int	gv_stripe_active(struct gv_plex *, struct bio *);
 
+void	gv_issue_next_parity_bio(struct gv_plex *);
+void	gv_rebuild_parity(struct gv_softc *, struct gctl_req *);
+
 #endif /* !_GEOM_VINUM_H_ */

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_init.c#3 (text+ko) ====

@@ -176,6 +176,8 @@
 	g_topology_lock();
 	error = g_access(cp, -1, -1, 0);
 
+	/* XXX: Unlock? */
+
 out:
 	gctl_set_param(req, "rv", &rv, sizeof(rv));
 }
@@ -356,26 +358,88 @@
 	return (0);
 }
 
-static int
-gv_rebuild_plex(struct gv_plex *p)
+struct gv_bio *
+gv_new_rebuild_bio(struct gv_plex *p, off_t offset)
 {
 	struct gv_sync_args *sync;
+	struct bio *bp;
+	struct gv_volume *v;
+	struct gv_plex *p;
+	struct g_consumer *cp;
+	u_char *buf;
+	off_t i;
+	int error;
+
+	KASSERT(p != NULL, ("gv_rebuild_plex: NULL p"));
+
+	buf = NULL;
+	bp = NULL;
+	v = p->vol_sc;
 
-	if (gv_consumer_is_open(p->geom))
-		return (EBUSY);
+	if (!= NULL)
+	/* Check if any of our subdisks drives have consumers open. */
+	/* XXX: Not provider since our mirror might block us. */
+/*	if (gv_provider_is_open(v->provider))
+		return (EBUSY);*/
 
-	if (p->flags & GV_PLEX_SYNCING)
+/*	if (p->flags & GV_PLEX_SYNCING)
 		return (EINPROGRESS);
-	p->flags |= GV_PLEX_SYNCING;
+	p->flags |= GV_PLEX_SYNCING;*/
 
 	sync = g_malloc(sizeof(*sync), M_WAITOK | M_ZERO);
 	sync->to = p;
 	sync->syncsize = GV_DFLT_SYNCSIZE;

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list