[PATCH 07/15] xfs: rewrite XFS_SEND_MMAP() as a function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux