hc
2024-10-09 05e59e5fb0064c97a1c10921ecd549f2d4a58565
kernel/fs/reiserfs/file.c
....@@ -38,15 +38,9 @@
3838
3939 BUG_ON(!S_ISREG(inode->i_mode));
4040
41
- if (atomic_add_unless(&REISERFS_I(inode)->openers, -1, 1))
41
+ if (!atomic_dec_and_mutex_lock(&REISERFS_I(inode)->openers,
42
+ &REISERFS_I(inode)->tailpack))
4243 return 0;
43
-
44
- mutex_lock(&REISERFS_I(inode)->tailpack);
45
-
46
- if (!atomic_dec_and_test(&REISERFS_I(inode)->openers)) {
47
- mutex_unlock(&REISERFS_I(inode)->tailpack);
48
- return 0;
49
- }
5044
5145 /* fast out for when nothing needs to be done */
5246 if ((!(REISERFS_I(inode)->i_flags & i_pack_on_close_mask) ||
....@@ -165,7 +159,7 @@
165159 barrier_done = reiserfs_commit_for_inode(inode);
166160 reiserfs_write_unlock(inode->i_sb);
167161 if (barrier_done != 1 && reiserfs_barrier_flush(inode->i_sb))
168
- blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL);
162
+ blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL);
169163 inode_unlock(inode);
170164 if (barrier_done < 0)
171165 return barrier_done;