ext2_balloc.c (202283) | ext2_balloc.c (221166) |
---|---|
1/*- 2 * modified for Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/*- 8 * Copyright (c) 1982, 1986, 1989, 1993 --- 19 unchanged lines hidden (view full) --- 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)ffs_balloc.c 8.4 (Berkeley) 9/23/93 | 1/*- 2 * modified for Lites 1.1 3 * 4 * Aug 1995, Godmar Back (gback@cs.utah.edu) 5 * University of Utah, Department of Computer Science 6 */ 7/*- 8 * Copyright (c) 1982, 1986, 1989, 1993 --- 19 unchanged lines hidden (view full) --- 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * 35 * @(#)ffs_balloc.c 8.4 (Berkeley) 9/23/93 |
36 * $FreeBSD: head/sys/fs/ext2fs/ext2_balloc.c 202283 2010-01-14 14:30:54Z lulf $ | 36 * $FreeBSD: head/sys/fs/ext2fs/ext2_balloc.c 221166 2011-04-28 14:27:17Z jhb $ |
37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/bio.h> 42#include <sys/buf.h> 43#include <sys/lock.h> | 37 */ 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/bio.h> 42#include <sys/buf.h> 43#include <sys/lock.h> |
44#include <sys/ucred.h> | 44#include <sys/mount.h> |
45#include <sys/vnode.h> 46 47#include <fs/ext2fs/inode.h> 48#include <fs/ext2fs/ext2fs.h> 49#include <fs/ext2fs/fs.h> 50#include <fs/ext2fs/ext2_extern.h> 51#include <fs/ext2fs/ext2_mount.h> 52/* --- 85 unchanged lines hidden (view full) --- 138 EXT2_LOCK(ump); 139 error = ext2_alloc(ip, lbn, 140 ext2_blkpref(ip, lbn, (int)lbn, &ip->i_db[0], 0), 141 nsize, cred, &newb); 142 if (error) 143 return (error); 144 bp = getblk(vp, lbn, nsize, 0, 0, 0); 145 bp->b_blkno = fsbtodb(fs, newb); | 45#include <sys/vnode.h> 46 47#include <fs/ext2fs/inode.h> 48#include <fs/ext2fs/ext2fs.h> 49#include <fs/ext2fs/fs.h> 50#include <fs/ext2fs/ext2_extern.h> 51#include <fs/ext2fs/ext2_mount.h> 52/* --- 85 unchanged lines hidden (view full) --- 138 EXT2_LOCK(ump); 139 error = ext2_alloc(ip, lbn, 140 ext2_blkpref(ip, lbn, (int)lbn, &ip->i_db[0], 0), 141 nsize, cred, &newb); 142 if (error) 143 return (error); 144 bp = getblk(vp, lbn, nsize, 0, 0, 0); 145 bp->b_blkno = fsbtodb(fs, newb); |
146 if (flags & B_CLRBUF) | 146 if (flags & BA_CLRBUF) |
147 vfs_bio_clrbuf(bp); 148 } 149 ip->i_db[lbn] = dbtofsb(fs, bp->b_blkno); 150 ip->i_flag |= IN_CHANGE | IN_UPDATE; 151 *bpp = bp; 152 return (0); 153 } 154 /* --- 75 unchanged lines hidden (view full) --- 230 brelse(bp); 231 return (error); 232 } 233 bap[indirs[i - 1].in_off] = nb; 234 /* 235 * If required, write synchronously, otherwise use 236 * delayed write. 237 */ | 147 vfs_bio_clrbuf(bp); 148 } 149 ip->i_db[lbn] = dbtofsb(fs, bp->b_blkno); 150 ip->i_flag |= IN_CHANGE | IN_UPDATE; 151 *bpp = bp; 152 return (0); 153 } 154 /* --- 75 unchanged lines hidden (view full) --- 230 brelse(bp); 231 return (error); 232 } 233 bap[indirs[i - 1].in_off] = nb; 234 /* 235 * If required, write synchronously, otherwise use 236 * delayed write. 237 */ |
238 if (flags & B_SYNC) { | 238 if (flags & IO_SYNC) { |
239 bwrite(bp); 240 } else { 241 if (bp->b_bufsize == fs->e2fs_bsize) 242 bp->b_flags |= B_CLUSTEROK; 243 bdwrite(bp); 244 } 245 } 246 /* --- 6 unchanged lines hidden (view full) --- 253 if ((error = ext2_alloc(ip, 254 lbn, pref, (int)fs->e2fs_bsize, cred, &newb)) != 0) { 255 brelse(bp); 256 return (error); 257 } 258 nb = newb; 259 nbp = getblk(vp, lbn, fs->e2fs_bsize, 0, 0, 0); 260 nbp->b_blkno = fsbtodb(fs, nb); | 239 bwrite(bp); 240 } else { 241 if (bp->b_bufsize == fs->e2fs_bsize) 242 bp->b_flags |= B_CLUSTEROK; 243 bdwrite(bp); 244 } 245 } 246 /* --- 6 unchanged lines hidden (view full) --- 253 if ((error = ext2_alloc(ip, 254 lbn, pref, (int)fs->e2fs_bsize, cred, &newb)) != 0) { 255 brelse(bp); 256 return (error); 257 } 258 nb = newb; 259 nbp = getblk(vp, lbn, fs->e2fs_bsize, 0, 0, 0); 260 nbp->b_blkno = fsbtodb(fs, nb); |
261 if (flags & B_CLRBUF) | 261 if (flags & BA_CLRBUF) |
262 vfs_bio_clrbuf(nbp); 263 bap[indirs[i].in_off] = nb; 264 /* 265 * If required, write synchronously, otherwise use 266 * delayed write. 267 */ | 262 vfs_bio_clrbuf(nbp); 263 bap[indirs[i].in_off] = nb; 264 /* 265 * If required, write synchronously, otherwise use 266 * delayed write. 267 */ |
268 if (flags & B_SYNC) { | 268 if (flags & IO_SYNC) { |
269 bwrite(bp); 270 } else { 271 if (bp->b_bufsize == fs->e2fs_bsize) 272 bp->b_flags |= B_CLUSTEROK; 273 bdwrite(bp); 274 } 275 *bpp = nbp; 276 return (0); 277 } 278 brelse(bp); | 269 bwrite(bp); 270 } else { 271 if (bp->b_bufsize == fs->e2fs_bsize) 272 bp->b_flags |= B_CLUSTEROK; 273 bdwrite(bp); 274 } 275 *bpp = nbp; 276 return (0); 277 } 278 brelse(bp); |
279 if (flags & B_CLRBUF) { 280 error = bread(vp, lbn, (int)fs->e2fs_bsize, NOCRED, &nbp); | 279 if (flags & BA_CLRBUF) { 280 int seqcount = (flags & BA_SEQMASK) >> BA_SEQSHIFT; 281 if (seqcount && (vp->v_mount->mnt_flag & MNT_NOCLUSTERR) == 0) { 282 error = cluster_read(vp, ip->i_size, lbn, 283 (int)fs->e2fs_bsize, NOCRED, 284 MAXBSIZE, seqcount, &nbp); 285 } else { 286 error = bread(vp, lbn, (int)fs->e2fs_bsize, NOCRED, &nbp); 287 } |
281 if (error) { 282 brelse(nbp); 283 return (error); 284 } 285 } else { 286 nbp = getblk(vp, lbn, fs->e2fs_bsize, 0, 0, 0); 287 nbp->b_blkno = fsbtodb(fs, nb); 288 } 289 *bpp = nbp; 290 return (0); 291} 292 | 288 if (error) { 289 brelse(nbp); 290 return (error); 291 } 292 } else { 293 nbp = getblk(vp, lbn, fs->e2fs_bsize, 0, 0, 0); 294 nbp->b_blkno = fsbtodb(fs, nb); 295 } 296 *bpp = nbp; 297 return (0); 298} 299 |