NetBSD-Bugs archive

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

port-evbmips/48564: 'tar' on evbmips-mips64el (LOONGSON) corrupts files extracted to NFS



>Number:         48564
>Category:       port-evbmips
>Synopsis:       'tar' on evbmips-mips64el (LOONGSON) corrupts files extracted 
>to NFS
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    port-evbmips-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 31 21:45:00 +0000 2014
>Originator:     John D. Baker
>Release:        NetBSD/evbmips-6.99.30 (evbmips-mips64el/LOONGSON)
>Organization:
>Environment:
NetBSD chalk.technoskunk.fur 6.99.30 NetBSD 6.99.30 (YEELOONG) #4: Thu Jan 30 
19:42:48 CST 2014  
sysop%verthandi.technoskunk.fur@localhost:/d0/build/current/obj/mips64el/sys/arch/evbmips/compile/YEELOONG
 evbmips

(Kernel config includes LOONGSON with additions for debugging and root
on NFS or SD card.)
>Description:
On my Lemote YEELOONG netbook, extracting a 'tar' archive to an NFS
destination yields files corrupted in the following fashion:

  8192 bytes file data #0
  8192 bytes 0x00
  8192 bytes file data #2
  8192 bytes 0x00
  [...]

and the file is truncated to the nearest multiple of 8192 bytes.

The problem has so far only been observed with extracting files to an
NFS destination.  Extracting an archive from NFS to local disk does not
corrupt data. Creating a tar archive on either local disk or NFS from
either NFS sources or local disk sources works correctly and does not
corrupt any member files.

This behavior was seen even in the early 6.99.x days (before LOONGSON
kernels had the prolonged build breakage).
>How-To-Repeat:
On evbmips-mips64el, particularly LOONGSON, particularly Lemote YEELOONG:

mount -t nfs server:/path/to/writable/dir /mnt
cd /etc
cp services /mnt/services-tmp
tar cf - services | tar xf - -C /mnt
ls -l /mnt/services*  # observe size difference
cmp /mnt/services-tmp /mnt/services

Use 'hexdump -C /mnt/services | less' to observe file corruption
beginning at offset 0x2000-0x3fff, 0x6000-0x7fff, etc.

>Fix:



Home | Main Index | Thread Index | Old Index