Page MenuHomeFreeBSD

D27353.id79937.diff
No OneTemporary

D27353.id79937.diff

Index: sys/ufs/ffs/ffs_balloc.c
===================================================================
--- sys/ufs/ffs/ffs_balloc.c
+++ 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
Thu, May 1, 11:40 AM (17 h, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17880445
Default Alt Text
D27353.id79937.diff (1 KB)

Event Timeline