@@ -131,6 +131,26 @@ xfs_ilock_attr_map_shared(
131131 return lock_mode ;
132132}
133133
134+ /*
135+ * You can't set both SHARED and EXCL for the same lock,
136+ * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_MMAPLOCK_SHARED,
137+ * XFS_MMAPLOCK_EXCL, XFS_ILOCK_SHARED, XFS_ILOCK_EXCL are valid values
138+ * to set in lock_flags.
139+ */
140+ static inline void
141+ xfs_lock_flags_assert (
142+ uint lock_flags )
143+ {
144+ ASSERT ((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL )) !=
145+ (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL ));
146+ ASSERT ((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL )) !=
147+ (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL ));
148+ ASSERT ((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL )) !=
149+ (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL ));
150+ ASSERT ((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK )) == 0 );
151+ ASSERT (lock_flags != 0 );
152+ }
153+
134154/*
135155 * In addition to i_rwsem in the VFS inode, the xfs inode contains 2
136156 * multi-reader locks: invalidate_lock and the i_lock. This routine allows
@@ -168,18 +188,7 @@ xfs_ilock(
168188{
169189 trace_xfs_ilock (ip , lock_flags , _RET_IP_ );
170190
171- /*
172- * You can't set both SHARED and EXCL for the same lock,
173- * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
174- * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
175- */
176- ASSERT ((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL )) !=
177- (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL ));
178- ASSERT ((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL )) !=
179- (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL ));
180- ASSERT ((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL )) !=
181- (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL ));
182- ASSERT ((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK )) == 0 );
191+ xfs_lock_flags_assert (lock_flags );
183192
184193 if (lock_flags & XFS_IOLOCK_EXCL ) {
185194 down_write_nested (& VFS_I (ip )-> i_rwsem ,
@@ -222,18 +231,7 @@ xfs_ilock_nowait(
222231{
223232 trace_xfs_ilock_nowait (ip , lock_flags , _RET_IP_ );
224233
225- /*
226- * You can't set both SHARED and EXCL for the same lock,
227- * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
228- * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
229- */
230- ASSERT ((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL )) !=
231- (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL ));
232- ASSERT ((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL )) !=
233- (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL ));
234- ASSERT ((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL )) !=
235- (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL ));
236- ASSERT ((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK )) == 0 );
234+ xfs_lock_flags_assert (lock_flags );
237235
238236 if (lock_flags & XFS_IOLOCK_EXCL ) {
239237 if (!down_write_trylock (& VFS_I (ip )-> i_rwsem ))
@@ -291,19 +289,7 @@ xfs_iunlock(
291289 xfs_inode_t * ip ,
292290 uint lock_flags )
293291{
294- /*
295- * You can't set both SHARED and EXCL for the same lock,
296- * and only XFS_IOLOCK_SHARED, XFS_IOLOCK_EXCL, XFS_ILOCK_SHARED,
297- * and XFS_ILOCK_EXCL are valid values to set in lock_flags.
298- */
299- ASSERT ((lock_flags & (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL )) !=
300- (XFS_IOLOCK_SHARED | XFS_IOLOCK_EXCL ));
301- ASSERT ((lock_flags & (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL )) !=
302- (XFS_MMAPLOCK_SHARED | XFS_MMAPLOCK_EXCL ));
303- ASSERT ((lock_flags & (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL )) !=
304- (XFS_ILOCK_SHARED | XFS_ILOCK_EXCL ));
305- ASSERT ((lock_flags & ~(XFS_LOCK_MASK | XFS_LOCK_SUBCLASS_MASK )) == 0 );
306- ASSERT (lock_flags != 0 );
292+ xfs_lock_flags_assert (lock_flags );
307293
308294 if (lock_flags & XFS_IOLOCK_EXCL )
309295 up_write (& VFS_I (ip )-> i_rwsem );
0 commit comments