diff options
Diffstat (limited to 'fs/xfs/xfs_buf.h')
| -rw-r--r-- | fs/xfs/xfs_buf.h | 24 | 
1 files changed, 14 insertions, 10 deletions
diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 51bc16a1cd9..23f5642480b 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -111,6 +111,11 @@ struct xfs_buf_map {  #define DEFINE_SINGLE_BUF_MAP(map, blkno, numblk) \  	struct xfs_buf_map (map) = { .bm_bn = (blkno), .bm_len = (numblk) }; +struct xfs_buf_ops { +	void (*verify_read)(struct xfs_buf *); +	void (*verify_write)(struct xfs_buf *); +}; +  typedef struct xfs_buf {  	/*  	 * first cacheline holds all the fields needed for an uncontended cache @@ -154,9 +159,7 @@ typedef struct xfs_buf {  	unsigned int		b_page_count;	/* size of page array */  	unsigned int		b_offset;	/* page offset in first page */  	unsigned short		b_error;	/* error code on I/O */ - -	void			(*b_pre_io)(struct xfs_buf *); -						/* pre-io callback function */ +	const struct xfs_buf_ops	*b_ops;  #ifdef XFS_BUF_LOCK_TRACKING  	int			b_last_holder; @@ -199,10 +202,11 @@ struct xfs_buf *xfs_buf_get_map(struct xfs_buftarg *target,  			       xfs_buf_flags_t flags);  struct xfs_buf *xfs_buf_read_map(struct xfs_buftarg *target,  			       struct xfs_buf_map *map, int nmaps, -			       xfs_buf_flags_t flags, xfs_buf_iodone_t verify); +			       xfs_buf_flags_t flags, +			       const struct xfs_buf_ops *ops);  void xfs_buf_readahead_map(struct xfs_buftarg *target,  			       struct xfs_buf_map *map, int nmaps, -			       xfs_buf_iodone_t verify); +			       const struct xfs_buf_ops *ops);  static inline struct xfs_buf *  xfs_buf_get( @@ -221,10 +225,10 @@ xfs_buf_read(  	xfs_daddr_t		blkno,  	size_t			numblks,  	xfs_buf_flags_t		flags, -	xfs_buf_iodone_t	verify) +	const struct xfs_buf_ops *ops)  {  	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks); -	return xfs_buf_read_map(target, &map, 1, flags, verify); +	return xfs_buf_read_map(target, &map, 1, flags, ops);  }  static inline void @@ -232,10 +236,10 @@ xfs_buf_readahead(  	struct xfs_buftarg	*target,  	xfs_daddr_t		blkno,  	size_t			numblks, -	xfs_buf_iodone_t	verify) +	const struct xfs_buf_ops *ops)  {  	DEFINE_SINGLE_BUF_MAP(map, blkno, numblks); -	return xfs_buf_readahead_map(target, &map, 1, verify); +	return xfs_buf_readahead_map(target, &map, 1, ops);  }  struct xfs_buf *xfs_buf_get_empty(struct xfs_buftarg *target, size_t numblks); @@ -246,7 +250,7 @@ struct xfs_buf *xfs_buf_get_uncached(struct xfs_buftarg *target, size_t numblks,  				int flags);  struct xfs_buf *xfs_buf_read_uncached(struct xfs_buftarg *target,  				xfs_daddr_t daddr, size_t numblks, int flags, -				xfs_buf_iodone_t verify); +				const struct xfs_buf_ops *ops);  void xfs_buf_hold(struct xfs_buf *bp);  /* Releasing Buffers */  |