Date: Wed, 25 Apr 2001 03:33:10 -0700 (PDT) From: Bruce Evans <bde@FreeBSD.org> To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/gnu/ext2fs ext2_balloc.c Message-ID: <200104251033.f3PAXAh37177@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
bde 2001/04/25 03:33:10 PDT Modified files: sys/gnu/ext2fs ext2_balloc.c Log: MFffs ffs_balloc.c 1.5. Long ago, bread() set b_blkno to the disk block number as a side effect of doing physical i/o (or it just retained the setting from when the i/o was done). The setting is lost when buffers go away and then are reconsituted from VM. bread() originally compensated by doing a VOP_BMAP() to recover b_blkno, but this was no good since it sometimes caused extra i/o or even deadlock for bread()ing metadata to do the bmap. This was fixed in vfs_bio.c 1.33 (1995/03/03) and ffs_balloc.c 1.5, etc., by removing the VOP_BMAP() from bread() and breadn(), and changing all (?) places that used b_blkno to set it if necessary. ext2fs was not imported until later in 1995 and was still depending on the old behaviour of bread() in at least ext2_balloc(). This caused filesystem and file corruption by clobbering direct block numbers in inodes. Revision Changes Path 1.13 +3 -1 src/sys/gnu/ext2fs/ext2_balloc.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104251033.f3PAXAh37177>