Commit 15ac08a8b2c129abccf1be47b6ab09491e013db2

Authored by Christoph Hellwig
Committed by Lachlan McIlroy
1 parent e055f13a6d

[XFS] replace b_fspriv with b_mount

Replace the b_fspriv pointer and it's ugly accessors with a properly types
xfs_mount pointer.  Also switch log reocvery over to it instead of using
b_fspriv for the mount pointer.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>

Showing 6 changed files with 19 additions and 32 deletions Side-by-side Diff

fs/xfs/linux-2.6/xfs_buf.c
... ... @@ -1085,7 +1085,7 @@
1085 1085 bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD);
1086 1086 bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES);
1087 1087  
1088   - bp->b_fspriv3 = mp;
  1088 + bp->b_mount = mp;
1089 1089 bp->b_strat = xfs_bdstrat_cb;
1090 1090 return xfs_bdstrat_cb(bp);
1091 1091 }
... ... @@ -1098,7 +1098,7 @@
1098 1098 XB_TRACE(bp, "bdwrite", 0);
1099 1099  
1100 1100 bp->b_strat = xfs_bdstrat_cb;
1101   - bp->b_fspriv3 = mp;
  1101 + bp->b_mount = mp;
1102 1102  
1103 1103 bp->b_flags &= ~XBF_READ;
1104 1104 bp->b_flags |= (XBF_DELWRI | XBF_ASYNC);
fs/xfs/linux-2.6/xfs_buf.h
... ... @@ -168,7 +168,7 @@
168 168 struct completion b_iowait; /* queue for I/O waiters */
169 169 void *b_fspriv;
170 170 void *b_fspriv2;
171   - void *b_fspriv3;
  171 + struct xfs_mount *b_mount;
172 172 unsigned short b_error; /* error code on I/O */
173 173 unsigned int b_page_count; /* size of page array */
174 174 unsigned int b_offset; /* page offset in first page */
... ... @@ -335,8 +335,6 @@
335 335 #define XFS_BUF_SET_FSPRIVATE(bp, val) ((bp)->b_fspriv = (void*)(val))
336 336 #define XFS_BUF_FSPRIVATE2(bp, type) ((type)(bp)->b_fspriv2)
337 337 #define XFS_BUF_SET_FSPRIVATE2(bp, val) ((bp)->b_fspriv2 = (void*)(val))
338   -#define XFS_BUF_FSPRIVATE3(bp, type) ((type)(bp)->b_fspriv3)
339   -#define XFS_BUF_SET_FSPRIVATE3(bp, val) ((bp)->b_fspriv3 = (void*)(val))
340 338 #define XFS_BUF_SET_START(bp) do { } while (0)
341 339 #define XFS_BUF_SET_BRELSE_FUNC(bp, func) ((bp)->b_relse = (func))
342 340  
fs/xfs/linux-2.6/xfs_lrw.c
... ... @@ -847,13 +847,7 @@
847 847 int
848 848 xfs_bdstrat_cb(struct xfs_buf *bp)
849 849 {
850   - xfs_mount_t *mp;
851   -
852   - mp = XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *);
853   - if (!XFS_FORCED_SHUTDOWN(mp)) {
854   - xfs_buf_iorequest(bp);
855   - return 0;
856   - } else {
  850 + if (XFS_FORCED_SHUTDOWN(bp->b_mount)) {
857 851 xfs_buftrace("XFS__BDSTRAT IOERROR", bp);
858 852 /*
859 853 * Metadata write that didn't get logged but
... ... @@ -866,6 +860,9 @@
866 860 else
867 861 return (xfs_bioerror(bp));
868 862 }
  863 +
  864 + xfs_buf_iorequest(bp);
  865 + return 0;
869 866 }
870 867  
871 868 /*
fs/xfs/xfs_buf_item.c
... ... @@ -707,8 +707,8 @@
707 707 * the first. If we do already have one, there is
708 708 * nothing to do here so return.
709 709 */
710   - if (XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *) != mp)
711   - XFS_BUF_SET_FSPRIVATE3(bp, mp);
  710 + if (bp->b_mount != mp)
  711 + bp->b_mount = mp;
712 712 XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb);
713 713 if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) {
714 714 lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *);
fs/xfs/xfs_log_recover.c
... ... @@ -267,21 +267,16 @@
267 267 xlog_recover_iodone(
268 268 struct xfs_buf *bp)
269 269 {
270   - xfs_mount_t *mp;
271   -
272   - ASSERT(XFS_BUF_FSPRIVATE(bp, void *));
273   -
274 270 if (XFS_BUF_GETERROR(bp)) {
275 271 /*
276 272 * We're not going to bother about retrying
277 273 * this during recovery. One strike!
278 274 */
279   - mp = XFS_BUF_FSPRIVATE(bp, xfs_mount_t *);
280 275 xfs_ioerror_alert("xlog_recover_iodone",
281   - mp, bp, XFS_BUF_ADDR(bp));
282   - xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR);
  276 + bp->b_mount, bp, XFS_BUF_ADDR(bp));
  277 + xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR);
283 278 }
284   - XFS_BUF_SET_FSPRIVATE(bp, NULL);
  279 + bp->b_mount = NULL;
285 280 XFS_BUF_CLR_IODONE_FUNC(bp);
286 281 xfs_biodone(bp);
287 282 }
... ... @@ -2225,9 +2220,8 @@
2225 2220 XFS_BUF_STALE(bp);
2226 2221 error = xfs_bwrite(mp, bp);
2227 2222 } else {
2228   - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL ||
2229   - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp);
2230   - XFS_BUF_SET_FSPRIVATE(bp, mp);
  2223 + ASSERT(bp->b_mount == NULL || bp->b_mount == mp);
  2224 + bp->b_mount = mp;
2231 2225 XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone);
2232 2226 xfs_bdwrite(mp, bp);
2233 2227 }
... ... @@ -2490,9 +2484,8 @@
2490 2484  
2491 2485 write_inode_buffer:
2492 2486 if (ITEM_TYPE(item) == XFS_LI_INODE) {
2493   - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL ||
2494   - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp);
2495   - XFS_BUF_SET_FSPRIVATE(bp, mp);
  2487 + ASSERT(bp->b_mount == NULL || bp->b_mount == mp);
  2488 + bp->b_mount = mp;
2496 2489 XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone);
2497 2490 xfs_bdwrite(mp, bp);
2498 2491 } else {
... ... @@ -2623,9 +2616,8 @@
2623 2616 memcpy(ddq, recddq, item->ri_buf[1].i_len);
2624 2617  
2625 2618 ASSERT(dq_f->qlf_size == 2);
2626   - ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL ||
2627   - XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp);
2628   - XFS_BUF_SET_FSPRIVATE(bp, mp);
  2619 + ASSERT(bp->b_mount == NULL || bp->b_mount == mp);
  2620 + bp->b_mount = mp;
2629 2621 XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone);
2630 2622 xfs_bdwrite(mp, bp);
2631 2623  
... ... @@ -406,7 +406,7 @@
406 406 * XXXsup how does this work for quotas.
407 407 */
408 408 XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb);
409   - XFS_BUF_SET_FSPRIVATE3(bp, mp);
  409 + bp->b_mount = mp;
410 410 XFS_BUF_WRITE(bp);
411 411  
412 412 if ((error = XFS_bwrite(bp))) {