Hi. I'm pondering this piece of mappedwrite():
if (pp = page_lookup(vp, start, SE_SHARED)) { caddr_t va; rw_exit(&zp->z_map_lock); va = ppmapin(pp, PROT_READ | PROT_WRITE, (caddr_t)-1L); error = uiomove(va+off, bytes, UIO_WRITE, uio); if (error == 0) { dmu_write(zfsvfs->z_os, zp->z_id, woff, bytes, va+off, tx); } ppmapout(va); page_unlock(pp); [...] In FreeBSD I call dmu_write() unconditionally, because if uiomove() partially succeeds, we will lose the change. If uiomove() fails entirely, well, we just write what we got before one more time. Is it also the case for OpenSolaris? -- Pawel Jakub Dawidek http://www.wheel.pl pjd at FreeBSD.org http://www.FreeBSD.org FreeBSD committer Am I Evil? Yes, I Am! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 187 bytes Desc: not available URL: <http://mail.opensolaris.org/pipermail/zfs-code/attachments/20070501/2db196a4/attachment.bin>