Commit 15ac08a8b2c129abccf1be47b6ab09491e013db2
Committed by
Lachlan McIlroy
1 parent
e055f13a6d
Exists in
master
and in
7 other branches
[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 |
fs/xfs/xfs_rw.c