[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>
This commit is contained in:
		
							parent
							
								
									e055f13a6d
								
							
						
					
					
						commit
						15ac08a8b2
					
				| @ -1085,7 +1085,7 @@ xfs_bawrite( | ||||
| 	bp->b_flags &= ~(XBF_READ | XBF_DELWRI | XBF_READ_AHEAD); | ||||
| 	bp->b_flags |= (XBF_WRITE | XBF_ASYNC | _XBF_RUN_QUEUES); | ||||
| 
 | ||||
| 	bp->b_fspriv3 = mp; | ||||
| 	bp->b_mount = mp; | ||||
| 	bp->b_strat = xfs_bdstrat_cb; | ||||
| 	return xfs_bdstrat_cb(bp); | ||||
| } | ||||
| @ -1098,7 +1098,7 @@ xfs_bdwrite( | ||||
| 	XB_TRACE(bp, "bdwrite", 0); | ||||
| 
 | ||||
| 	bp->b_strat = xfs_bdstrat_cb; | ||||
| 	bp->b_fspriv3 = mp; | ||||
| 	bp->b_mount = mp; | ||||
| 
 | ||||
| 	bp->b_flags &= ~XBF_READ; | ||||
| 	bp->b_flags |= (XBF_DELWRI | XBF_ASYNC); | ||||
|  | ||||
| @ -168,7 +168,7 @@ typedef struct xfs_buf { | ||||
| 	struct completion	b_iowait;	/* queue for I/O waiters */ | ||||
| 	void			*b_fspriv; | ||||
| 	void			*b_fspriv2; | ||||
| 	void			*b_fspriv3; | ||||
| 	struct xfs_mount	*b_mount; | ||||
| 	unsigned short		b_error;	/* error code on I/O */ | ||||
| 	unsigned int		b_page_count;	/* size of page array */ | ||||
| 	unsigned int		b_offset;	/* page offset in first page */ | ||||
| @ -335,8 +335,6 @@ extern void xfs_buf_trace(xfs_buf_t *, char *, void *, void *); | ||||
| #define XFS_BUF_SET_FSPRIVATE(bp, val)		((bp)->b_fspriv = (void*)(val)) | ||||
| #define XFS_BUF_FSPRIVATE2(bp, type)		((type)(bp)->b_fspriv2) | ||||
| #define XFS_BUF_SET_FSPRIVATE2(bp, val)		((bp)->b_fspriv2 = (void*)(val)) | ||||
| #define XFS_BUF_FSPRIVATE3(bp, type)		((type)(bp)->b_fspriv3) | ||||
| #define XFS_BUF_SET_FSPRIVATE3(bp, val)		((bp)->b_fspriv3 = (void*)(val)) | ||||
| #define XFS_BUF_SET_START(bp)			do { } while (0) | ||||
| #define XFS_BUF_SET_BRELSE_FUNC(bp, func)	((bp)->b_relse = (func)) | ||||
| 
 | ||||
|  | ||||
| @ -847,13 +847,7 @@ retry: | ||||
| int | ||||
| xfs_bdstrat_cb(struct xfs_buf *bp) | ||||
| { | ||||
| 	xfs_mount_t	*mp; | ||||
| 
 | ||||
| 	mp = XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *); | ||||
| 	if (!XFS_FORCED_SHUTDOWN(mp)) { | ||||
| 		xfs_buf_iorequest(bp); | ||||
| 		return 0; | ||||
| 	} else { | ||||
| 	if (XFS_FORCED_SHUTDOWN(bp->b_mount)) { | ||||
| 		xfs_buftrace("XFS__BDSTRAT IOERROR", bp); | ||||
| 		/*
 | ||||
| 		 * Metadata write that didn't get logged but | ||||
| @ -866,6 +860,9 @@ xfs_bdstrat_cb(struct xfs_buf *bp) | ||||
| 		else | ||||
| 			return (xfs_bioerror(bp)); | ||||
| 	} | ||||
| 
 | ||||
| 	xfs_buf_iorequest(bp); | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
| @ -707,8 +707,8 @@ xfs_buf_item_init( | ||||
| 	 * the first.  If we do already have one, there is | ||||
| 	 * nothing to do here so return. | ||||
| 	 */ | ||||
| 	if (XFS_BUF_FSPRIVATE3(bp, xfs_mount_t *) != mp) | ||||
| 		XFS_BUF_SET_FSPRIVATE3(bp, mp); | ||||
| 	if (bp->b_mount != mp) | ||||
| 		bp->b_mount = mp; | ||||
| 	XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); | ||||
| 	if (XFS_BUF_FSPRIVATE(bp, void *) != NULL) { | ||||
| 		lip = XFS_BUF_FSPRIVATE(bp, xfs_log_item_t *); | ||||
|  | ||||
| @ -267,21 +267,16 @@ STATIC void | ||||
| xlog_recover_iodone( | ||||
| 	struct xfs_buf	*bp) | ||||
| { | ||||
| 	xfs_mount_t	*mp; | ||||
| 
 | ||||
| 	ASSERT(XFS_BUF_FSPRIVATE(bp, void *)); | ||||
| 
 | ||||
| 	if (XFS_BUF_GETERROR(bp)) { | ||||
| 		/*
 | ||||
| 		 * We're not going to bother about retrying | ||||
| 		 * this during recovery. One strike! | ||||
| 		 */ | ||||
| 		mp = XFS_BUF_FSPRIVATE(bp, xfs_mount_t *); | ||||
| 		xfs_ioerror_alert("xlog_recover_iodone", | ||||
| 				  mp, bp, XFS_BUF_ADDR(bp)); | ||||
| 		xfs_force_shutdown(mp, SHUTDOWN_META_IO_ERROR); | ||||
| 				  bp->b_mount, bp, XFS_BUF_ADDR(bp)); | ||||
| 		xfs_force_shutdown(bp->b_mount, SHUTDOWN_META_IO_ERROR); | ||||
| 	} | ||||
| 	XFS_BUF_SET_FSPRIVATE(bp, NULL); | ||||
| 	bp->b_mount = NULL; | ||||
| 	XFS_BUF_CLR_IODONE_FUNC(bp); | ||||
| 	xfs_biodone(bp); | ||||
| } | ||||
| @ -2225,9 +2220,8 @@ xlog_recover_do_buffer_trans( | ||||
| 		XFS_BUF_STALE(bp); | ||||
| 		error = xfs_bwrite(mp, bp); | ||||
| 	} else { | ||||
| 		ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || | ||||
| 		       XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); | ||||
| 		XFS_BUF_SET_FSPRIVATE(bp, mp); | ||||
| 		ASSERT(bp->b_mount == NULL || bp->b_mount == mp); | ||||
| 		bp->b_mount = mp; | ||||
| 		XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); | ||||
| 		xfs_bdwrite(mp, bp); | ||||
| 	} | ||||
| @ -2490,9 +2484,8 @@ xlog_recover_do_inode_trans( | ||||
| 
 | ||||
| write_inode_buffer: | ||||
| 	if (ITEM_TYPE(item) == XFS_LI_INODE) { | ||||
| 		ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || | ||||
| 		       XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); | ||||
| 		XFS_BUF_SET_FSPRIVATE(bp, mp); | ||||
| 		ASSERT(bp->b_mount == NULL || bp->b_mount == mp); | ||||
| 		bp->b_mount = mp; | ||||
| 		XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); | ||||
| 		xfs_bdwrite(mp, bp); | ||||
| 	} else { | ||||
| @ -2623,9 +2616,8 @@ xlog_recover_do_dquot_trans( | ||||
| 	memcpy(ddq, recddq, item->ri_buf[1].i_len); | ||||
| 
 | ||||
| 	ASSERT(dq_f->qlf_size == 2); | ||||
| 	ASSERT(XFS_BUF_FSPRIVATE(bp, void *) == NULL || | ||||
| 	       XFS_BUF_FSPRIVATE(bp, xfs_mount_t *) == mp); | ||||
| 	XFS_BUF_SET_FSPRIVATE(bp, mp); | ||||
| 	ASSERT(bp->b_mount == NULL || bp->b_mount == mp); | ||||
| 	bp->b_mount = mp; | ||||
| 	XFS_BUF_SET_IODONE_FUNC(bp, xlog_recover_iodone); | ||||
| 	xfs_bdwrite(mp, bp); | ||||
| 
 | ||||
|  | ||||
| @ -406,7 +406,7 @@ xfs_bwrite( | ||||
| 	 * XXXsup how does this work for quotas. | ||||
| 	 */ | ||||
| 	XFS_BUF_SET_BDSTRAT_FUNC(bp, xfs_bdstrat_cb); | ||||
| 	XFS_BUF_SET_FSPRIVATE3(bp, mp); | ||||
| 	bp->b_mount = mp; | ||||
| 	XFS_BUF_WRITE(bp); | ||||
| 
 | ||||
| 	if ((error = XFS_bwrite(bp))) { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user