xfs: remove xfs_buf_target_name
[pandora-kernel.git] / fs / xfs / xfs_buf.c
index f88eab9..6f615c2 100644 (file)
@@ -65,10 +65,6 @@ struct workqueue_struct *xfsconvertd_workqueue;
 #define xb_to_km(flags) \
         (((flags) & XBF_DONT_BLOCK) ? KM_NOFS : KM_SLEEP)
 
-#define xfs_buf_allocate(flags) \
-       kmem_zone_alloc(xfs_buf_zone, xb_to_km(flags))
-#define xfs_buf_deallocate(bp) \
-       kmem_zone_free(xfs_buf_zone, (bp));
 
 static inline int
 xfs_buf_is_vmapped(
@@ -151,6 +147,7 @@ xfs_buf_stale(
        struct xfs_buf  *bp)
 {
        bp->b_flags |= XBF_STALE;
+       xfs_buf_delwri_dequeue(bp);
        atomic_set(&(bp)->b_lru_ref, 0);
        if (!list_empty(&bp->b_lru)) {
                struct xfs_buftarg *btp = bp->b_target;
@@ -166,14 +163,19 @@ xfs_buf_stale(
        ASSERT(atomic_read(&bp->b_hold) >= 1);
 }
 
-STATIC void
-_xfs_buf_initialize(
-       xfs_buf_t               *bp,
-       xfs_buftarg_t           *target,
+struct xfs_buf *
+xfs_buf_alloc(
+       struct xfs_buftarg      *target,
        xfs_off_t               range_base,
        size_t                  range_length,
        xfs_buf_flags_t         flags)
 {
+       struct xfs_buf          *bp;
+
+       bp = kmem_zone_alloc(xfs_buf_zone, xb_to_km(flags));
+       if (unlikely(!bp))
+               return NULL;
+
        /*
         * We don't want certain flags to appear in b_flags.
         */
@@ -202,8 +204,9 @@ _xfs_buf_initialize(
        init_waitqueue_head(&bp->b_waiters);
 
        XFS_STATS_INC(xb_create);
-
        trace_xfs_buf_init(bp, _RET_IP_);
+
+       return bp;
 }
 
 /*
@@ -276,7 +279,7 @@ xfs_buf_free(
        } else if (bp->b_flags & _XBF_KMEM)
                kmem_free(bp->b_addr);
        _xfs_buf_free_pages(bp);
-       xfs_buf_deallocate(bp);
+       kmem_zone_free(xfs_buf_zone, bp);
 }
 
 /*
@@ -538,16 +541,14 @@ xfs_buf_get(
        if (likely(bp))
                goto found;
 
-       new_bp = xfs_buf_allocate(flags);
+       new_bp = xfs_buf_alloc(target, ioff << BBSHIFT, isize << BBSHIFT,
+                              flags);
        if (unlikely(!new_bp))
                return NULL;
 
-       _xfs_buf_initialize(new_bp, target,
-                           ioff << BBSHIFT, isize << BBSHIFT, flags);
-
        bp = _xfs_buf_find(target, ioff, isize, flags, new_bp);
        if (!bp) {
-               xfs_buf_deallocate(new_bp);
+               kmem_zone_free(xfs_buf_zone, new_bp);
                return NULL;
        }
 
@@ -556,7 +557,7 @@ xfs_buf_get(
                if (error)
                        goto no_buffer;
        } else
-               xfs_buf_deallocate(new_bp);
+               kmem_zone_free(xfs_buf_zone, new_bp);
 
        /*
         * Now we have a workable buffer, fill in the block number so
@@ -693,19 +694,6 @@ xfs_buf_read_uncached(
        return bp;
 }
 
-xfs_buf_t *
-xfs_buf_get_empty(
-       size_t                  len,
-       xfs_buftarg_t           *target)
-{
-       xfs_buf_t               *bp;
-
-       bp = xfs_buf_allocate(0);
-       if (bp)
-               _xfs_buf_initialize(bp, target, 0, len, 0);
-       return bp;
-}
-
 /*
  * Return a buffer allocated as an empty buffer and associated to external
  * memory via xfs_buf_associate_memory() back to it's empty state.
@@ -791,10 +779,9 @@ xfs_buf_get_uncached(
        int                     error, i;
        xfs_buf_t               *bp;
 
-       bp = xfs_buf_allocate(0);
+       bp = xfs_buf_alloc(target, 0, len, 0);
        if (unlikely(bp == NULL))
                goto fail;
-       _xfs_buf_initialize(bp, target, 0, len, 0);
 
        error = _xfs_buf_get_pages(bp, page_count, 0);
        if (error)
@@ -822,7 +809,7 @@ xfs_buf_get_uncached(
                __free_page(bp->b_pages[i]);
        _xfs_buf_free_pages(bp);
  fail_free_buf:
-       xfs_buf_deallocate(bp);
+       kmem_zone_free(xfs_buf_zone, bp);
  fail:
        return NULL;
 }
@@ -1017,6 +1004,17 @@ xfs_buf_ioerror(
        trace_xfs_buf_ioerror(bp, error, _RET_IP_);
 }
 
+void
+xfs_buf_ioerror_alert(
+       struct xfs_buf          *bp,
+       const char              *func)
+{
+       xfs_alert(bp->b_target->bt_mount,
+"metadata I/O error: block 0x%llx (\"%s\") error %d buf count %zd",
+               (__uint64_t)XFS_BUF_ADDR(bp), func,
+               bp->b_error, XFS_BUF_COUNT(bp));
+}
+
 int
 xfs_bwrite(
        struct xfs_buf          *bp)
@@ -1059,7 +1057,6 @@ xfs_bioerror(
         * We're calling xfs_buf_ioend, so delete XBF_DONE flag.
         */
        XFS_BUF_UNREAD(bp);
-       xfs_buf_delwri_dequeue(bp);
        XFS_BUF_UNDONE(bp);
        xfs_buf_stale(bp);
 
@@ -1088,7 +1085,6 @@ xfs_bioerror_relse(
         * change that interface.
         */
        XFS_BUF_UNREAD(bp);
-       xfs_buf_delwri_dequeue(bp);
        XFS_BUF_DONE(bp);
        xfs_buf_stale(bp);
        bp->b_iodone = NULL;
@@ -1461,9 +1457,13 @@ xfs_setsize_buftarg_flags(
        btp->bt_smask = sectorsize - 1;
 
        if (set_blocksize(btp->bt_bdev, sectorsize)) {
+               char name[BDEVNAME_SIZE];
+
+               bdevname(btp->bt_bdev, name);
+
                xfs_warn(btp->bt_mount,
                        "Cannot set_blocksize to %u on device %s\n",
-                       sectorsize, xfs_buf_target_name(btp));
+                       sectorsize, name);
                return EINVAL;
        }