tech-kern archive

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

Re: zero-filed page on VOP_PUTPAGES



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
manu%netbsd.org@localhost


Home | Main Index | Thread Index | Old Index