diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_inode_fork.h')
| -rw-r--r-- | fs/xfs/libxfs/xfs_inode_fork.h | 28 | 
1 files changed, 22 insertions, 6 deletions
diff --git a/fs/xfs/libxfs/xfs_inode_fork.h b/fs/xfs/libxfs/xfs_inode_fork.h index f95e072ae646..c9476f50e32d 100644 --- a/fs/xfs/libxfs/xfs_inode_fork.h +++ b/fs/xfs/libxfs/xfs_inode_fork.h @@ -92,7 +92,9 @@ typedef struct xfs_ifork {  #define XFS_IFORK_PTR(ip,w)		\  	((w) == XFS_DATA_FORK ? \  		&(ip)->i_df : \ -		(ip)->i_afp) +		((w) == XFS_ATTR_FORK ? \ +			(ip)->i_afp : \ +			(ip)->i_cowfp))  #define XFS_IFORK_DSIZE(ip) \  	(XFS_IFORK_Q(ip) ? \  		XFS_IFORK_BOFF(ip) : \ @@ -105,26 +107,38 @@ typedef struct xfs_ifork {  #define XFS_IFORK_SIZE(ip,w) \  	((w) == XFS_DATA_FORK ? \  		XFS_IFORK_DSIZE(ip) : \ -		XFS_IFORK_ASIZE(ip)) +		((w) == XFS_ATTR_FORK ? \ +			XFS_IFORK_ASIZE(ip) : \ +			0))  #define XFS_IFORK_FORMAT(ip,w) \  	((w) == XFS_DATA_FORK ? \  		(ip)->i_d.di_format : \ -		(ip)->i_d.di_aformat) +		((w) == XFS_ATTR_FORK ? \ +			(ip)->i_d.di_aformat : \ +			(ip)->i_cformat))  #define XFS_IFORK_FMT_SET(ip,w,n) \  	((w) == XFS_DATA_FORK ? \  		((ip)->i_d.di_format = (n)) : \ -		((ip)->i_d.di_aformat = (n))) +		((w) == XFS_ATTR_FORK ? \ +			((ip)->i_d.di_aformat = (n)) : \ +			((ip)->i_cformat = (n))))  #define XFS_IFORK_NEXTENTS(ip,w) \  	((w) == XFS_DATA_FORK ? \  		(ip)->i_d.di_nextents : \ -		(ip)->i_d.di_anextents) +		((w) == XFS_ATTR_FORK ? \ +			(ip)->i_d.di_anextents : \ +			(ip)->i_cnextents))  #define XFS_IFORK_NEXT_SET(ip,w,n) \  	((w) == XFS_DATA_FORK ? \  		((ip)->i_d.di_nextents = (n)) : \ -		((ip)->i_d.di_anextents = (n))) +		((w) == XFS_ATTR_FORK ? \ +			((ip)->i_d.di_anextents = (n)) : \ +			((ip)->i_cnextents = (n))))  #define XFS_IFORK_MAXEXT(ip, w) \  	(XFS_IFORK_SIZE(ip, w) / sizeof(xfs_bmbt_rec_t)) +struct xfs_ifork *xfs_iext_state_to_fork(struct xfs_inode *ip, int state); +  int		xfs_iformat_fork(struct xfs_inode *, struct xfs_dinode *);  void		xfs_iflush_fork(struct xfs_inode *, struct xfs_dinode *,  				struct xfs_inode_log_item *, int); @@ -169,4 +183,6 @@ void		xfs_iext_irec_update_extoffs(struct xfs_ifork *, int, int);  extern struct kmem_zone	*xfs_ifork_zone; +extern void xfs_ifork_init_cow(struct xfs_inode *ip); +  #endif	/* __XFS_INODE_FORK_H__ */  |