Since it works in -current. I tried backporting most changes done to PUFFS to netbsd-5 but the bug is still there. Therefore I started over with stock netbsd-5, PUFFS being patched just to dump setattr and getattr sizes.
Here is a strange trace that leads to a zeroed chunk of 787 bytes at offset 0: reqid: 12632, opclass 2, optype: PUFFS_VN_CREATE, cookie: 0xbb90f200, aux: 0xbb91f02c, auxlen: 1284, pid: 8487, lwpid: 1 since previous call: 0.003462 RV reqid: 12632, result: 0 new node 0xbb90f3e0 reqid: 12633, opclass 2, optype: PUFFS_VN_OPEN, cookie: 0xbb90f3e0, aux: 0xbb91e02c, auxlen: 132, pid: 8487, lwpid: 1 mode: 0x202 since previous call: 0.006000 RV reqid: 12633, result: 0 reqid: 12634, opclass 2, optype: PUFFS_VN_GETATTR, cookie: 0xbb90f3e0, aux: 0xbb91f02c, auxlen: 240, pid: 11158, lwpid: 1 since previous call: 0.003070 RV reqid: 12634, result: 0 size: 0/0x0 reqid: 12635, opclass 2, optype: PUFFS_VN_GETATTR, cookie: 0xbb90f3e0, aux: 0xbb91e02c, auxlen: 240, pid: 14973, lwpid: 1 since previous call: 0.058382 RV reqid: 12635, result: 0 size: 0/0x0 reqid: 12636, opclass 2, optype: PUFFS_VN_SETATTR, cookie: 0xbb90f3e0, aux: 0xbb91f02c, auxlen: 240, pid: 0, lwpid: 27 size: 787/0x313 since previous call: 0.103641 Right, it sets the size to 787 but nothing has been written. It seems this was triggered by a sync, as seen below. reqid: 12637, opclass 2, optype: PUFFS_VN_GETATTR, cookie: 0xbb90f3e0, aux: 0xbb92002c, auxlen: 240, pid: 12780, lwpid: 1 since previous call: 0.004147 RV reqid: 12637, result: 0 size: 0/0x0 RV reqid: 12636, result: 0 reqid: 12638, opclass 2, optype: PUFFS_VN_FSYNC, cookie: 0xbb90f3e0, aux: 0xbb92102c, auxlen: 148, pid: 0, lwpid: 27 since previous call: 0.008753 RV reqid: 12638, result: 0 reqid: 12639, opclass 1, optype: PUFFS_VFS_SYNC, cookie: 0x0, aux: 0xbb91e02c, auxlen: 132, pid: 0, lwpid: 27 since previous call: 0.000084 RV reqid: 12639, result: 0 reqid: 12640, opclass 2, optype: PUFFS_VN_READ, cookie: 0xbb90f3e0, aux: 0xbb92002c, auxlen: 931, pid: 12780, lwpid: 1 offset: 0, resid 787, ioflag 0x0 since previous call: 0.000014 RV reqid: 12640, result: 0 resid after op: 0 There the data that was never written at offset 787 has been read. It cannot contain anything else than zeros. I guess this is how the zeroed chunk comes along. -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz m...@netbsd.org