@@ -131,6 +131,26 @@ xfs_ilock_attr_map_shared(
131
131
return lock_mode ;
132
132
}
133
133
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
+
134
154
/*
135
155
* In addition to i_rwsem in the VFS inode, the xfs inode contains 2
136
156
* multi-reader locks: invalidate_lock and the i_lock. This routine allows
@@ -168,18 +188,7 @@ xfs_ilock(
168
188
{
169
189
trace_xfs_ilock (ip , lock_flags , _RET_IP_ );
170
190
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 );
183
192
184
193
if (lock_flags & XFS_IOLOCK_EXCL ) {
185
194
down_write_nested (& VFS_I (ip )-> i_rwsem ,
@@ -222,18 +231,7 @@ xfs_ilock_nowait(
222
231
{
223
232
trace_xfs_ilock_nowait (ip , lock_flags , _RET_IP_ );
224
233
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 );
237
235
238
236
if (lock_flags & XFS_IOLOCK_EXCL ) {
239
237
if (!down_write_trylock (& VFS_I (ip )-> i_rwsem ))
@@ -291,19 +289,7 @@ xfs_iunlock(
291
289
xfs_inode_t * ip ,
292
290
uint lock_flags )
293
291
{
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 );
307
293
308
294
if (lock_flags & XFS_IOLOCK_EXCL )
309
295
up_write (& VFS_I (ip )-> i_rwsem );
0 commit comments