Skip to content

Commit

Permalink
fs/inode.c: inode_set_flags(): replace opencoded set_mask_bits()
Browse files Browse the repository at this point in the history
It seems that commits 5f16f32 and 00a1a05, both with same
commitlog ("ext4: atomically set inode->i_flags in ext4_set_inode_flags()")
introduced the set_mask_bits API, but somehow missed not using it in ext4
in the end.

Also, set_mask_bits() is used in fs quite a bit and we can possibly come
up with a generic llsc based implementation (w/o the cmpxchg loop)

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Vineet Gupta <[email protected]>
Reviewed-by: Anthony Yznaga <[email protected]>
Cc: Alexander Viro <[email protected]>
Cc: Theodore Ts'o <[email protected]>
Cc: Peter Zijlstra (Intel) <[email protected]>
Cc: Chris Wilson <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Jani Nikula <[email protected]>
Cc: Miklos Szeredi <[email protected]>
Cc: Oleg Nesterov <[email protected]>
Cc: Will Deacon <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
Vineet Gupta authored and torvalds committed Mar 6, 2019
1 parent f402cf0 commit a905737
Showing 1 changed file with 1 addition and 7 deletions.
8 changes: 1 addition & 7 deletions fs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -2093,14 +2093,8 @@ EXPORT_SYMBOL(inode_dio_wait);
void inode_set_flags(struct inode *inode, unsigned int flags,
unsigned int mask)
{
unsigned int old_flags, new_flags;

WARN_ON_ONCE(flags & ~mask);
do {
old_flags = READ_ONCE(inode->i_flags);
new_flags = (old_flags & ~mask) | flags;
} while (unlikely(cmpxchg(&inode->i_flags, old_flags,
new_flags) != old_flags));
set_mask_bits(&inode->i_flags, mask, flags);
}
EXPORT_SYMBOL(inode_set_flags);

Expand Down

0 comments on commit a905737

Please sign in to comment.