Commit 461cb419f074aab16836a660efb8e855b6c1609c

Authored by Bob Peterson
Committed by Steven Whitehouse
1 parent ba6e93645f

GFS2: Simplify gfs2_write_alloc_required

Function gfs2_write_alloc_required always returned zero as its
return code.  Therefore, it doesn't need to return a return code
at all.  Given that, we can use the return value to return whether
or not the dinode needs block allocations rather than passing
that value in, which in turn simplifies a bunch of error checking.

Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>

Showing 6 changed files with 14 additions and 35 deletions Side-by-side Diff

... ... @@ -634,9 +634,7 @@
634 634 }
635 635 }
636 636  
637   - error = gfs2_write_alloc_required(ip, pos, len, &alloc_required);
638   - if (error)
639   - goto out_unlock;
  637 + alloc_required = gfs2_write_alloc_required(ip, pos, len);
640 638  
641 639 if (alloc_required || gfs2_is_jdata(ip))
642 640 gfs2_write_calc_reserv(ip, len, &data_blocks, &ind_blocks);
... ... @@ -1244,13 +1244,12 @@
1244 1244 * @ip: the file being written to
1245 1245 * @offset: the offset to write to
1246 1246 * @len: the number of bytes being written
1247   - * @alloc_required: set to 1 if an alloc is required, 0 otherwise
1248 1247 *
1249   - * Returns: errno
  1248 + * Returns: 1 if an alloc is required, 0 otherwise
1250 1249 */
1251 1250  
1252 1251 int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
1253   - unsigned int len, int *alloc_required)
  1252 + unsigned int len)
1254 1253 {
1255 1254 struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
1256 1255 struct buffer_head bh;
1257 1256  
1258 1257  
1259 1258  
... ... @@ -1258,26 +1257,23 @@
1258 1257 u64 lblock, lblock_stop, size;
1259 1258 u64 end_of_file;
1260 1259  
1261   - *alloc_required = 0;
1262   -
1263 1260 if (!len)
1264 1261 return 0;
1265 1262  
1266 1263 if (gfs2_is_stuffed(ip)) {
1267 1264 if (offset + len >
1268 1265 sdp->sd_sb.sb_bsize - sizeof(struct gfs2_dinode))
1269   - *alloc_required = 1;
  1266 + return 1;
1270 1267 return 0;
1271 1268 }
1272 1269  
1273   - *alloc_required = 1;
1274 1270 shift = sdp->sd_sb.sb_bsize_shift;
1275 1271 BUG_ON(gfs2_is_dir(ip));
1276 1272 end_of_file = (ip->i_disksize + sdp->sd_sb.sb_bsize - 1) >> shift;
1277 1273 lblock = offset >> shift;
1278 1274 lblock_stop = (offset + len + sdp->sd_sb.sb_bsize - 1) >> shift;
1279 1275 if (lblock_stop > end_of_file)
1280   - return 0;
  1276 + return 1;
1281 1277  
1282 1278 size = (lblock_stop - lblock) << shift;
1283 1279 do {
1284 1280  
... ... @@ -1285,12 +1281,11 @@
1285 1281 bh.b_size = size;
1286 1282 gfs2_block_map(&ip->i_inode, lblock, &bh, 0);
1287 1283 if (!buffer_mapped(&bh))
1288   - return 0;
  1284 + return 1;
1289 1285 size -= bh.b_size;
1290 1286 lblock += (bh.b_size >> ip->i_inode.i_blkbits);
1291 1287 } while(size > 0);
1292 1288  
1293   - *alloc_required = 0;
1294 1289 return 0;
1295 1290 }
... ... @@ -52,7 +52,7 @@
52 52 int gfs2_truncatei_resume(struct gfs2_inode *ip);
53 53 int gfs2_file_dealloc(struct gfs2_inode *ip);
54 54 int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
55   - unsigned int len, int *alloc_required);
  55 + unsigned int len);
56 56  
57 57 #endif /* __BMAP_DOT_H__ */
... ... @@ -351,7 +351,6 @@
351 351 unsigned long last_index;
352 352 u64 pos = page->index << PAGE_CACHE_SHIFT;
353 353 unsigned int data_blocks, ind_blocks, rblocks;
354   - int alloc_required = 0;
355 354 struct gfs2_holder gh;
356 355 struct gfs2_alloc *al;
357 356 int ret;
... ... @@ -364,8 +363,7 @@
364 363 set_bit(GLF_DIRTY, &ip->i_gl->gl_flags);
365 364 set_bit(GIF_SW_PAGED, &ip->i_flags);
366 365  
367   - ret = gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE, &alloc_required);
368   - if (ret || !alloc_required)
  366 + if (!gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE))
369 367 goto out_unlock;
370 368 ret = -ENOMEM;
371 369 al = gfs2_alloc_get(ip);
... ... @@ -787,15 +787,9 @@
787 787 goto out;
788 788  
789 789 for (x = 0; x < num_qd; x++) {
790   - int alloc_required;
791   -
792 790 offset = qd2offset(qda[x]);
793   - error = gfs2_write_alloc_required(ip, offset,
794   - sizeof(struct gfs2_quota),
795   - &alloc_required);
796   - if (error)
797   - goto out_gunlock;
798   - if (alloc_required)
  791 + if (gfs2_write_alloc_required(ip, offset,
  792 + sizeof(struct gfs2_quota)))
799 793 nalloc++;
800 794 }
801 795  
... ... @@ -1584,10 +1578,7 @@
1584 1578 goto out_i;
1585 1579  
1586 1580 offset = qd2offset(qd);
1587   - error = gfs2_write_alloc_required(ip, offset, sizeof(struct gfs2_quota),
1588   - &alloc_required);
1589   - if (error)
1590   - goto out_i;
  1581 + alloc_required = gfs2_write_alloc_required(ip, offset, sizeof(struct gfs2_quota));
1591 1582 if (alloc_required) {
1592 1583 al = gfs2_alloc_get(ip);
1593 1584 if (al == NULL)
... ... @@ -342,8 +342,6 @@
342 342 {
343 343 struct gfs2_inode *ip = GFS2_I(jd->jd_inode);
344 344 struct gfs2_sbd *sdp = GFS2_SB(jd->jd_inode);
345   - int ar;
346   - int error;
347 345  
348 346 if (ip->i_disksize < (8 << 20) || ip->i_disksize > (1 << 30) ||
349 347 (ip->i_disksize & (sdp->sd_sb.sb_bsize - 1))) {
350 348  
351 349  
... ... @@ -352,13 +350,12 @@
352 350 }
353 351 jd->jd_blocks = ip->i_disksize >> sdp->sd_sb.sb_bsize_shift;
354 352  
355   - error = gfs2_write_alloc_required(ip, 0, ip->i_disksize, &ar);
356   - if (!error && ar) {
  353 + if (gfs2_write_alloc_required(ip, 0, ip->i_disksize)) {
357 354 gfs2_consist_inode(ip);
358   - error = -EIO;
  355 + return -EIO;
359 356 }
360 357  
361   - return error;
  358 + return 0;
362 359 }
363 360  
364 361 /**