Re-implement XFS_SEND_MMAP() using a real (static inline) function. The mount point passed in to XFS_SEND_MMAP() is always derived from from the vma struct that is the subject of VM operation. Get rid of the mount point argument altogether, and compute what would have been passed within the macro, making the first argument the vma "target" of the event being signalled. Finally, move the checks for whether an event is enabled into the called function. Signed-off-by: Alex Elder <aelder@xxxxxxx> --- fs/xfs/xfs_dmapi.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) Index: b/fs/xfs/xfs_dmapi.h =================================================================== --- a/fs/xfs/xfs_dmapi.h +++ b/fs/xfs/xfs_dmapi.h @@ -227,8 +227,24 @@ xfs_dmapi_send_data( return send_data(event, ip, offset, length, flags, lock_flags); } -#define XFS_SEND_MMAP(mp, vma,fl) \ - (*(mp)->m_dm_ops->xfs_send_mmap)(vma,fl) +static inline int +xfs_dmapi_send_mmap( + struct vm_area_struct *vma, + unsigned long vm_flags) +{ + struct inode *inode = vma->vm_file->f_path.dentry->d_inode; + struct xfs_mount *mp = XFS_M(inode->i_sb); + + if (mp->m_flags & XFS_MOUNT_DMAPI) { + xfs_send_mmap_t send_mmap = mp->m_dm_ops->xfs_send_mmap; + + return send_mmap(vma, vm_flags); + } + ASSERT_ALWAYS(vm_flags == VM_WRITE); + + return 0; +} + #define XFS_SEND_DESTROY(mp, ip,right) \ (*(mp)->m_dm_ops->xfs_send_destroy)(ip,right) #define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs