Subject: CVS commit: src/sys
To: None <source-changes@NetBSD.org>
From: David Laight <dsl@netbsd.org>
List: source-changes
Date: 04/22/2007 08:30:02
Module Name:	src
Committed By:	dsl
Date:		Sun Apr 22 08:30:02 UTC 2007

Modified Files:
	src/sys/arch/arm/arm: arm_machdep.c
	src/sys/compat/aoutm68k: aoutm68k_stat.c
	src/sys/compat/common: compat_file.c compat_util.c compat_util.h
	    vfs_syscalls_20.c vfs_syscalls_30.c vfs_syscalls_43.c
	src/sys/compat/darwin: darwin_attr.c darwin_mount.c darwin_stat.c
	src/sys/compat/freebsd: freebsd_exec_elf32.c freebsd_file.c
	src/sys/compat/hpux: hpux_compat.c hpux_exec.c hpux_file.c
	src/sys/compat/ibcs2: ibcs2_exec.c ibcs2_exec_coff.c ibcs2_exec_elf32.c
	    ibcs2_fcntl.c ibcs2_misc.c ibcs2_stat.c
	src/sys/compat/irix: irix_exec_elf32.c irix_mount.c irix_stat.c
	src/sys/compat/linux/common: linux_exec.c linux_exec_elf32.c
	    linux_file.c linux_file64.c linux_misc.c linux_misc_notalpha.c
	    linux_uselib.c
	src/sys/compat/linux32/common: linux32_exec_elf32.c linux32_misc.c
	    linux32_stat.c linux32_time.c linux32_unistd.c
	src/sys/compat/mach: mach_exec.c
	src/sys/compat/netbsd32: netbsd32_compat_12.c netbsd32_compat_20.c
	    netbsd32_compat_30.c netbsd32_compat_43.c netbsd32_exec_elf32.c
	    netbsd32_execve.c netbsd32_fs.c netbsd32_netbsd.c
	src/sys/compat/osf1: osf1_exec_ecoff.c osf1_file.c osf1_mount.c
	src/sys/compat/pecoff: pecoff_exec.c pecoff_misc.c
	src/sys/compat/sunos: sunos_misc.c
	src/sys/compat/sunos32: sunos32.h sunos32_misc.c
	src/sys/compat/svr4: svr4_exec_elf32.c svr4_exec_elf64.c svr4_fcntl.c
	    svr4_misc.c svr4_stat.c
	src/sys/compat/svr4_32: svr4_32_exec_elf32.c svr4_32_fcntl.c
	    svr4_32_misc.c svr4_32_stat.c
	src/sys/compat/ultrix: ultrix_pathname.c
	src/sys/kern: exec_elf32.c exec_script.c kern_acct.c kern_descrip.c
	    kern_exec.c uipc_usrreq.c vfs_lookup.c vfs_syscalls.c vfs_vnops.c
	src/sys/lkm/compat: Makefile.inc
	src/sys/lkm/compat/freebsd: Makefile
	src/sys/lkm/compat/linux: Makefile
	src/sys/lkm/compat/pecoff: Makefile
	src/sys/lkm/compat/svr4: Makefile
	src/sys/nfs: nfs_subs.c
	src/sys/sys: exec.h filedesc.h namei.h
	src/sys/uvm: uvm_swap.c

Log Message:
Change the way that emulations locate files within the emulation root to
  avoid having to allocate space in the 'stackgap'
  - which is very LWP unfriendly.
The additional code for non-emulation namei() is trivial, the reduction for
  the emulations is massive.
The vnode for a processes emulation root is saved in the cwdi structure
  during process exec.
If the emulation root the TRYEMULROOT flag are set, namei() will do an initial
  search for absolute pathnames in the emulation root, if that fails it will
  retry from the normal root.
".." at the emulation root will always go to the real root, even in the middle
  of paths and when expanding symlinks.
Absolute symlinks found using absolute paths in the emulation root will be
  relative to the emulation root (so /usr/lib/xxx.so -> /lib/xxx.so links
  inside the emulation root don't need changing).
If the root of the emulation would be returned (for an emulation lookup), then
  the real root is returned instead (matching the behaviour of emul_lookup,
  but being a cheap comparison here) so that programs that scan "../.."
  looking for the root dircetory don't loop forever.
The target for symbolic links is no longer mangled (it used to get the
  CHECK_ALT_xxx() treatment, so could get /emul/xxx prepended).
CHECK_ALT_xxx() are no more. Most of the change is deleting them, and adding
  TRYEMULROOT to the flags to NDINIT().
A lot of the emulation system call stubs could now be deleted.


To generate a diff of this commit:
cvs rdiff -r1.14 -r1.15 src/sys/arch/arm/arm/arm_machdep.c
cvs rdiff -r1.18 -r1.19 src/sys/compat/aoutm68k/aoutm68k_stat.c
cvs rdiff -r1.21 -r1.22 src/sys/compat/common/compat_file.c \
    src/sys/compat/common/vfs_syscalls_30.c
cvs rdiff -r1.34 -r1.35 src/sys/compat/common/compat_util.c
cvs rdiff -r1.17 -r1.18 src/sys/compat/common/compat_util.h
cvs rdiff -r1.16 -r1.17 src/sys/compat/common/vfs_syscalls_20.c
cvs rdiff -r1.37 -r1.38 src/sys/compat/common/vfs_syscalls_43.c
cvs rdiff -r1.16 -r1.17 src/sys/compat/darwin/darwin_attr.c
cvs rdiff -r1.10 -r1.11 src/sys/compat/darwin/darwin_mount.c
cvs rdiff -r1.7 -r1.8 src/sys/compat/darwin/darwin_stat.c
cvs rdiff -r1.16 -r1.17 src/sys/compat/freebsd/freebsd_exec_elf32.c
cvs rdiff -r1.24 -r1.25 src/sys/compat/freebsd/freebsd_file.c
cvs rdiff -r1.90 -r1.91 src/sys/compat/hpux/hpux_compat.c
cvs rdiff -r1.50 -r1.51 src/sys/compat/hpux/hpux_exec.c
cvs rdiff -r1.34 -r1.35 src/sys/compat/hpux/hpux_file.c
cvs rdiff -r1.67 -r1.68 src/sys/compat/ibcs2/ibcs2_exec.c
cvs rdiff -r1.18 -r1.19 src/sys/compat/ibcs2/ibcs2_exec_coff.c
cvs rdiff -r1.13 -r1.14 src/sys/compat/ibcs2/ibcs2_exec_elf32.c
cvs rdiff -r1.26 -r1.27 src/sys/compat/ibcs2/ibcs2_fcntl.c
cvs rdiff -r1.84 -r1.85 src/sys/compat/ibcs2/ibcs2_misc.c
cvs rdiff -r1.38 -r1.39 src/sys/compat/ibcs2/ibcs2_stat.c
cvs rdiff -r1.12 -r1.13 src/sys/compat/irix/irix_exec_elf32.c
cvs rdiff -r1.15 -r1.16 src/sys/compat/irix/irix_mount.c
cvs rdiff -r1.18 -r1.19 src/sys/compat/irix/irix_stat.c
cvs rdiff -r1.94 -r1.95 src/sys/compat/linux/common/linux_exec.c
cvs rdiff -r1.78 -r1.79 src/sys/compat/linux/common/linux_exec_elf32.c
cvs rdiff -r1.81 -r1.82 src/sys/compat/linux/common/linux_file.c
cvs rdiff -r1.37 -r1.38 src/sys/compat/linux/common/linux_file64.c
cvs rdiff -r1.170 -r1.171 src/sys/compat/linux/common/linux_misc.c
cvs rdiff -r1.87 -r1.88 src/sys/compat/linux/common/linux_misc_notalpha.c
cvs rdiff -r1.20 -r1.21 src/sys/compat/linux/common/linux_uselib.c
cvs rdiff -r1.6 -r1.7 src/sys/compat/linux32/common/linux32_exec_elf32.c
cvs rdiff -r1.5 -r1.6 src/sys/compat/linux32/common/linux32_misc.c
cvs rdiff -r1.7 -r1.8 src/sys/compat/linux32/common/linux32_stat.c
cvs rdiff -r1.10 -r1.11 src/sys/compat/linux32/common/linux32_time.c
cvs rdiff -r1.8 -r1.9 src/sys/compat/linux32/common/linux32_unistd.c
cvs rdiff -r1.63 -r1.64 src/sys/compat/mach/mach_exec.c
cvs rdiff -r1.25 -r1.26 src/sys/compat/netbsd32/netbsd32_compat_12.c
cvs rdiff -r1.11 -r1.12 src/sys/compat/netbsd32/netbsd32_compat_20.c
cvs rdiff -r1.19 -r1.20 src/sys/compat/netbsd32/netbsd32_compat_30.c
cvs rdiff -r1.39 -r1.40 src/sys/compat/netbsd32/netbsd32_compat_43.c \
    src/sys/compat/netbsd32/netbsd32_fs.c
cvs rdiff -r1.26 -r1.27 src/sys/compat/netbsd32/netbsd32_exec_elf32.c
cvs rdiff -r1.29 -r1.30 src/sys/compat/netbsd32/netbsd32_execve.c
cvs rdiff -r1.121 -r1.122 src/sys/compat/netbsd32/netbsd32_netbsd.c
cvs rdiff -r1.16 -r1.17 src/sys/compat/osf1/osf1_exec_ecoff.c
cvs rdiff -r1.23 -r1.24 src/sys/compat/osf1/osf1_file.c
cvs rdiff -r1.33 -r1.34 src/sys/compat/osf1/osf1_mount.c
cvs rdiff -r1.34 -r1.35 src/sys/compat/pecoff/pecoff_exec.c
cvs rdiff -r1.17 -r1.18 src/sys/compat/pecoff/pecoff_misc.c
cvs rdiff -r1.146 -r1.147 src/sys/compat/sunos/sunos_misc.c
cvs rdiff -r1.10 -r1.11 src/sys/compat/sunos32/sunos32.h
cvs rdiff -r1.47 -r1.48 src/sys/compat/sunos32/sunos32_misc.c
cvs rdiff -r1.11 -r1.12 src/sys/compat/svr4/svr4_exec_elf32.c
cvs rdiff -r1.10 -r1.11 src/sys/compat/svr4/svr4_exec_elf64.c
cvs rdiff -r1.56 -r1.57 src/sys/compat/svr4/svr4_fcntl.c
cvs rdiff -r1.125 -r1.126 src/sys/compat/svr4/svr4_misc.c
cvs rdiff -r1.61 -r1.62 src/sys/compat/svr4/svr4_stat.c
cvs rdiff -r1.16 -r1.17 src/sys/compat/svr4_32/svr4_32_exec_elf32.c
cvs rdiff -r1.19 -r1.20 src/sys/compat/svr4_32/svr4_32_fcntl.c
cvs rdiff -r1.44 -r1.45 src/sys/compat/svr4_32/svr4_32_misc.c
cvs rdiff -r1.26 -r1.27 src/sys/compat/svr4_32/svr4_32_stat.c
cvs rdiff -r1.26 -r1.27 src/sys/compat/ultrix/ultrix_pathname.c
cvs rdiff -r1.122 -r1.123 src/sys/kern/exec_elf32.c
cvs rdiff -r1.56 -r1.57 src/sys/kern/exec_script.c
cvs rdiff -r1.73 -r1.74 src/sys/kern/kern_acct.c
cvs rdiff -r1.155 -r1.156 src/sys/kern/kern_descrip.c
cvs rdiff -r1.243 -r1.244 src/sys/kern/kern_exec.c
cvs rdiff -r1.96 -r1.97 src/sys/kern/uipc_usrreq.c
cvs rdiff -r1.84 -r1.85 src/sys/kern/vfs_lookup.c
cvs rdiff -r1.309 -r1.310 src/sys/kern/vfs_syscalls.c
cvs rdiff -r1.137 -r1.138 src/sys/kern/vfs_vnops.c
cvs rdiff -r1.19 -r1.20 src/sys/lkm/compat/Makefile.inc
cvs rdiff -r1.20 -r1.21 src/sys/lkm/compat/freebsd/Makefile
cvs rdiff -r1.31 -r1.32 src/sys/lkm/compat/linux/Makefile
cvs rdiff -r1.4 -r1.5 src/sys/lkm/compat/pecoff/Makefile
cvs rdiff -r1.12 -r1.13 src/sys/lkm/compat/svr4/Makefile
cvs rdiff -r1.184 -r1.185 src/sys/nfs/nfs_subs.c
cvs rdiff -r1.115 -r1.116 src/sys/sys/exec.h
cvs rdiff -r1.37 -r1.38 src/sys/sys/filedesc.h
cvs rdiff -r1.48 -r1.49 src/sys/sys/namei.h
cvs rdiff -r1.123 -r1.124 src/sys/uvm/uvm_swap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.