Date: Tue, 10 Feb 2009 04:56:08 +0000 (UTC) From: Lawrence Stewart <lstewart@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r188430 - in projects/tcp_cc_7.x: . bin bin/chio bin/cp bin/dd bin/ln bin/sh contrib contrib/bind9 contrib/gcc contrib/gdb contrib/gdtoa contrib/ntp contrib/opie contrib/sendmail contri... Message-ID: <200902100456.n1A4u8oG081651@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: lstewart Date: Tue Feb 10 04:56:08 2009 New Revision: 188430 URL: http://svn.freebsd.org/changeset/base/188430 Log: Merge r188055:188429 from stable/7 Added: projects/tcp_cc_7.x/lib/libarchive/test/test_write_disk_sparse.c - copied unchanged from r188429, stable/7/lib/libarchive/test/test_write_disk_sparse.c projects/tcp_cc_7.x/share/man/man5/portindex.5 - copied unchanged from r188429, stable/7/share/man/man5/portindex.5 projects/tcp_cc_7.x/share/man/man7/adding_user.7 - copied unchanged from r188429, stable/7/share/man/man7/adding_user.7 Deleted: projects/tcp_cc_7.x/share/man/man8/adding_user.8 Modified: projects/tcp_cc_7.x/ (props changed) projects/tcp_cc_7.x/COPYRIGHT (props changed) projects/tcp_cc_7.x/Makefile (contents, props changed) projects/tcp_cc_7.x/Makefile.inc1 (props changed) projects/tcp_cc_7.x/ObsoleteFiles.inc projects/tcp_cc_7.x/UPDATING (contents, props changed) projects/tcp_cc_7.x/bin/ (props changed) projects/tcp_cc_7.x/bin/chio/ (props changed) projects/tcp_cc_7.x/bin/cp/ (props changed) projects/tcp_cc_7.x/bin/cp/utils.c projects/tcp_cc_7.x/bin/dd/ (props changed) projects/tcp_cc_7.x/bin/ln/ (props changed) projects/tcp_cc_7.x/bin/sh/ (props changed) projects/tcp_cc_7.x/contrib/ (props changed) projects/tcp_cc_7.x/contrib/bind9/ (props changed) projects/tcp_cc_7.x/contrib/gcc/ (props changed) projects/tcp_cc_7.x/contrib/gdb/ (props changed) projects/tcp_cc_7.x/contrib/gdtoa/ (props changed) projects/tcp_cc_7.x/contrib/ntp/ (props changed) projects/tcp_cc_7.x/contrib/opie/opiekey.1 projects/tcp_cc_7.x/contrib/sendmail/ (props changed) projects/tcp_cc_7.x/contrib/smbfs/ (props changed) projects/tcp_cc_7.x/contrib/tcsh/ (props changed) projects/tcp_cc_7.x/contrib/telnet/ (props changed) projects/tcp_cc_7.x/contrib/top/ (props changed) projects/tcp_cc_7.x/contrib/traceroute/ (props changed) projects/tcp_cc_7.x/crypto/openssh/ (props changed) projects/tcp_cc_7.x/etc/ (props changed) projects/tcp_cc_7.x/etc/defaults/rc.conf projects/tcp_cc_7.x/etc/periodic/weekly/ (props changed) projects/tcp_cc_7.x/etc/rc.d/jail projects/tcp_cc_7.x/games/fortune/ (props changed) projects/tcp_cc_7.x/games/fortune/fortune/ (props changed) projects/tcp_cc_7.x/gnu/ (props changed) projects/tcp_cc_7.x/gnu/usr.bin/cc/ (props changed) projects/tcp_cc_7.x/gnu/usr.bin/cvs/ (props changed) projects/tcp_cc_7.x/gnu/usr.bin/gdb/kgdb/ (props changed) projects/tcp_cc_7.x/gnu/usr.bin/groff/tmac/mdoc.local (props changed) projects/tcp_cc_7.x/gnu/usr.bin/sort/ (props changed) projects/tcp_cc_7.x/include/ (props changed) projects/tcp_cc_7.x/kerberos5/ (props changed) projects/tcp_cc_7.x/lib/ (props changed) projects/tcp_cc_7.x/lib/bind/ (props changed) projects/tcp_cc_7.x/lib/csu/ (props changed) projects/tcp_cc_7.x/lib/libarchive/ (props changed) projects/tcp_cc_7.x/lib/libarchive/archive_write_disk.c projects/tcp_cc_7.x/lib/libarchive/test/Makefile projects/tcp_cc_7.x/lib/libbluetooth/ (props changed) projects/tcp_cc_7.x/lib/libc/ (props changed) projects/tcp_cc_7.x/lib/libc/string/ffsll.c (props changed) projects/tcp_cc_7.x/lib/libc/string/flsll.c (props changed) projects/tcp_cc_7.x/lib/libc/sys/cpuset_getaffinity.2 projects/tcp_cc_7.x/lib/libc/sys/jail.2 projects/tcp_cc_7.x/lib/libc_r/ (props changed) projects/tcp_cc_7.x/lib/libcam/ (props changed) projects/tcp_cc_7.x/lib/libdisk/ (props changed) projects/tcp_cc_7.x/lib/libfetch/ (props changed) projects/tcp_cc_7.x/lib/libftpio/ (props changed) projects/tcp_cc_7.x/lib/libgeom/ (props changed) projects/tcp_cc_7.x/lib/libgssapi/ (props changed) projects/tcp_cc_7.x/lib/libkse/ (props changed) projects/tcp_cc_7.x/lib/libkvm/ (props changed) projects/tcp_cc_7.x/lib/libkvm/kvm_proc.c projects/tcp_cc_7.x/lib/libmagic/ (props changed) projects/tcp_cc_7.x/lib/libstand/ (props changed) projects/tcp_cc_7.x/lib/libthr/ (props changed) projects/tcp_cc_7.x/lib/libutil/ (props changed) projects/tcp_cc_7.x/lib/msun/ (props changed) projects/tcp_cc_7.x/libexec/ (props changed) projects/tcp_cc_7.x/libexec/ftpd/ftpd.8 projects/tcp_cc_7.x/libexec/rpc.rstatd/ (props changed) projects/tcp_cc_7.x/libexec/rtld-elf/ (props changed) projects/tcp_cc_7.x/release/ (props changed) projects/tcp_cc_7.x/release/scripts/src-install.sh (props changed) projects/tcp_cc_7.x/rescue/ (props changed) projects/tcp_cc_7.x/sbin/ (props changed) projects/tcp_cc_7.x/sbin/atacontrol/ (props changed) projects/tcp_cc_7.x/sbin/ddb/ (props changed) projects/tcp_cc_7.x/sbin/devfs/ (props changed) projects/tcp_cc_7.x/sbin/dhclient/ (props changed) projects/tcp_cc_7.x/sbin/dumpfs/ (props changed) projects/tcp_cc_7.x/sbin/dumpfs/dumpfs.8 projects/tcp_cc_7.x/sbin/dumpfs/dumpfs.c projects/tcp_cc_7.x/sbin/fdisk/ (props changed) projects/tcp_cc_7.x/sbin/fsck_ffs/ (props changed) projects/tcp_cc_7.x/sbin/geom/ (props changed) projects/tcp_cc_7.x/sbin/geom/class/part/ (props changed) projects/tcp_cc_7.x/sbin/geom/core/geom.c projects/tcp_cc_7.x/sbin/geom/misc/ (props changed) projects/tcp_cc_7.x/sbin/ifconfig/ (props changed) projects/tcp_cc_7.x/sbin/init/ (props changed) projects/tcp_cc_7.x/sbin/ipfw/ (props changed) projects/tcp_cc_7.x/sbin/md5/ (props changed) projects/tcp_cc_7.x/sbin/mdconfig/ (props changed) projects/tcp_cc_7.x/sbin/mksnap_ffs/ (props changed) projects/tcp_cc_7.x/sbin/mount/ (props changed) projects/tcp_cc_7.x/sbin/natd/ (props changed) projects/tcp_cc_7.x/sbin/ping6/ (props changed) projects/tcp_cc_7.x/sbin/sconfig/ (props changed) projects/tcp_cc_7.x/secure/lib/libssh/ (props changed) projects/tcp_cc_7.x/secure/libexec/sftp-server/ (props changed) projects/tcp_cc_7.x/secure/usr.bin/ssh/ (props changed) projects/tcp_cc_7.x/secure/usr.sbin/sshd/ (props changed) projects/tcp_cc_7.x/share/ (props changed) projects/tcp_cc_7.x/share/colldef/ (props changed) projects/tcp_cc_7.x/share/doc/bind9/ (props changed) projects/tcp_cc_7.x/share/examples/ (props changed) projects/tcp_cc_7.x/share/man/man3/ (props changed) projects/tcp_cc_7.x/share/man/man4/ (props changed) projects/tcp_cc_7.x/share/man/man4/ddb.4 projects/tcp_cc_7.x/share/man/man4/igb.4 (props changed) projects/tcp_cc_7.x/share/man/man5/ (props changed) projects/tcp_cc_7.x/share/man/man5/Makefile projects/tcp_cc_7.x/share/man/man5/rc.conf.5 projects/tcp_cc_7.x/share/man/man7/ (props changed) projects/tcp_cc_7.x/share/man/man7/Makefile projects/tcp_cc_7.x/share/man/man8/Makefile projects/tcp_cc_7.x/share/man/man9/ (props changed) projects/tcp_cc_7.x/share/mk/ (props changed) projects/tcp_cc_7.x/share/mk/bsd.own.mk projects/tcp_cc_7.x/share/sendmail/ (props changed) projects/tcp_cc_7.x/share/syscons/ (props changed) projects/tcp_cc_7.x/share/syscons/keymaps/ (props changed) projects/tcp_cc_7.x/share/timedef/ (props changed) projects/tcp_cc_7.x/share/zoneinfo/ (props changed) projects/tcp_cc_7.x/sys/ (props changed) projects/tcp_cc_7.x/sys/arm/arm/busdma_machdep.c projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32.h projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32_misc.c projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32_proto.h projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32_syscall.h projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32_syscalls.c projects/tcp_cc_7.x/sys/compat/freebsd32/freebsd32_sysent.c projects/tcp_cc_7.x/sys/compat/freebsd32/syscalls.master projects/tcp_cc_7.x/sys/conf/kern.post.mk projects/tcp_cc_7.x/sys/conf/kern.pre.mk projects/tcp_cc_7.x/sys/contrib/pf/ (props changed) projects/tcp_cc_7.x/sys/dev/acpi_support/acpi_asus.c projects/tcp_cc_7.x/sys/dev/ath/ath_hal/ (props changed) projects/tcp_cc_7.x/sys/dev/cxgb/ (props changed) projects/tcp_cc_7.x/sys/dev/fxp/if_fxp.c projects/tcp_cc_7.x/sys/dev/fxp/if_fxpreg.h projects/tcp_cc_7.x/sys/dev/fxp/if_fxpvar.h projects/tcp_cc_7.x/sys/dev/kbdmux/kbdmux.c projects/tcp_cc_7.x/sys/dev/msk/if_msk.c projects/tcp_cc_7.x/sys/dev/msk/if_mskreg.h projects/tcp_cc_7.x/sys/dev/re/if_re.c projects/tcp_cc_7.x/sys/dev/sound/pci/hda/hdac.c projects/tcp_cc_7.x/sys/dev/usb/if_axe.c projects/tcp_cc_7.x/sys/dev/usb/if_axereg.h projects/tcp_cc_7.x/sys/dev/usb/usbdevs projects/tcp_cc_7.x/sys/fs/fifofs/fifo_vnops.c projects/tcp_cc_7.x/sys/kern/kern_cpuset.c projects/tcp_cc_7.x/sys/kern/kern_exit.c projects/tcp_cc_7.x/sys/kern/kern_fork.c projects/tcp_cc_7.x/sys/kern/kern_jail.c projects/tcp_cc_7.x/sys/kern/tty.c projects/tcp_cc_7.x/sys/kern/uipc_socket.c projects/tcp_cc_7.x/sys/kern/uipc_usrreq.c projects/tcp_cc_7.x/sys/kern/vfs_subr.c projects/tcp_cc_7.x/sys/net/if.c projects/tcp_cc_7.x/sys/net/rtsock.c projects/tcp_cc_7.x/sys/netgraph/bluetooth/hci/ng_hci_main.c projects/tcp_cc_7.x/sys/netgraph/bluetooth/l2cap/ng_l2cap_llpi.c projects/tcp_cc_7.x/sys/netinet/in.c projects/tcp_cc_7.x/sys/netinet/in_pcb.c projects/tcp_cc_7.x/sys/netinet/raw_ip.c projects/tcp_cc_7.x/sys/netinet/sctp_pcb.c projects/tcp_cc_7.x/sys/netinet/sctp_usrreq.c projects/tcp_cc_7.x/sys/netinet/tcp_usrreq.c projects/tcp_cc_7.x/sys/netinet/udp_usrreq.c projects/tcp_cc_7.x/sys/netinet6/in6.c projects/tcp_cc_7.x/sys/netinet6/in6_pcb.c projects/tcp_cc_7.x/sys/netinet6/in6_src.c projects/tcp_cc_7.x/sys/netinet6/raw_ip6.c projects/tcp_cc_7.x/sys/netinet6/udp6_usrreq.c projects/tcp_cc_7.x/sys/netipx/ipx_usrreq.c projects/tcp_cc_7.x/sys/pci/if_rlreg.h projects/tcp_cc_7.x/sys/security/audit/audit.c projects/tcp_cc_7.x/sys/security/audit/audit_arg.c projects/tcp_cc_7.x/sys/security/audit/audit_bsm.c projects/tcp_cc_7.x/sys/security/audit/audit_bsm_klib.c projects/tcp_cc_7.x/sys/security/audit/audit_pipe.c projects/tcp_cc_7.x/sys/security/audit/audit_private.h projects/tcp_cc_7.x/sys/security/audit/audit_syscalls.c projects/tcp_cc_7.x/sys/security/mac/mac_audit.c projects/tcp_cc_7.x/sys/security/mac/mac_priv.c projects/tcp_cc_7.x/sys/security/mac_bsdextended/mac_bsdextended.c projects/tcp_cc_7.x/sys/sys/cpuset.h projects/tcp_cc_7.x/sys/sys/jail.h projects/tcp_cc_7.x/sys/sys/param.h projects/tcp_cc_7.x/sys/ufs/ffs/ffs_alloc.c projects/tcp_cc_7.x/sys/ufs/ffs/ffs_balloc.c projects/tcp_cc_7.x/sys/ufs/ffs/ffs_extern.h projects/tcp_cc_7.x/sys/ufs/ffs/ffs_inode.c projects/tcp_cc_7.x/sys/ufs/ffs/ffs_vnops.c projects/tcp_cc_7.x/tools/build/ (props changed) projects/tcp_cc_7.x/tools/regression/atm/ (props changed) projects/tcp_cc_7.x/tools/regression/file/flock/ (props changed) projects/tcp_cc_7.x/tools/regression/usr.bin/ (props changed) projects/tcp_cc_7.x/tools/regression/usr.bin/tr/ (props changed) projects/tcp_cc_7.x/tools/sched/ (props changed) projects/tcp_cc_7.x/tools/tools/crypto/ (props changed) projects/tcp_cc_7.x/tools/tools/editing/ (props changed) projects/tcp_cc_7.x/tools/tools/nanobsd/ (props changed) projects/tcp_cc_7.x/usr.bin/ (props changed) projects/tcp_cc_7.x/usr.bin/basename/ (props changed) projects/tcp_cc_7.x/usr.bin/basename/basename.1 projects/tcp_cc_7.x/usr.bin/calendar/ (props changed) projects/tcp_cc_7.x/usr.bin/cksum/ (props changed) projects/tcp_cc_7.x/usr.bin/comm/ (props changed) projects/tcp_cc_7.x/usr.bin/cpuset/ (props changed) projects/tcp_cc_7.x/usr.bin/cpuset/cpuset.1 projects/tcp_cc_7.x/usr.bin/cpuset/cpuset.c projects/tcp_cc_7.x/usr.bin/dirname/ (props changed) projects/tcp_cc_7.x/usr.bin/dirname/dirname.c projects/tcp_cc_7.x/usr.bin/du/ (props changed) projects/tcp_cc_7.x/usr.bin/fetch/ (props changed) projects/tcp_cc_7.x/usr.bin/file/ (props changed) projects/tcp_cc_7.x/usr.bin/gzip/ (props changed) projects/tcp_cc_7.x/usr.bin/ipcrm/ (props changed) projects/tcp_cc_7.x/usr.bin/ipcs/ (props changed) projects/tcp_cc_7.x/usr.bin/kdump/ (props changed) projects/tcp_cc_7.x/usr.bin/ktrace/ (props changed) projects/tcp_cc_7.x/usr.bin/ldd/ (props changed) projects/tcp_cc_7.x/usr.bin/lockf/ (props changed) projects/tcp_cc_7.x/usr.bin/logger/ (props changed) projects/tcp_cc_7.x/usr.bin/make/ (props changed) projects/tcp_cc_7.x/usr.bin/netstat/ (props changed) projects/tcp_cc_7.x/usr.bin/nsupdate/ (props changed) projects/tcp_cc_7.x/usr.bin/procstat/ (props changed) projects/tcp_cc_7.x/usr.bin/sed/ (props changed) projects/tcp_cc_7.x/usr.bin/sed/compile.c projects/tcp_cc_7.x/usr.bin/shar/ (props changed) projects/tcp_cc_7.x/usr.bin/su/ (props changed) projects/tcp_cc_7.x/usr.bin/tar/ (props changed) projects/tcp_cc_7.x/usr.bin/top/ (props changed) projects/tcp_cc_7.x/usr.bin/truncate/ (props changed) projects/tcp_cc_7.x/usr.bin/truss/ (props changed) projects/tcp_cc_7.x/usr.bin/units/ (props changed) projects/tcp_cc_7.x/usr.bin/vmstat/ (props changed) projects/tcp_cc_7.x/usr.bin/wc/ (props changed) projects/tcp_cc_7.x/usr.bin/whereis/ (props changed) projects/tcp_cc_7.x/usr.bin/window/ (props changed) projects/tcp_cc_7.x/usr.bin/xargs/ (props changed) projects/tcp_cc_7.x/usr.sbin/ (props changed) projects/tcp_cc_7.x/usr.sbin/adduser/ (props changed) projects/tcp_cc_7.x/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) projects/tcp_cc_7.x/usr.sbin/cdcontrol/ (props changed) projects/tcp_cc_7.x/usr.sbin/config/ (props changed) projects/tcp_cc_7.x/usr.sbin/cpucontrol/ (props changed) projects/tcp_cc_7.x/usr.sbin/cron/ (props changed) projects/tcp_cc_7.x/usr.sbin/cron/cron/ (props changed) projects/tcp_cc_7.x/usr.sbin/extattr/ (props changed) projects/tcp_cc_7.x/usr.sbin/freebsd-update/ (props changed) projects/tcp_cc_7.x/usr.sbin/fwcontrol/ (props changed) projects/tcp_cc_7.x/usr.sbin/iostat/ (props changed) projects/tcp_cc_7.x/usr.sbin/jail/ (props changed) projects/tcp_cc_7.x/usr.sbin/jail/Makefile projects/tcp_cc_7.x/usr.sbin/jail/jail.8 projects/tcp_cc_7.x/usr.sbin/jail/jail.c projects/tcp_cc_7.x/usr.sbin/jexec/ (props changed) projects/tcp_cc_7.x/usr.sbin/jexec/Makefile projects/tcp_cc_7.x/usr.sbin/jexec/jexec.8 projects/tcp_cc_7.x/usr.sbin/jexec/jexec.c projects/tcp_cc_7.x/usr.sbin/jls/ (props changed) projects/tcp_cc_7.x/usr.sbin/jls/Makefile projects/tcp_cc_7.x/usr.sbin/jls/jls.8 projects/tcp_cc_7.x/usr.sbin/jls/jls.c projects/tcp_cc_7.x/usr.sbin/mergemaster/ (props changed) projects/tcp_cc_7.x/usr.sbin/mountd/ (props changed) projects/tcp_cc_7.x/usr.sbin/mtree/ (props changed) projects/tcp_cc_7.x/usr.sbin/ndiscvt/ (props changed) projects/tcp_cc_7.x/usr.sbin/newsyslog/newsyslog.conf.5 (props changed) projects/tcp_cc_7.x/usr.sbin/nscd/ (props changed) projects/tcp_cc_7.x/usr.sbin/ntp/ (props changed) projects/tcp_cc_7.x/usr.sbin/pciconf/ (props changed) projects/tcp_cc_7.x/usr.sbin/pkg_install/ (props changed) projects/tcp_cc_7.x/usr.sbin/pmcstat/ (props changed) projects/tcp_cc_7.x/usr.sbin/portsnap/ (props changed) projects/tcp_cc_7.x/usr.sbin/powerd/ (props changed) projects/tcp_cc_7.x/usr.sbin/pw/ (props changed) projects/tcp_cc_7.x/usr.sbin/rpc.lockd/ (props changed) projects/tcp_cc_7.x/usr.sbin/rpc.statd/ (props changed) projects/tcp_cc_7.x/usr.sbin/rpc.yppasswdd/ (props changed) projects/tcp_cc_7.x/usr.sbin/setfib/ (props changed) projects/tcp_cc_7.x/usr.sbin/sysinstall/ (props changed) projects/tcp_cc_7.x/usr.sbin/syslogd/ (props changed) projects/tcp_cc_7.x/usr.sbin/traceroute/ (props changed) projects/tcp_cc_7.x/usr.sbin/tzsetup/ (props changed) projects/tcp_cc_7.x/usr.sbin/wpa/wpa_supplicant/ (props changed) Modified: projects/tcp_cc_7.x/Makefile ============================================================================== --- projects/tcp_cc_7.x/Makefile Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/Makefile Tue Feb 10 04:56:08 2009 (r188430) @@ -279,7 +279,7 @@ universe_prologue: @echo "--------------------------------------------------------------" .for target in ${TARGETS} KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ - find [A-Z]*[A-Z] -type f -maxdepth 0 \ + find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ ! -name DEFAULTS ! -name LINT KERNCONFS:= ${KERNCONFS:S/^NOTES$/LINT/} universe: universe_${target} Modified: projects/tcp_cc_7.x/ObsoleteFiles.inc ============================================================================== --- projects/tcp_cc_7.x/ObsoleteFiles.inc Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/ObsoleteFiles.inc Tue Feb 10 04:56:08 2009 (r188430) @@ -14,6 +14,8 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20090203: adding_user.8 moved to adding_user.7 +OLD_FILES+=usr/share/man/man8/adding_user.8.gz # 20080407: pkg_sign has been removed OLD_FILES+=usr/sbin/pkg_check OLD_FILES+=usr/sbin/pkg_sign Modified: projects/tcp_cc_7.x/UPDATING ============================================================================== --- projects/tcp_cc_7.x/UPDATING Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/UPDATING Tue Feb 10 04:56:08 2009 (r188430) @@ -8,6 +8,19 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20090207: + ZFS users on amd64 machines with 4GB or more of RAM should + reevaluate their need for setting vm.kmem_size_max and + vm.kmem_size manually. In fact, after recent changes to the + kernel, the default value of vm.kmem_size is larger than the + suggested manual setting in most ZFS/FreeBSD tuning guides. + +20090207: + Multi-IPv4/v6/no-IP jail support was merged to STABLE. + You need to rebuild jls(8) and to use the new features + jail(8), jexec(8) and cpuset(1) with a new kernel. + __FreeBSD_version was bumped to 701103. + 20090119: NTFS has been removed from GENERIC kernel on amd64 to match GENERIC on i386. Should not cause any issues since mount_ntfs(8) Modified: projects/tcp_cc_7.x/bin/cp/utils.c ============================================================================== --- projects/tcp_cc_7.x/bin/cp/utils.c Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/bin/cp/utils.c Tue Feb 10 04:56:08 2009 (r188430) @@ -137,41 +137,39 @@ copy_file(const FTSENT *entp, int dne) * Mmap and write if less than 8M (the limit is so we don't totally * trash memory on big files. This is really a minor hack, but it * wins some CPU back. + * Some filesystems, such as smbnetfs, don't support mmap, + * so this is a best-effort attempt. */ #ifdef VM_AND_BUFFER_CACHE_SYNCHRONIZED if (S_ISREG(fs->st_mode) && fs->st_size > 0 && - fs->st_size <= 8 * 1048576) { - if ((p = mmap(NULL, (size_t)fs->st_size, PROT_READ, - MAP_SHARED, from_fd, (off_t)0)) == MAP_FAILED) { + fs->st_size <= 8 * 1024 * 1024 && + (p = mmap(NULL, (size_t)fs->st_size, PROT_READ, + MAP_SHARED, from_fd, (off_t)0)) != MAP_FAILED) { + wtotal = 0; + for (bufp = p, wresid = fs->st_size; ; + bufp += wcount, wresid -= (size_t)wcount) { + wcount = write(to_fd, bufp, wresid); + if (wcount <= 0) + break; + wtotal += wcount; + if (info) { + info = 0; + (void)fprintf(stderr, + "%s -> %s %3d%%\n", + entp->fts_path, to.p_path, + cp_pct(wtotal, fs->st_size)); + } + if (wcount >= (ssize_t)wresid) + break; + } + if (wcount != (ssize_t)wresid) { + warn("%s", to.p_path); + rval = 1; + } + /* Some systems don't unmap on close(2). */ + if (munmap(p, fs->st_size) < 0) { warn("%s", entp->fts_path); rval = 1; - } else { - wtotal = 0; - for (bufp = p, wresid = fs->st_size; ; - bufp += wcount, wresid -= (size_t)wcount) { - wcount = write(to_fd, bufp, wresid); - if (wcount <= 0) - break; - wtotal += wcount; - if (info) { - info = 0; - (void)fprintf(stderr, - "%s -> %s %3d%%\n", - entp->fts_path, to.p_path, - cp_pct(wtotal, fs->st_size)); - } - if (wcount >= (ssize_t)wresid) - break; - } - if (wcount != (ssize_t)wresid) { - warn("%s", to.p_path); - rval = 1; - } - /* Some systems don't unmap on close(2). */ - if (munmap(p, fs->st_size) < 0) { - warn("%s", entp->fts_path); - rval = 1; - } } } else #endif Modified: projects/tcp_cc_7.x/contrib/opie/opiekey.1 ============================================================================== --- projects/tcp_cc_7.x/contrib/opie/opiekey.1 Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/contrib/opie/opiekey.1 Tue Feb 10 04:56:08 2009 (r188430) @@ -157,8 +157,7 @@ this mistake. Better checks are needed. .BR opieinfo (1), .BR opiekeys (5), .BR opieaccess (5), -.BR opiegen (1) -.BR su (1), +.BR su (1) .SH AUTHOR Bellcore's S/Key was written by Phil Karn, Neil M. Haller, and John S. Walden Modified: projects/tcp_cc_7.x/etc/defaults/rc.conf ============================================================================== --- projects/tcp_cc_7.x/etc/defaults/rc.conf Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/etc/defaults/rc.conf Tue Feb 10 04:56:08 2009 (r188430) @@ -615,24 +615,27 @@ jail_sysvipc_allow="NO" # Allow SystemV # each jail, specified in jail_list, with the following variables. # NOTES: # - replace 'example' with the jail's name. -# - except rootdir, hostname and ip, all of the following variables may be made -# global jail variables if you don't specify a jail name (ie. jail_interface). +# - except rootdir, hostname, ip and the _multi<n> addresses, +# all of the following variables may be made global jail variables +# if you don't specify a jail name (ie. jail_interface, jail_devfs_ruleset). # #jail_example_rootdir="/usr/jail/default" # Jail's root directory #jail_example_hostname="default.domain.com" # Jail's hostname -#jail_example_ip="192.168.0.10" # Jail's IP number -#jail_example_interface="" # Interface to create the IP alias on -#jail_example_fib="0" # routing table for setfib(1) +#jail_example_interface="" # Jail's interface variable to create IP aliases on +#jail_example_fib="0" # Routing table for setfib(1) +#jail_example_ip="192.0.2.10,2001:db8::17" # Jail's primary IPv4 and IPv6 address +#jail_example_ip_multi0="2001:db8::10" # and another IPv6 address #jail_example_exec_start="/bin/sh /etc/rc" # command to execute in jail for starting #jail_example_exec_afterstart0="/bin/sh command" # command to execute after the one for # starting the jail. More than one can be # specified using a trailing number #jail_example_exec_stop="/bin/sh /etc/rc.shutdown" # command to execute in jail for stopping #jail_example_devfs_enable="NO" # mount devfs in the jail +#jail_example_devfs_ruleset="ruleset_name" # devfs ruleset to apply to jail - + # usually you want "devfsrules_jail". #jail_example_fdescfs_enable="NO" # mount fdescfs in the jail #jail_example_procfs_enable="NO" # mount procfs in jail #jail_example_mount_enable="NO" # mount/umount jail's fs -#jail_example_devfs_ruleset="ruleset_name" # devfs ruleset to apply to jail #jail_example_fstab="" # fstab(5) for mount/umount #jail_example_flags="-l -U root" # flags for jail(8) Modified: projects/tcp_cc_7.x/etc/rc.d/jail ============================================================================== --- projects/tcp_cc_7.x/etc/rc.d/jail Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/etc/rc.d/jail Tue Feb 10 04:56:08 2009 (r188430) @@ -93,6 +93,7 @@ init_variables() debug "$_j mount enable: $_mount" debug "$_j hostname: $_hostname" debug "$_j ip: $_ip" + jail_show_addresses ${_j} debug "$_j interface: $_interface" debug "$_j fib: $_fib" debug "$_j root: $_rootdir" @@ -126,10 +127,6 @@ init_variables() if [ -z "${_rootdir}" ]; then err 3 "$name: No root directory has been defined for ${_j}" fi - if [ -z "${_ip}" ]; then - err 3 "$name: No IP address has been defined for ${_j}" - fi - } # set_sysctl rc_knob mib msg @@ -275,6 +272,208 @@ jail_mount_fstab() mount -a -F "${_fstab}" } +# jail_show_addresses jail +# Debug print the input for the given _multi aliases +# for a jail for init_variables(). +# +jail_show_addresses() +{ + local _j _type alias + _j="$1" + alias=0 + + if [ -z "${_j}" ]; then + warn "jail_show_addresses: you must specify a jail" + return + fi + + while : ; do + eval _addr=\"\$jail_${_j}_ip_multi${alias}\" + if [ -n "${_addr}" ]; then + debug "${_j} ip_multi${alias}: $_addr" + alias=$((${alias} + 1)) + else + break + fi + done +} + +# jail_extract_address argument +# The second argument is the string from one of the _ip +# or the _multi variables. In case of a comma separated list +# only one argument must be passed in at a time. +# The function alters the _type, _iface, _addr and _mask variables. +# +jail_extract_address() +{ + local _i + _i=$1 + + if [ -z "${_i}" ]; then + warn "jail_extract_address: called without input" + return + fi + + # Check if we have an interface prefix given and split into + # iFace and rest. + case "${_i}" in + *\|*) # ifN|.. prefix there + _iface=${_i%%|*} + _r=${_i##*|} + ;; + *) _iface="" + _r=${_i} + ;; + esac + + # In case the IP has no interface given, check if we have a global one. + _iface=${_iface:-${_interface}} + + # Set address, cut off any prefix/netmask/prefixlen. + _addr=${_r} + _addr=${_addr%%[/ ]*} + + # Theoretically we can return here if interface is not set, + # as we only care about the _mask if we call ifconfig. + # This is not done because we may want to santize IP addresses + # based on _type later, and optionally change the type as well. + + # Extract the prefix/netmask/prefixlen part by cutting off the address. + _mask=${_r} + _mask=`expr "${_mask}" : "${_addr}\(.*\)"` + + # Identify type {inet,inet6}. + case "${_addr}" in + *\.*\.*\.*) _type="inet" ;; + *:*) _type="inet6" ;; + *) warn "jail_extract_address: type not identified" + ;; + esac + + # Handle the special /netmask instead of /prefix or + # "netmask xxx" case for legacy IP. + # We do NOT support shortend class-full netmasks. + if [ "${_type}" = "inet" ]; then + case "${_mask}" in + /*\.*\.*\.*) _mask=" netmask ${_mask#/}" ;; + *) ;; + esac + + # In case _mask is still not set use /32. + _mask=${_mask:-/32} + + elif [ "${_type}" = "inet6" ]; then + # In case _maske is not set for IPv6, use /128. + _mask=${_mask:-/128} + fi +} + +# jail_handle_ips_option {add,del} input +# Handle a single argument imput which can be a comma separated +# list of addresses (theoretically with an option interface and +# prefix/netmask/prefixlen). +# +jail_handle_ips_option() +{ + local _x _action _type _i + _action=$1 + _x=$2 + + if [ -z "${_x}" ]; then + # No IP given. This can happen for the primary address + # of each address family. + return + fi + + # Loop, in case we find a comma separated list, we need to handle + # each argument on its own. + while [ ${#_x} -gt 0 ]; do + case "${_x}" in + *,*) # Extract the first argument and strip it off the list. + _i=`expr "${_x}" : '^\([^,]*\)'` + _x=`expr "${_x}" : "^[^,]*,\(.*\)"` + ;; + *) _i=${_x} + _x="" + ;; + esac + + _type="" + _iface="" + _addr="" + _mask="" + jail_extract_address "${_i}" + + # make sure we got an address. + case "${_addr}" in + "") continue ;; + *) ;; + esac + + # Append address to list of addresses for the jail command. + case "${_addrl}" in + "") _addrl="${_addr}" ;; + *) _addrl="${_addrl},${_addr}" ;; + esac + + # Configure interface alias if requested by a given interface + # and if we could correctly parse everything. + case "${_iface}" in + "") continue ;; + esac + case "${_type}" in + inet) ;; + inet6) ;; + *) warn "Could not determine address family. Not going" \ + "to ${_action} address '${_addr}' for ${_jail}." + continue + ;; + esac + case "${_action}" in + add) ifconfig ${_iface} ${_type} ${_addr}${_mask} alias + ;; + del) # When removing the IP, ignore the _mask. + ifconfig ${_iface} ${_type} ${_addr} -alias + ;; + esac + done +} + +# jail_ips {add,del} +# Extract the comma separated list of addresses and return them +# for the jail command. +# Handle more than one address via the _multi option as well. +# If an interface is given also add/remove an alias for the +# address with an optional netmask. +# +jail_ips() +{ + local _action + _action=$1 + + case "${_action}" in + add) ;; + del) ;; + *) warn "jail_ips: invalid action '${_action}'" + return + ;; + esac + + # Handle addresses. + jail_handle_ips_option ${_action} "${_ip}" + # Handle jail_xxx_ip_multi<N> + alias=0 + while : ; do + eval _x=\"\$jail_${_jail}_ip_multi${alias}\" + case "${_x}" in + "") break ;; + *) jail_handle_ips_option ${_action} "${_x}" + alias=$((${alias} + 1)) + ;; + esac + done +} + jail_start() { echo -n 'Configuring jails:' @@ -296,9 +495,8 @@ jail_start() echo -n " [${_hostname} already running (/var/run/jail_${_jail}.id exists)]" continue; fi - if [ -n "${_interface}" ]; then - ifconfig ${_interface} alias ${_ip} netmask 255.255.255.255 - fi + _addrl="" + jail_ips "add" if [ -n "${_fib}" ]; then _setfib="setfib -F '${_fib}'" else @@ -358,7 +556,7 @@ jail_start() fi _tmp_jail=${_tmp_dir}/jail.$$ eval ${_setfib} jail ${_flags} -i ${_rootdir} ${_hostname} \ - ${_ip} ${_exec_start} > ${_tmp_jail} 2>&1 + \"${_addrl}\" ${_exec_start} > ${_tmp_jail} 2>&1 if [ "$?" -eq 0 ] ; then _jail_id=$(head -1 ${_tmp_jail}) @@ -379,9 +577,7 @@ jail_start() echo ${_jail_id} > /var/run/jail_${_jail}.id else jail_umount_fs - if [ -n "${_interface}" ]; then - ifconfig ${_interface} -alias ${_ip} - fi + jail_ips "del" echo " cannot start jail \"${_jail}\": " tail +2 ${_tmp_jail} fi @@ -410,9 +606,7 @@ jail_stop() jail_umount_fs echo -n " $_hostname" fi - if [ -n "${_interface}" ]; then - ifconfig ${_interface} -alias ${_ip} - fi + jail_ips "del" rm /var/run/jail_${_jail}.id else echo " cannot stop jail ${_jail}. No jail id in /var/run" Modified: projects/tcp_cc_7.x/lib/libarchive/archive_write_disk.c ============================================================================== --- projects/tcp_cc_7.x/lib/libarchive/archive_write_disk.c Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/lib/libarchive/archive_write_disk.c Tue Feb 10 04:56:08 2009 (r188430) @@ -176,6 +176,8 @@ struct archive_write_disk { int fd; /* Current offset for writing data to the file. */ off_t offset; + /* Last offset actually written to disk. */ + off_t fd_offset; /* Maximum size of file, -1 if unknown. */ off_t filesize; /* Dir we were in before this restore; only for deep paths. */ @@ -185,8 +187,6 @@ struct archive_write_disk { /* UID/GID to use in restoring this entry. */ uid_t uid; gid_t gid; - /* Last offset written to disk. */ - off_t last_offset; }; /* @@ -232,7 +232,7 @@ static struct fixup_entry *sort_dir_list static gid_t trivial_lookup_gid(void *, const char *, gid_t); static uid_t trivial_lookup_uid(void *, const char *, uid_t); static ssize_t write_data_block(struct archive_write_disk *, - const char *, size_t, off_t); + const char *, size_t); static struct archive_vtable *archive_write_disk_vtable(void); @@ -334,7 +334,7 @@ _archive_write_header(struct archive *_a } a->entry = archive_entry_clone(entry); a->fd = -1; - a->last_offset = 0; + a->fd_offset = 0; a->offset = 0; a->uid = a->user_uid; a->mode = archive_entry_mode(a->entry); @@ -500,9 +500,9 @@ archive_write_disk_set_skip_file(struct } static ssize_t -write_data_block(struct archive_write_disk *a, - const char *buff, size_t size, off_t offset) +write_data_block(struct archive_write_disk *a, const char *buff, size_t size) { + uint64_t start_size = size; ssize_t bytes_written = 0; ssize_t block_size = 0, bytes_to_write; int r; @@ -519,8 +519,9 @@ write_data_block(struct archive_write_di block_size = a->pst->st_blksize; } - if (a->filesize >= 0 && (off_t)(offset + size) > a->filesize) - size = (size_t)(a->filesize - offset); + /* If this write would run beyond the file size, truncate it. */ + if (a->filesize >= 0 && (off_t)(a->offset + size) > a->filesize) + start_size = size = (size_t)(a->filesize - a->offset); /* Write the data. */ while (size > 0) { @@ -536,7 +537,7 @@ write_data_block(struct archive_write_di if (*p != '\0') break; } - offset += p - buff; + a->offset += p - buff; size -= p - buff; buff = p; if (size == 0) @@ -544,22 +545,25 @@ write_data_block(struct archive_write_di /* Calculate next block boundary after offset. */ block_end - = (offset / block_size) * block_size + block_size; + = (a->offset / block_size + 1) * block_size; /* If the adjusted write would cross block boundary, * truncate it to the block boundary. */ bytes_to_write = size; - if (offset + bytes_to_write > block_end) - bytes_to_write = block_end - offset; + if (a->offset + bytes_to_write > block_end) + bytes_to_write = block_end - a->offset; } /* Seek if necessary to the specified offset. */ - if (offset != a->last_offset) { - if (lseek(a->fd, offset, SEEK_SET) < 0) { + if (a->offset != a->fd_offset) { + if (lseek(a->fd, a->offset, SEEK_SET) < 0) { archive_set_error(&a->archive, errno, "Seek failed"); return (ARCHIVE_FATAL); } + a->fd_offset = a->offset; + a->archive.file_position = a->offset; + a->archive.raw_position = a->offset; } bytes_written = write(a->fd, buff, bytes_to_write); if (bytes_written < 0) { @@ -568,12 +572,12 @@ write_data_block(struct archive_write_di } buff += bytes_written; size -= bytes_written; - offset += bytes_written; + a->offset += bytes_written; a->archive.file_position += bytes_written; a->archive.raw_position += bytes_written; - a->last_offset = a->offset = offset; + a->fd_offset = a->offset; } - return (bytes_written); + return (start_size - size); } static ssize_t @@ -586,9 +590,9 @@ _archive_write_data_block(struct archive __archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, ARCHIVE_STATE_DATA, "archive_write_disk_block"); - r = write_data_block(a, buff, size, offset); - - if (r < 0) + a->offset = offset; + r = write_data_block(a, buff, size); + if (r < ARCHIVE_OK) return (r); if ((size_t)r < size) { archive_set_error(&a->archive, 0, @@ -606,7 +610,7 @@ _archive_write_data(struct archive *_a, __archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, ARCHIVE_STATE_DATA, "archive_write_data"); - return (write_data_block(a, buff, size, a->offset)); + return (write_data_block(a, buff, size)); } static int @@ -627,7 +631,7 @@ _archive_write_finish_entry(struct archi /* There's no file. */ } else if (a->filesize < 0) { /* File size is unknown, so we can't set the size. */ - } else if (a->last_offset == a->filesize) { + } else if (a->fd_offset == a->filesize) { /* Last write ended at exactly the filesize; we're done. */ /* Hopefully, this is the common case. */ } else { Modified: projects/tcp_cc_7.x/lib/libarchive/test/Makefile ============================================================================== --- projects/tcp_cc_7.x/lib/libarchive/test/Makefile Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/lib/libarchive/test/Makefile Tue Feb 10 04:56:08 2009 (r188430) @@ -58,6 +58,7 @@ TESTS= \ test_write_disk_hardlink.c \ test_write_disk_perms.c \ test_write_disk_secure.c \ + test_write_disk_sparse.c \ test_write_format_ar.c \ test_write_format_cpio.c \ test_write_format_cpio_empty.c \ Copied: projects/tcp_cc_7.x/lib/libarchive/test/test_write_disk_sparse.c (from r188429, stable/7/lib/libarchive/test/test_write_disk_sparse.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/tcp_cc_7.x/lib/libarchive/test/test_write_disk_sparse.c Tue Feb 10 04:56:08 2009 (r188430, copy of r188429, stable/7/lib/libarchive/test/test_write_disk_sparse.c) @@ -0,0 +1,278 @@ +/*- + * Copyright (c) 2003-2007 Tim Kientzle + * 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 AUTHOR(S) ``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 AUTHOR(S) 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 "test.h" +__FBSDID("$FreeBSD$"); + +/* + * Write a file using archive_write_data call, read the file + * back and verify the contents. The data written includes large + * blocks of nulls, so it should exercise the sparsification logic + * if ARCHIVE_EXTRACT_SPARSE is enabled. + */ +static void +verify_write_data(struct archive *a, int sparse) +{ + static const char data[]="abcdefghijklmnopqrstuvwxyz"; + struct stat st; + struct archive_entry *ae; + size_t buff_size = 64 * 1024; + char *buff, *p; + const char *msg = sparse ? "sparse" : "non-sparse"; + int fd; + + buff = malloc(buff_size); + assert(buff != NULL); + + ae = archive_entry_new(); + assert(ae != NULL); + archive_entry_set_size(ae, 8 * buff_size); + archive_entry_set_pathname(ae, "test_write_data"); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualIntA(a, 0, archive_write_header(a, ae)); + + /* Use archive_write_data() to write three relatively sparse blocks. */ + + /* First has non-null data at beginning. */ + memset(buff, 0, buff_size); + memcpy(buff, data, sizeof(data)); + failure("%s", msg); + assertEqualInt(buff_size, archive_write_data(a, buff, buff_size)); + + /* Second has non-null data in the middle. */ + memset(buff, 0, buff_size); + memcpy(buff + buff_size / 2 - 3, data, sizeof(data)); + failure("%s", msg); + assertEqualInt(buff_size, archive_write_data(a, buff, buff_size)); + + /* Third has non-null data at the end. */ + memset(buff, 0, buff_size); + memcpy(buff + buff_size - sizeof(data), data, sizeof(data)); + failure("%s", msg); + assertEqualInt(buff_size, archive_write_data(a, buff, buff_size)); + + failure("%s", msg); + assertEqualIntA(a, 0, archive_write_finish_entry(a)); + + /* Test the entry on disk. */ + assert(0 == stat(archive_entry_pathname(ae), &st)); + assertEqualInt(st.st_size, 8 * buff_size); + fd = open(archive_entry_pathname(ae), O_RDONLY); + if (!assert(fd >= 0)) + return; + + /* Check first block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + failure("%s", msg); + assertEqualMem(buff, data, sizeof(data)); + for (p = buff + sizeof(data); p < buff + buff_size; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + /* Check second block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + for (p = buff; p < buff + buff_size; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (p == buff + buff_size / 2 - 3) { + assertEqualMem(p, data, sizeof(data)); + p += sizeof(data); + } else if (!assertEqualInt(0, *p)) + break; + } + + /* Check third block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + for (p = buff; p < buff + buff_size - sizeof(data); ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + failure("%s", msg); + assertEqualMem(buff + buff_size - sizeof(data), data, sizeof(data)); + + /* XXX more XXX */ + + assertEqualInt(0, close(fd)); + free(buff); +} + +/* + * As above, but using the archive_write_data_block() call. + */ +static void +verify_write_data_block(struct archive *a, int sparse) +{ + static const char data[]="abcdefghijklmnopqrstuvwxyz"; + struct stat st; + struct archive_entry *ae; + size_t buff_size = 64 * 1024; + char *buff, *p; + const char *msg = sparse ? "sparse" : "non-sparse"; + int fd; + + buff = malloc(buff_size); + assert(buff != NULL); + + ae = archive_entry_new(); + assert(ae != NULL); + archive_entry_set_size(ae, 8 * buff_size); + archive_entry_set_pathname(ae, "test_write_data_block"); + archive_entry_set_mode(ae, AE_IFREG | 0755); + assertEqualIntA(a, 0, archive_write_header(a, ae)); + + /* Use archive_write_data_block() to write three + relatively sparse blocks. */ + + /* First has non-null data at beginning. */ + memset(buff, 0, buff_size); + memcpy(buff, data, sizeof(data)); + failure("%s", msg); + assertEqualInt(ARCHIVE_OK, + archive_write_data_block(a, buff, buff_size, 100)); + + /* Second has non-null data in the middle. */ + memset(buff, 0, buff_size); + memcpy(buff + buff_size / 2 - 3, data, sizeof(data)); + failure("%s", msg); + assertEqualInt(ARCHIVE_OK, + archive_write_data_block(a, buff, buff_size, buff_size + 200)); + + /* Third has non-null data at the end. */ + memset(buff, 0, buff_size); + memcpy(buff + buff_size - sizeof(data), data, sizeof(data)); + failure("%s", msg); + assertEqualInt(ARCHIVE_OK, + archive_write_data_block(a, buff, buff_size, buff_size * 2 + 300)); + + failure("%s", msg); + assertEqualIntA(a, 0, archive_write_finish_entry(a)); + + /* Test the entry on disk. */ + assert(0 == stat(archive_entry_pathname(ae), &st)); + assertEqualInt(st.st_size, 8 * buff_size); + fd = open(archive_entry_pathname(ae), O_RDONLY); + if (!assert(fd >= 0)) + return; + + /* Check 100-byte gap at beginning */ + assertEqualInt(100, read(fd, buff, 100)); + failure("%s", msg); + for (p = buff; p < buff + 100; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + /* Check first block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + failure("%s", msg); + assertEqualMem(buff, data, sizeof(data)); + for (p = buff + sizeof(data); p < buff + buff_size; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + /* Check 100-byte gap */ + assertEqualInt(100, read(fd, buff, 100)); + failure("%s", msg); + for (p = buff; p < buff + 100; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + /* Check second block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + for (p = buff; p < buff + buff_size; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (p == buff + buff_size / 2 - 3) { + assertEqualMem(p, data, sizeof(data)); + p += sizeof(data); + } else if (!assertEqualInt(0, *p)) + break; + } + + /* Check 100-byte gap */ + assertEqualInt(100, read(fd, buff, 100)); + failure("%s", msg); + for (p = buff; p < buff + 100; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + /* Check third block. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + for (p = buff; p < buff + buff_size - sizeof(data); ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + failure("%s", msg); + assertEqualMem(buff + buff_size - sizeof(data), data, sizeof(data)); + + /* Check another block size beyond last we wrote. */ + assertEqualInt(buff_size, read(fd, buff, buff_size)); + failure("%s", msg); + for (p = buff; p < buff + buff_size; ++p) { + failure("offset: %d, %s", (int)(p - buff), msg); + if (!assertEqualInt(0, *p)) + break; + } + + + /* XXX more XXX */ + + assertEqualInt(0, close(fd)); + free(buff); +} + +DEFINE_TEST(test_write_disk_sparse) +{ + struct archive *ad; + + + /* + * The return values, etc, of the write data functions + * shouldn't change regardless of whether we've requested + * sparsification. (The performance and pattern of actual + * write calls to the disk should vary, of course, but the + * client program shouldn't see any difference.) + */ + assert((ad = archive_write_disk_new()) != NULL); + archive_write_disk_set_options(ad, 0); + verify_write_data(ad, 0); + verify_write_data_block(ad, 0); + assertEqualInt(0, archive_write_finish(ad)); + + assert((ad = archive_write_disk_new()) != NULL); + archive_write_disk_set_options(ad, ARCHIVE_EXTRACT_SPARSE); + verify_write_data(ad, 1); + verify_write_data_block(ad, 1); + assertEqualInt(0, archive_write_finish(ad)); + +} Modified: projects/tcp_cc_7.x/lib/libc/sys/cpuset_getaffinity.2 ============================================================================== --- projects/tcp_cc_7.x/lib/libc/sys/cpuset_getaffinity.2 Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/lib/libc/sys/cpuset_getaffinity.2 Tue Feb 10 04:56:08 2009 (r188430) @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd March 29, 2008 +.Dd November 29, 2008 .Dt CPUSET 2 .Os .Sh NAME @@ -46,7 +46,7 @@ and .Fn cpuset_setaffinity allow the manipulation of sets of CPUs available to processes, threads, -interrupts and other resources. +interrupts, jails and other resources. These functions may manipulate sets of CPUs that contain many processes or per-object anonymous masks that effect only a single object. .Pp Modified: projects/tcp_cc_7.x/lib/libc/sys/jail.2 ============================================================================== --- projects/tcp_cc_7.x/lib/libc/sys/jail.2 Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/lib/libc/sys/jail.2 Tue Feb 10 04:56:08 2009 (r188430) @@ -8,7 +8,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 8, 2003 +.Dd January 6, 2009 .Dt JAIL 2 .Os .Sh NAME @@ -32,15 +32,20 @@ The argument is a pointer to a structure .Bd -literal -offset indent struct jail { u_int32_t version; - char *path; - char *hostname; - u_int32_t ip_number; + char *path; + char *hostname; + char *jailname; + unsigned int ip4s; + unsigned int ip6s; + struct in_addr *ip4; + struct in6_addr *ip6; }; .Ed .Pp .Dq Li version defines the version of the API in use. -It should be set to zero at this time. +.Dv JAIL_API_VERSION +is defined for the current version. .Pp The .Dq Li path @@ -54,8 +59,24 @@ This can be changed from the inside of the prison. .Pp The -.Dq Li ip_number -can be set to the IP number assigned to the prison. +.Dq Li jailname +pointer is an optional name that can be assigned to the jail +for example for managment purposes. +.Pp +The +.Dq Li ip4s +and +.Dq Li ip6s +give the numbers of IPv4 and IPv6 addresses that will be passed +via their respective pointers. +.Pp +The +.Dq Li ip4 +and +.Dq Li ip6 +pointers can be set to an arrays of IPv4 and IPv6 addresses to be assigned to +the prison, or NULL if none. +IPv4 addresses must be in network byte order. .Pp The .Fn jail_attach @@ -97,6 +118,12 @@ or, if present, the per-jail .Pp All IP activity will be forced to happen to/from the IP number specified, which should be an alias on one of the network interfaces. +All connections to/from the loopback address +.Pf ( Li 127.0.0.1 +for IPv4, +.Li ::1 +for IPv6) will be changed to be to/from the primary address +of the jail for the given address family. .Pp It is possible to identify a process as jailed by examining .Dq Li /proc/<pid>/status : Modified: projects/tcp_cc_7.x/lib/libkvm/kvm_proc.c ============================================================================== --- projects/tcp_cc_7.x/lib/libkvm/kvm_proc.c Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/lib/libkvm/kvm_proc.c Tue Feb 10 04:56:08 2009 (r188430) @@ -54,10 +54,11 @@ __FBSDID("$FreeBSD$"); #include <sys/_lock.h> #include <sys/_mutex.h> #include <sys/_task.h> -#define _WANT_PRISON /* make jail.h give us 'struct prison' */ -#include <sys/jail.h> +#include <sys/cpuset.h> #include <sys/user.h> #include <sys/proc.h> +#define _WANT_PRISON /* make jail.h give us 'struct prison' */ +#include <sys/jail.h> #include <sys/exec.h> #include <sys/stat.h> #include <sys/sysent.h> Modified: projects/tcp_cc_7.x/libexec/ftpd/ftpd.8 ============================================================================== --- projects/tcp_cc_7.x/libexec/ftpd/ftpd.8 Tue Feb 10 02:43:07 2009 (r188429) +++ projects/tcp_cc_7.x/libexec/ftpd/ftpd.8 Tue Feb 10 04:56:08 2009 (r188430) @@ -205,7 +205,7 @@ for more information. Note that option is a virtual no-op in .Fx 5.0 and above; both port -ranges are indentical by default. +ranges are identical by default. .It Fl u The default file creation mode mask is set to .Ar umask , *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200902100456.n1A4u8oG081651>