NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Substantial COMPAT_LINUX changes in netbsd-5?



On 1/14/10 6:16 PM, Hauke Fath wrote:
> All,
> 
> after upgrading a few i386 servers to netbsd-5, wip/tsm (5.2.2, now 5.2.5)
> terminates with an OOM error:

[...]

I also hit problems running the Veritas Netbackup client for Linux after
upgrading to netbsd-5 (from netbsd-4).

> Any idea what changes in COMPAT_LINUX shipped with netbsd-5 might be
> responsible?

First, the suse(100)_base package has an "error" then running netbsd-5,
since linking outside the emulation root is not permitted. See:
http://mail-index.netbsd.org/pkgsrc-users/2009/05/26/msg009936.html
The symlink /emul/linux/etc/mtab should point to /proc/mounts instead of
/emul/linux/... The NetBackup client use /etc/mtab, which then fails if
it isn't corrected.

Second, the filesystems never worked to backup unless they where mounted
inside the emulation root. So I NFS-mounted them under
/emul/linux/netbackup/... instead.
However, the df command (which Netbackup also uses during backups) shows
the real path (which is /usr/pkg/emul/...), so I mimiced the directory
tree under /emul/linux/... (usr/pkg/emul/linux), and a netbackup symlink
at the top, pointing back to /netbackup.

After that, we at least got a full backup to work, but the incremental
backups still fails. It doesn't feel stable ATM. I just noticed that the
df command seems to get "blocked" during a incremental backup try.

-bash-4.0$ ktruss df
 18137      1 ktruss   emul(netbsd)
 18137      1 ktruss   fktrace                     = 0
 18137      1 ktruss   fcntl(0x4, 0x3, 0)          = 1
 18137      1 ktruss   fcntl(0x4, 0x4, 0x1)        = 0
 18137      1 ktruss   execve("/home/pettai/bin/df", 0xbfbfed28,
0xbfbfed30) Err#2 ENOENT
 18137      1 df       emul(netbsd)
 18137      1 df       execve("/bin/df", 0xbfbfed28, 0xbfbfed30) JUSTRETURN
 18137      1 df       mmap(0, 0x8000, 0x3, 0x1002, 0xffffffff, 0, 0, 0)
= 0xbbbe9000
 18137      1 df       open("/libexec/ld.elf_so", 0, 0) = 3
 18137      1 df       read(0x3, 0xbfbfec18, 0x80) = 55
       "libm.so.0\tmachdep.fpu_present\t1:libm387.so.0,libm.so.0\n"
 18137      1 df       close(0x3)                  = 0
 18137      1 df       open("/etc/ld.so.conf", 0, 0) = 3
 18137      1 df       __fstat30(0x3, 0xbfbfe534)  = 0
 18137      1 df       mmap(0, 0x1000, 0x1, 0x1, 0x3, 0, 0, 0) = 0xbbbe8000
 18137      1 df       munmap(0xbbbe8000, 0x1000)  = 0
 18137      1 df       mmap(0, 0xf0000, 0x5, 0x2, 0x3, 0, 0, 0) = 0xbbaf9000
 18137      1 df       mmap(0xbbbd1000, 0x8000, 0x3, 0x12, 0x3, 0,
0xd7000, 0) = 0xbbbd1000
 18137      1 df       mmap(0xbbbd9000, 0x10000, 0x3, 0x1012,
0xffffffff, 0, 0, 0) = 0xbbbd9000
 18137      1 df       close(0x3)                  = 0
 18137      1 df       __sysctl(0xbfbfec5c, 0x2, 0xbbbe7960, 0xbfbfec64,
0, 0) = 0
 18137      1 df       issetugid()                 = 0
 18137      1 df       getvfsstat(0, 0, 0x2)       = 12
 18137      1 df       __sysctl(0xbfbfe7a8, 0x2, 0xbbbe0f74, 0xbfbfe7b0,
0, 0) = 0
 18137      1 df       __sysctl(0xbfbfe6e8, 0x2, 0xbbbe7dc0, 0xbfbfe6f0,
0, 0) = 0
 18137      1 df       readlink("/lib/libc.so.12", 0xbfbfe7b5, 0x400)
Err#2 ENOENT
 18137      1 df       break(0x8100000)            = 0
 18137      1 df       mmap(0, 0x100000, 0x3, 0x14001002, 0xffffffff, 0,
0, 0) = 0xbb900000
 18137      1 df       getvfsstat(0xbb901000, 0x7124, 0x2) = 12
 18137      1 df       statvfs1("/etc/malloc.conf", 0xbb901000, 0x1) = 0
 18137      1 df       statvfs1("/", 0xbb9018b4, 0x1) = 0
 18137      1 df       statvfs1("/var", 0xbb902168, 0x1) = 0
 18137      1 df       statvfs1("/usr", 0xbb902a1c, 0x1) = 0
 18137      1 df       statvfs1("/tmp", 0xbb9032d0, 0x1) = 0
 18137      1 df       statvfs1("/home", 0xbb903b84, 0x1) = 0
 18137      1 df       statvfs1("/kern", 0xbb904438, 0x1) = 0
 18137      1 df       statvfs1("/proc", 0xbb904cec, 0x1) = 0
 18137      1 df       statvfs1("/usr/pkg/emul/linux/proc", 0xbb9055a0,
0x1) = 0
 18137      1 df       statvfs1("/usr/pkg/emul/linux/netbackup",
0xbb905e54, 0x1) = 0
 18137      1 df       statvfs1("/usr/pkg/emul/linux/netbackup/var",
0xbb906708, 0x1) = 0

(and here accessing the first mount point, it hangs...)

Maybe someone with knowledge of the new emulation code can elaborate a
bit about what the effect of the changes are. I don't think this is
documented anywhere.

HTH,
/P


Home | Main Index | Thread Index | Old Index