xfs: remove the alloc_done argument to xfs_dialloc
authorChristoph Hellwig <hch@infradead.org>
Wed, 4 Jul 2012 14:54:47 +0000 (10:54 -0400)
committerBen Myers <bpm@sgi.com>
Sun, 29 Jul 2012 21:00:31 +0000 (16:00 -0500)
We can simplify check the IO_agbp pointer for being non-NULL instead of
passing another argument through two layers of function calls.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
fs/xfs/xfs_ialloc.c
fs/xfs/xfs_ialloc.h
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.h
fs/xfs/xfs_utils.c

index a124b9f88aae56445d0e4c282c551e9449c93146..2b70952c9d8cc09b0942789a032aae66e57539ba 100644 (file)
@@ -895,7 +895,6 @@ xfs_dialloc(
        umode_t                 mode,
        int                     okalloc,
        struct xfs_buf          **IO_agbp,
-       boolean_t               *alloc_done,
        xfs_ino_t               *inop)
 {
        struct xfs_buf          *agbp;
@@ -955,7 +954,6 @@ xfs_dialloc(
         * or in which we can allocate some inodes.  Iterate through the
         * allocation groups upward, wrapping at the end.
         */
-       *alloc_done = B_FALSE;
        while (!agi->agi_freecount) {
                /*
                 * Don't do anything if we're not supposed to allocate
@@ -982,7 +980,6 @@ xfs_dialloc(
                                 * us again where we left off.
                                 */
                                ASSERT(be32_to_cpu(agi->agi_freecount) > 0);
-                               *alloc_done = B_TRUE;
                                *IO_agbp = agbp;
                                *inop = NULLFSINO;
                                return 0;
index 65ac57c8063c78cc066f996db1ddbcce7c6e8a9f..1fd6ea4e9c91cdb09af5c80ff293ad818894a2d1 100644 (file)
@@ -75,8 +75,6 @@ xfs_dialloc(
        umode_t         mode,           /* mode bits for new inode */
        int             okalloc,        /* ok to allocate more space */
        struct xfs_buf  **agbp,         /* buf for a.g. inode header */
-       boolean_t       *alloc_done,    /* an allocation was done to replenish
-                                          the free inodes */
        xfs_ino_t       *inop);         /* inode number allocated */
 
 /*
index d48e406de078f262134742e7a7748990eec5f388..5c10825f2f80f8d0508b7056def9034977c0c2ce 100644 (file)
@@ -887,7 +887,6 @@ xfs_ialloc(
        prid_t          prid,
        int             okalloc,
        xfs_buf_t       **ialloc_context,
-       boolean_t       *call_again,
        xfs_inode_t     **ipp)
 {
        xfs_ino_t       ino;
@@ -902,10 +901,10 @@ xfs_ialloc(
         * the on-disk inode to be allocated.
         */
        error = xfs_dialloc(tp, pip ? pip->i_ino : 0, mode, okalloc,
-                           ialloc_context, call_again, &ino);
+                           ialloc_context, &ino);
        if (error)
                return error;
-       if (*call_again || ino == NULLFSINO) {
+       if (*ialloc_context || ino == NULLFSINO) {
                *ipp = NULL;
                return 0;
        }
index c2e2da3abae2a1d1494d6604985d70c9dc7916b2..04d2fe421b97a1350f9f929de72cd3fb43152fc9 100644 (file)
@@ -517,7 +517,7 @@ void                xfs_inode_free(struct xfs_inode *ip);
  */
 int            xfs_ialloc(struct xfs_trans *, xfs_inode_t *, umode_t,
                           xfs_nlink_t, xfs_dev_t, prid_t, int,
-                          struct xfs_buf **, boolean_t *, xfs_inode_t **);
+                          struct xfs_buf **, xfs_inode_t **);
 
 uint           xfs_ip2xflags(struct xfs_inode *);
 uint           xfs_dic2xflags(struct xfs_dinode *);
index 4e5b9ad5cb97c733332f7d95b321949f1b168996..0025c78ac03cc7fbf44479e080766e5925494b25 100644 (file)
@@ -65,7 +65,6 @@ xfs_dir_ialloc(
        xfs_trans_t     *ntp;
        xfs_inode_t     *ip;
        xfs_buf_t       *ialloc_context = NULL;
-       boolean_t       call_again = B_FALSE;
        int             code;
        uint            log_res;
        uint            log_count;
@@ -91,7 +90,7 @@ xfs_dir_ialloc(
         * the inode(s) that we've just allocated.
         */
        code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid, okalloc,
-                         &ialloc_context, &call_again, &ip);
+                         &ialloc_context, &ip);
 
        /*
         * Return an error if we were unable to allocate a new inode.
@@ -102,19 +101,18 @@ xfs_dir_ialloc(
                *ipp = NULL;
                return code;
        }
-       if (!call_again && (ip == NULL)) {
+       if (!ialloc_context && !ip) {
                *ipp = NULL;
                return XFS_ERROR(ENOSPC);
        }
 
        /*
-        * If call_again is set, then we were unable to get an
+        * If the AGI buffer is non-NULL, then we were unable to get an
         * inode in one operation.  We need to commit the current
         * transaction and call xfs_ialloc() again.  It is guaranteed
         * to succeed the second time.
         */
-       if (call_again) {
-
+       if (ialloc_context) {
                /*
                 * Normally, xfs_trans_commit releases all the locks.
                 * We call bhold to hang on to the ialloc_context across
@@ -195,7 +193,7 @@ xfs_dir_ialloc(
                 * this call should always succeed.
                 */
                code = xfs_ialloc(tp, dp, mode, nlink, rdev, prid,
-                                 okalloc, &ialloc_context, &call_again, &ip);
+                                 okalloc, &ialloc_context, &ip);
 
                /*
                 * If we get an error at this point, return to the caller
@@ -206,12 +204,11 @@ xfs_dir_ialloc(
                        *ipp = NULL;
                        return code;
                }
-               ASSERT ((!call_again) && (ip != NULL));
+               ASSERT(!ialloc_context && ip);
 
        } else {
-               if (committed != NULL) {
+               if (committed != NULL)
                        *committed = 0;
-               }
        }
 
        *ipp = ip;