]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/xfs/xfs_dir2_data.c
Merge remote-tracking branches 'regulator/topic/88pm800', 'regulator/topic/ab8500...
[karo-tx-linux.git] / fs / xfs / xfs_dir2_data.c
index b73d61adf1047abad21ec3cb2d35ceee170f7273..8c2f6422648ea76788a32b0a3accf755db14f000 100644 (file)
@@ -630,8 +630,8 @@ xfs_dir3_data_init(
        /*
         * Log it and return it.
         */
-       xfs_dir2_data_log_header(tp, dp, bp);
-       xfs_dir2_data_log_unused(tp, bp, dup);
+       xfs_dir2_data_log_header(args, bp);
+       xfs_dir2_data_log_unused(args, bp, dup);
        *bpp = bp;
        return 0;
 }
@@ -641,8 +641,7 @@ xfs_dir3_data_init(
  */
 void
 xfs_dir2_data_log_entry(
-       struct xfs_trans        *tp,
-       struct xfs_inode        *dp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp,
        xfs_dir2_data_entry_t   *dep)           /* data entry pointer */
 {
@@ -653,8 +652,8 @@ xfs_dir2_data_log_entry(
               hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC) ||
               hdr->magic == cpu_to_be32(XFS_DIR3_BLOCK_MAGIC));
 
-       xfs_trans_log_buf(tp, bp, (uint)((char *)dep - (char *)hdr),
-               (uint)((char *)(dp->d_ops->data_entry_tag_p(dep) + 1) -
+       xfs_trans_log_buf(args->trans, bp, (uint)((char *)dep - (char *)hdr),
+               (uint)((char *)(args->dp->d_ops->data_entry_tag_p(dep) + 1) -
                       (char *)hdr - 1));
 }
 
@@ -663,8 +662,7 @@ xfs_dir2_data_log_entry(
  */
 void
 xfs_dir2_data_log_header(
-       struct xfs_trans        *tp,
-       struct xfs_inode        *dp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp)
 {
 #ifdef DEBUG
@@ -676,7 +674,8 @@ xfs_dir2_data_log_header(
               hdr->magic == cpu_to_be32(XFS_DIR3_BLOCK_MAGIC));
 #endif
 
-       xfs_trans_log_buf(tp, bp, 0, dp->d_ops->data_entry_offset - 1);
+       xfs_trans_log_buf(args->trans, bp, 0,
+                         args->dp->d_ops->data_entry_offset - 1);
 }
 
 /*
@@ -684,7 +683,7 @@ xfs_dir2_data_log_header(
  */
 void
 xfs_dir2_data_log_unused(
-       struct xfs_trans        *tp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp,
        xfs_dir2_data_unused_t  *dup)           /* data unused pointer */
 {
@@ -698,13 +697,13 @@ xfs_dir2_data_log_unused(
        /*
         * Log the first part of the unused entry.
         */
-       xfs_trans_log_buf(tp, bp, (uint)((char *)dup - (char *)hdr),
+       xfs_trans_log_buf(args->trans, bp, (uint)((char *)dup - (char *)hdr),
                (uint)((char *)&dup->length + sizeof(dup->length) -
                       1 - (char *)hdr));
        /*
         * Log the end (tag) of the unused entry.
         */
-       xfs_trans_log_buf(tp, bp,
+       xfs_trans_log_buf(args->trans, bp,
                (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)hdr),
                (uint)((char *)xfs_dir2_data_unused_tag_p(dup) - (char *)hdr +
                       sizeof(xfs_dir2_data_off_t) - 1));
@@ -716,8 +715,7 @@ xfs_dir2_data_log_unused(
  */
 void
 xfs_dir2_data_make_free(
-       struct xfs_trans        *tp,
-       struct xfs_inode        *dp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp,
        xfs_dir2_data_aoff_t    offset,         /* starting byte offset */
        xfs_dir2_data_aoff_t    len,            /* length in bytes */
@@ -727,37 +725,33 @@ xfs_dir2_data_make_free(
        xfs_dir2_data_hdr_t     *hdr;           /* data block pointer */
        xfs_dir2_data_free_t    *dfp;           /* bestfree pointer */
        char                    *endptr;        /* end of data area */
-       xfs_mount_t             *mp;            /* filesystem mount point */
        int                     needscan;       /* need to regen bestfree */
        xfs_dir2_data_unused_t  *newdup;        /* new unused entry */
        xfs_dir2_data_unused_t  *postdup;       /* unused entry after us */
        xfs_dir2_data_unused_t  *prevdup;       /* unused entry before us */
        struct xfs_dir2_data_free *bf;
-       struct xfs_da_geometry  *geo;
 
-       mp = tp->t_mountp;
        hdr = bp->b_addr;
-       geo = mp->m_dir_geo;
 
        /*
         * Figure out where the end of the data area is.
         */
        if (hdr->magic == cpu_to_be32(XFS_DIR2_DATA_MAGIC) ||
            hdr->magic == cpu_to_be32(XFS_DIR3_DATA_MAGIC))
-               endptr = (char *)hdr + geo->blksize;
+               endptr = (char *)hdr + args->geo->blksize;
        else {
                xfs_dir2_block_tail_t   *btp;   /* block tail */
 
                ASSERT(hdr->magic == cpu_to_be32(XFS_DIR2_BLOCK_MAGIC) ||
                        hdr->magic == cpu_to_be32(XFS_DIR3_BLOCK_MAGIC));
-               btp = xfs_dir2_block_tail_p(geo, hdr);
+               btp = xfs_dir2_block_tail_p(args->geo, hdr);
                endptr = (char *)xfs_dir2_block_leaf_p(btp);
        }
        /*
         * If this isn't the start of the block, then back up to
         * the previous entry and see if it's free.
         */
-       if (offset > dp->d_ops->data_entry_offset) {
+       if (offset > args->dp->d_ops->data_entry_offset) {
                __be16                  *tagp;  /* tag just before us */
 
                tagp = (__be16 *)((char *)hdr + offset) - 1;
@@ -783,7 +777,7 @@ xfs_dir2_data_make_free(
         * Previous and following entries are both free,
         * merge everything into a single free entry.
         */
-       bf = dp->d_ops->data_bestfree_p(hdr);
+       bf = args->dp->d_ops->data_bestfree_p(hdr);
        if (prevdup && postdup) {
                xfs_dir2_data_free_t    *dfp2;  /* another bestfree pointer */
 
@@ -805,7 +799,7 @@ xfs_dir2_data_make_free(
                be16_add_cpu(&prevdup->length, len + be16_to_cpu(postdup->length));
                *xfs_dir2_data_unused_tag_p(prevdup) =
                        cpu_to_be16((char *)prevdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, prevdup);
+               xfs_dir2_data_log_unused(args, bp, prevdup);
                if (!needscan) {
                        /*
                         * Has to be the case that entries 0 and 1 are
@@ -840,7 +834,7 @@ xfs_dir2_data_make_free(
                be16_add_cpu(&prevdup->length, len);
                *xfs_dir2_data_unused_tag_p(prevdup) =
                        cpu_to_be16((char *)prevdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, prevdup);
+               xfs_dir2_data_log_unused(args, bp, prevdup);
                /*
                 * If the previous entry was in the table, the new entry
                 * is longer, so it will be in the table too.  Remove
@@ -868,7 +862,7 @@ xfs_dir2_data_make_free(
                newdup->length = cpu_to_be16(len + be16_to_cpu(postdup->length));
                *xfs_dir2_data_unused_tag_p(newdup) =
                        cpu_to_be16((char *)newdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup);
+               xfs_dir2_data_log_unused(args, bp, newdup);
                /*
                 * If the following entry was in the table, the new entry
                 * is longer, so it will be in the table too.  Remove
@@ -895,7 +889,7 @@ xfs_dir2_data_make_free(
                newdup->length = cpu_to_be16(len);
                *xfs_dir2_data_unused_tag_p(newdup) =
                        cpu_to_be16((char *)newdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup);
+               xfs_dir2_data_log_unused(args, bp, newdup);
                xfs_dir2_data_freeinsert(hdr, bf, newdup, needlogp);
        }
        *needscanp = needscan;
@@ -906,8 +900,7 @@ xfs_dir2_data_make_free(
  */
 void
 xfs_dir2_data_use_free(
-       struct xfs_trans        *tp,
-       struct xfs_inode        *dp,
+       struct xfs_da_args      *args,
        struct xfs_buf          *bp,
        xfs_dir2_data_unused_t  *dup,           /* unused entry */
        xfs_dir2_data_aoff_t    offset,         /* starting offset to use */
@@ -938,7 +931,7 @@ xfs_dir2_data_use_free(
         * Look up the entry in the bestfree table.
         */
        oldlen = be16_to_cpu(dup->length);
-       bf = dp->d_ops->data_bestfree_p(hdr);
+       bf = args->dp->d_ops->data_bestfree_p(hdr);
        dfp = xfs_dir2_data_freefind(hdr, bf, dup);
        ASSERT(dfp || oldlen <= be16_to_cpu(bf[2].length));
        /*
@@ -970,7 +963,7 @@ xfs_dir2_data_use_free(
                newdup->length = cpu_to_be16(oldlen - len);
                *xfs_dir2_data_unused_tag_p(newdup) =
                        cpu_to_be16((char *)newdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup);
+               xfs_dir2_data_log_unused(args, bp, newdup);
                /*
                 * If it was in the table, remove it and add the new one.
                 */
@@ -998,7 +991,7 @@ xfs_dir2_data_use_free(
                newdup->length = cpu_to_be16(((char *)hdr + offset) - (char *)newdup);
                *xfs_dir2_data_unused_tag_p(newdup) =
                        cpu_to_be16((char *)newdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup);
+               xfs_dir2_data_log_unused(args, bp, newdup);
                /*
                 * If it was in the table, remove it and add the new one.
                 */
@@ -1026,13 +1019,13 @@ xfs_dir2_data_use_free(
                newdup->length = cpu_to_be16(((char *)hdr + offset) - (char *)newdup);
                *xfs_dir2_data_unused_tag_p(newdup) =
                        cpu_to_be16((char *)newdup - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup);
+               xfs_dir2_data_log_unused(args, bp, newdup);
                newdup2 = (xfs_dir2_data_unused_t *)((char *)hdr + offset + len);
                newdup2->freetag = cpu_to_be16(XFS_DIR2_DATA_FREE_TAG);
                newdup2->length = cpu_to_be16(oldlen - len - be16_to_cpu(newdup->length));
                *xfs_dir2_data_unused_tag_p(newdup2) =
                        cpu_to_be16((char *)newdup2 - (char *)hdr);
-               xfs_dir2_data_log_unused(tp, bp, newdup2);
+               xfs_dir2_data_log_unused(args, bp, newdup2);
                /*
                 * If the old entry was in the table, we need to scan
                 * if the 3rd entry was valid, since these entries