]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
GFS2: Simplify gfs2_write_alloc_required
authorBob Peterson <rpeterso@redhat.com>
Thu, 24 Jun 2010 23:21:20 +0000 (19:21 -0400)
committerSteven Whitehouse <swhiteho@redhat.com>
Thu, 29 Jul 2010 08:36:56 +0000 (09:36 +0100)
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>
fs/gfs2/aops.c
fs/gfs2/bmap.c
fs/gfs2/bmap.h
fs/gfs2/file.c
fs/gfs2/quota.c
fs/gfs2/super.c

index 9485a882d80bb9d5190c6267549296ce5d392a3e..5e96cbd8a454a532c058a0880fec8a6b38571ddf 100644 (file)
@@ -634,9 +634,7 @@ static int gfs2_write_begin(struct file *file, struct address_space *mapping,
                }
        }
 
-       error = gfs2_write_alloc_required(ip, pos, len, &alloc_required);
-       if (error)
-               goto out_unlock;
+       alloc_required = gfs2_write_alloc_required(ip, pos, len);
 
        if (alloc_required || gfs2_is_jdata(ip))
                gfs2_write_calc_reserv(ip, len, &data_blocks, &ind_blocks);
index 84da64b551b2c1170f4e68550ead612ed6fd7b41..744c29e2dcf46a5859b492ae389cb7ba77745821 100644 (file)
@@ -1244,13 +1244,12 @@ int gfs2_file_dealloc(struct gfs2_inode *ip)
  * @ip: the file being written to
  * @offset: the offset to write to
  * @len: the number of bytes being written
- * @alloc_required: set to 1 if an alloc is required, 0 otherwise
  *
- * Returns: errno
+ * Returns: 1 if an alloc is required, 0 otherwise
  */
 
 int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
-                             unsigned int len, int *alloc_required)
+                             unsigned int len)
 {
        struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
        struct buffer_head bh;
@@ -1258,26 +1257,23 @@ int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
        u64 lblock, lblock_stop, size;
        u64 end_of_file;
 
-       *alloc_required = 0;
-
        if (!len)
                return 0;
 
        if (gfs2_is_stuffed(ip)) {
                if (offset + len >
                    sdp->sd_sb.sb_bsize - sizeof(struct gfs2_dinode))
-                       *alloc_required = 1;
+                       return 1;
                return 0;
        }
 
-       *alloc_required = 1;
        shift = sdp->sd_sb.sb_bsize_shift;
        BUG_ON(gfs2_is_dir(ip));
        end_of_file = (ip->i_disksize + sdp->sd_sb.sb_bsize - 1) >> shift;
        lblock = offset >> shift;
        lblock_stop = (offset + len + sdp->sd_sb.sb_bsize - 1) >> shift;
        if (lblock_stop > end_of_file)
-               return 0;
+               return 1;
 
        size = (lblock_stop - lblock) << shift;
        do {
@@ -1285,12 +1281,11 @@ int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
                bh.b_size = size;
                gfs2_block_map(&ip->i_inode, lblock, &bh, 0);
                if (!buffer_mapped(&bh))
-                       return 0;
+                       return 1;
                size -= bh.b_size;
                lblock += (bh.b_size >> ip->i_inode.i_blkbits);
        } while(size > 0);
 
-       *alloc_required = 0;
        return 0;
 }
 
index c983177e05ac2401887115781891c9a50f0972ba..a20a5213135a50ae9293da676eb533e9c04063db 100644 (file)
@@ -52,6 +52,6 @@ int gfs2_truncatei(struct gfs2_inode *ip, u64 size);
 int gfs2_truncatei_resume(struct gfs2_inode *ip);
 int gfs2_file_dealloc(struct gfs2_inode *ip);
 int gfs2_write_alloc_required(struct gfs2_inode *ip, u64 offset,
-                             unsigned int len, int *alloc_required);
+                             unsigned int len);
 
 #endif /* __BMAP_DOT_H__ */
index ed9a94f0ef159c369b6bd3a3598e1cd4d42fb697..4edd662c8232b2c24d1f1767b937f258071f8211 100644 (file)
@@ -351,7 +351,6 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
        unsigned long last_index;
        u64 pos = page->index << PAGE_CACHE_SHIFT;
        unsigned int data_blocks, ind_blocks, rblocks;
-       int alloc_required = 0;
        struct gfs2_holder gh;
        struct gfs2_alloc *al;
        int ret;
@@ -364,8 +363,7 @@ static int gfs2_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
        set_bit(GLF_DIRTY, &ip->i_gl->gl_flags);
        set_bit(GIF_SW_PAGED, &ip->i_flags);
 
-       ret = gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE, &alloc_required);
-       if (ret || !alloc_required)
+       if (!gfs2_write_alloc_required(ip, pos, PAGE_CACHE_SIZE))
                goto out_unlock;
        ret = -ENOMEM;
        al = gfs2_alloc_get(ip);
index 8f02d3db8f428fa345062fa50581f1a35c420a0e..8bb643cb2658615cf7c00e7083850c619953875a 100644 (file)
@@ -787,15 +787,9 @@ static int do_sync(unsigned int num_qd, struct gfs2_quota_data **qda)
                goto out;
 
        for (x = 0; x < num_qd; x++) {
-               int alloc_required;
-
                offset = qd2offset(qda[x]);
-               error = gfs2_write_alloc_required(ip, offset,
-                                                 sizeof(struct gfs2_quota),
-                                                 &alloc_required);
-               if (error)
-                       goto out_gunlock;
-               if (alloc_required)
+               if (gfs2_write_alloc_required(ip, offset,
+                                             sizeof(struct gfs2_quota)))
                        nalloc++;
        }
 
@@ -1584,10 +1578,7 @@ static int gfs2_set_dqblk(struct super_block *sb, int type, qid_t id,
                goto out_i;
 
        offset = qd2offset(qd);
-       error = gfs2_write_alloc_required(ip, offset, sizeof(struct gfs2_quota),
-                                         &alloc_required);
-       if (error)
-               goto out_i;
+       alloc_required = gfs2_write_alloc_required(ip, offset, sizeof(struct gfs2_quota));
        if (alloc_required) {
                al = gfs2_alloc_get(ip);
                if (al == NULL)
index 4d1aad38f1b136535ad6b568f3494d8ef3dec4ed..4140811a921cb7dc622a05bfa23b10e245f81daa 100644 (file)
@@ -342,8 +342,6 @@ int gfs2_jdesc_check(struct gfs2_jdesc *jd)
 {
        struct gfs2_inode *ip = GFS2_I(jd->jd_inode);
        struct gfs2_sbd *sdp = GFS2_SB(jd->jd_inode);
-       int ar;
-       int error;
 
        if (ip->i_disksize < (8 << 20) || ip->i_disksize > (1 << 30) ||
            (ip->i_disksize & (sdp->sd_sb.sb_bsize - 1))) {
@@ -352,13 +350,12 @@ int gfs2_jdesc_check(struct gfs2_jdesc *jd)
        }
        jd->jd_blocks = ip->i_disksize >> sdp->sd_sb.sb_bsize_shift;
 
-       error = gfs2_write_alloc_required(ip, 0, ip->i_disksize, &ar);
-       if (!error && ar) {
+       if (gfs2_write_alloc_required(ip, 0, ip->i_disksize)) {
                gfs2_consist_inode(ip);
-               error = -EIO;
+               return -EIO;
        }
 
-       return error;
+       return 0;
 }
 
 /**