Page MenuHomeFreeBSD

D27353.id80155.diff
No OneTemporary

D27353.id80155.diff

Index: head/sys/ufs/ffs/ffs_balloc.c
===================================================================
--- head/sys/ufs/ffs/ffs_balloc.c
+++ head/sys/ufs/ffs/ffs_balloc.c
@@ -172,9 +172,17 @@
panic("ffs_balloc_ufs1: BA_METAONLY for direct block");
nb = dp->di_db[lbn];
if (nb != 0 && ip->i_size >= smalllblktosize(fs, lbn + 1)) {
- error = bread(vp, lbn, fs->fs_bsize, NOCRED, &bp);
- if (error) {
- return (error);
+ if ((flags & BA_CLRBUF) != 0) {
+ error = bread(vp, lbn, fs->fs_bsize, NOCRED,
+ &bp);
+ if (error != 0)
+ return (error);
+ } else {
+ bp = getblk(vp, lbn, fs->fs_bsize, 0, 0,
+ gbflags);
+ if (bp == NULL)
+ return (EIO);
+ vfs_bio_clrbuf(bp);
}
bp->b_blkno = fsbtodb(fs, nb);
*bpp = bp;
@@ -768,10 +776,17 @@
panic("ffs_balloc_ufs2: BA_METAONLY for direct block");
nb = dp->di_db[lbn];
if (nb != 0 && ip->i_size >= smalllblktosize(fs, lbn + 1)) {
- error = bread_gb(vp, lbn, fs->fs_bsize, NOCRED,
- gbflags, &bp);
- if (error) {
- return (error);
+ if ((flags & BA_CLRBUF) != 0) {
+ error = bread_gb(vp, lbn, fs->fs_bsize, NOCRED,
+ gbflags, &bp);
+ if (error != 0)
+ return (error);
+ } else {
+ bp = getblk(vp, lbn, fs->fs_bsize, 0, 0,
+ gbflags);
+ if (bp == NULL)
+ return (EIO);
+ vfs_bio_clrbuf(bp);
}
bp->b_blkno = fsbtodb(fs, nb);
*bpp = bp;

File Metadata

Mime Type
text/plain
Expires
Sun, Feb 2, 9:17 PM (20 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16413908
Default Alt Text
D27353.id80155.diff (1 KB)

Event Timeline