cvs commit: src/sys/dev/disk/ccd ccd.c src/sys/dev/disk/vn vn.c src/sys/i386/i386 machdep.c src/sys/kern subr_diskslice.c vfs_bio.c vfs_cluster.c src/sys/sys buf.h src/sys/vfs/mfs mfs_vfsops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Thu May 4 11:36:57 PDT 2006
dillon 2006/05/04 11:32:23 PDT
DragonFly src repository
Modified files:
sys/dev/disk/ccd ccd.c
sys/dev/disk/vn vn.c
sys/i386/i386 machdep.c
sys/kern subr_diskslice.c vfs_bio.c vfs_cluster.c
sys/sys buf.h
sys/vfs/mfs mfs_vfsops.c
Log:
Block devices generally truncate the size of I/O requests which go past EOF.
This is exactly what we want when manually reading or writing a block device
such as /dev/ad0s1a, but is not desired when a VFS issues I/O ops on
filesystem buffers. In such cases, any EOF condition must be considered an
error.
Implement a new filesystem buffer flag B_BNOCLIP, which getblk() and friends
automatically set. If set, block devices are guarenteed to return an error
if the I/O request is at EOF or would otherwise have to be clipped to EOF.
Block devices further guarentee that b_bcount will not be modified when this
flag is set.
Adjust all block device EOF checks to use the new flag, and clean up the code
while I'm there. Also, set b_resid in a couple of degenerate cases where
it was not being set.
Revision Changes Path
1.30 +30 -31 src/sys/dev/disk/ccd/ccd.c
1.21 +36 -31 src/sys/dev/disk/vn/vn.c
1.91 +31 -14 src/sys/i386/i386/machdep.c
1.19 +30 -18 src/sys/kern/subr_diskslice.c
1.72 +1 -1 src/sys/kern/vfs_bio.c
1.25 +1 -1 src/sys/kern/vfs_cluster.c
1.35 +15 -18 src/sys/sys/buf.h
1.29 +37 -23 src/sys/vfs/mfs/mfs_vfsops.c
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/ccd/ccd.c.diff?r1=1.29&r2=1.30&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/dev/disk/vn/vn.c.diff?r1=1.20&r2=1.21&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/i386/i386/machdep.c.diff?r1=1.90&r2=1.91&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/subr_diskslice.c.diff?r1=1.18&r2=1.19&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_bio.c.diff?r1=1.71&r2=1.72&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/vfs_cluster.c.diff?r1=1.24&r2=1.25&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/buf.h.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/vfs/mfs/mfs_vfsops.c.diff?r1=1.28&r2=1.29&f=u
More information about the Commits
mailing list