Commit 30ac0683dd452ba273c8db92a74d8cf7aef981d8

Authored by Christoph Hellwig
Committed by Alex Elder
1 parent 0c3dc2b02a

xfs: cleanup dmapi macros in the umount path

Stop the flag saving as we never mangle those in the unmount path, and
hide all the weird arguents to the dmapi code inside the
XFS_SEND_PREUNMOUNT / XFS_SEND_UNMOUNT macros.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Alex Elder <aelder@sgi.com>

Showing 2 changed files with 21 additions and 24 deletions Side-by-side Diff

fs/xfs/linux-2.6/xfs_super.c
... ... @@ -1131,8 +1131,6 @@
1131 1131 struct super_block *sb)
1132 1132 {
1133 1133 struct xfs_mount *mp = XFS_M(sb);
1134   - struct xfs_inode *rip = mp->m_rootip;
1135   - int unmount_event_flags = 0;
1136 1134  
1137 1135 xfs_syncd_stop(mp);
1138 1136  
... ... @@ -1148,20 +1146,7 @@
1148 1146 xfs_sync_attr(mp, 0);
1149 1147 }
1150 1148  
1151   -#ifdef HAVE_DMAPI
1152   - if (mp->m_flags & XFS_MOUNT_DMAPI) {
1153   - unmount_event_flags =
1154   - (mp->m_dmevmask & (1 << DM_EVENT_UNMOUNT)) ?
1155   - 0 : DM_FLAGS_UNWANTED;
1156   - /*
1157   - * Ignore error from dmapi here, first unmount is not allowed
1158   - * to fail anyway, and second we wouldn't want to fail a
1159   - * unmount because of dmapi.
1160   - */
1161   - XFS_SEND_PREUNMOUNT(mp, rip, DM_RIGHT_NULL, rip, DM_RIGHT_NULL,
1162   - NULL, NULL, 0, 0, unmount_event_flags);
1163   - }
1164   -#endif
  1149 + XFS_SEND_PREUNMOUNT(mp);
1165 1150  
1166 1151 /*
1167 1152 * Blow away any referenced inode in the filestreams cache.
... ... @@ -1172,10 +1157,7 @@
1172 1157  
1173 1158 XFS_bflush(mp->m_ddev_targp);
1174 1159  
1175   - if (mp->m_flags & XFS_MOUNT_DMAPI) {
1176   - XFS_SEND_UNMOUNT(mp, rip, DM_RIGHT_NULL, 0, 0,
1177   - unmount_event_flags);
1178   - }
  1160 + XFS_SEND_UNMOUNT(mp);
1179 1161  
1180 1162 xfs_unmountfs(mp);
1181 1163 xfs_freesb(mp);
... ... @@ -93,6 +93,9 @@
93 93 xfs_send_unmount_t xfs_send_unmount;
94 94 } xfs_dmops_t;
95 95  
  96 +#define XFS_DMAPI_UNMOUNT_FLAGS(mp) \
  97 + (((mp)->m_dmevmask & (1 << DM_EVENT_UNMOUNT)) ? 0 : DM_FLAGS_UNWANTED)
  98 +
96 99 #define XFS_SEND_DATA(mp, ev,ip,off,len,fl,lock) \
97 100 (*(mp)->m_dm_ops->xfs_send_data)(ev,ip,off,len,fl,lock)
98 101 #define XFS_SEND_MMAP(mp, vma,fl) \
99 102  
... ... @@ -101,12 +104,24 @@
101 104 (*(mp)->m_dm_ops->xfs_send_destroy)(ip,right)
102 105 #define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \
103 106 (*(mp)->m_dm_ops->xfs_send_namesp)(ev,NULL,b1,r1,b2,r2,n1,n2,mode,rval,fl)
104   -#define XFS_SEND_PREUNMOUNT(mp,b1,r1,b2,r2,n1,n2,mode,rval,fl) \
105   - (*(mp)->m_dm_ops->xfs_send_namesp)(DM_EVENT_PREUNMOUNT,mp,b1,r1,b2,r2,n1,n2,mode,rval,fl)
106 107 #define XFS_SEND_MOUNT(mp,right,path,name) \
107 108 (*(mp)->m_dm_ops->xfs_send_mount)(mp,right,path,name)
108   -#define XFS_SEND_UNMOUNT(mp, ip,right,mode,rval,fl) \
109   - (*(mp)->m_dm_ops->xfs_send_unmount)(mp,ip,right,mode,rval,fl)
  109 +#define XFS_SEND_PREUNMOUNT(mp) \
  110 +do { \
  111 + if (mp->m_flags & XFS_MOUNT_DMAPI) { \
  112 + (*(mp)->m_dm_ops->xfs_send_namesp)(DM_EVENT_PREUNMOUNT, mp, \
  113 + (mp)->m_rootip, DM_RIGHT_NULL, \
  114 + (mp)->m_rootip, DM_RIGHT_NULL, \
  115 + NULL, NULL, 0, 0, XFS_DMAPI_UNMOUNT_FLAGS(mp)); \
  116 + } \
  117 +} while (0)
  118 +#define XFS_SEND_UNMOUNT(mp) \
  119 +do { \
  120 + if (mp->m_flags & XFS_MOUNT_DMAPI) { \
  121 + (*(mp)->m_dm_ops->xfs_send_unmount)(mp, (mp)->m_rootip, \
  122 + DM_RIGHT_NULL, 0, 0, XFS_DMAPI_UNMOUNT_FLAGS(mp)); \
  123 + } \
  124 +} while (0)
110 125  
111 126  
112 127 #ifdef HAVE_PERCPU_SB