Skip to content

Commit ca76a76

Browse files
kaixuxiakxDarrick J. Wong
authored andcommitted
xfs: factor out the common lock flags assert
There are similar lock flags assert in xfs_ilock(), xfs_ilock_nowait(), xfs_iunlock(), thus we can factor it out into a helper that is clear. Signed-off-by: Kaixu Xia <[email protected]> Reviewed-by: Dave Chinner <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]> Signed-off-by: Darrick J. Wong <[email protected]>
1 parent 5e672cd commit ca76a76

File tree

1 file changed

+23
-37
lines changed

1 file changed

+23
-37
lines changed

fs/xfs/xfs_inode.c

Lines changed: 23 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)