Deleted Added
full compact
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