Skip to content

Commit 37b27bd

Browse files
josefbacikbrauner
authored andcommitted
fs: add an icount_read helper
Instead of doing direct access to ->i_count, add a helper to handle this. This will make it easier to convert i_count to a refcount later. Signed-off-by: Josef Bacik <josef@toxicpanda.com> Link: https://lore.kernel.org/9bc62a84c6b9d6337781203f60837bd98fbc4a96.1756222464.git.josef@toxicpanda.com Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent 9e70e98 commit 37b27bd

16 files changed

Lines changed: 25 additions & 20 deletions

File tree

arch/powerpc/platforms/cell/spufs/file.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1430,7 +1430,7 @@ static int spufs_mfc_open(struct inode *inode, struct file *file)
14301430
if (ctx->owner != current->mm)
14311431
return -EINVAL;
14321432

1433-
if (atomic_read(&inode->i_count) != 1)
1433+
if (icount_read(inode) != 1)
14341434
return -EBUSY;
14351435

14361436
mutex_lock(&ctx->mapping_lock);

fs/btrfs/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4538,7 +4538,7 @@ static void btrfs_prune_dentries(struct btrfs_root *root)
45384538

45394539
inode = btrfs_find_first_inode(root, min_ino);
45404540
while (inode) {
4541-
if (atomic_read(&inode->vfs_inode.i_count) > 1)
4541+
if (icount_read(&inode->vfs_inode) > 1)
45424542
d_prune_aliases(&inode->vfs_inode);
45434543

45444544
min_ino = btrfs_ino(inode) + 1;

fs/ceph/mds_client.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2221,7 +2221,7 @@ static int trim_caps_cb(struct inode *inode, int mds, void *arg)
22212221
int count;
22222222
dput(dentry);
22232223
d_prune_aliases(inode);
2224-
count = atomic_read(&inode->i_count);
2224+
count = icount_read(inode);
22252225
if (count == 1)
22262226
(*remaining)--;
22272227
doutc(cl, "%p %llx.%llx cap %p pruned, count now %d\n",

fs/ext4/ialloc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,10 @@ void ext4_free_inode(handle_t *handle, struct inode *inode)
252252
"nonexistent device\n", __func__, __LINE__);
253253
return;
254254
}
255-
if (atomic_read(&inode->i_count) > 1) {
255+
if (icount_read(inode) > 1) {
256256
ext4_msg(sb, KERN_ERR, "%s:%d: inode #%lu: count=%d",
257257
__func__, __LINE__, inode->i_ino,
258-
atomic_read(&inode->i_count));
258+
icount_read(inode));
259259
return;
260260
}
261261
if (inode->i_nlink) {

fs/fs-writeback.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1767,7 +1767,7 @@ static int writeback_single_inode(struct inode *inode,
17671767
int ret = 0;
17681768

17691769
spin_lock(&inode->i_lock);
1770-
if (!atomic_read(&inode->i_count))
1770+
if (!icount_read(inode))
17711771
WARN_ON(!(inode->i_state & (I_WILL_FREE|I_FREEING)));
17721772
else
17731773
WARN_ON(inode->i_state & I_WILL_FREE);

fs/hpfs/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ void hpfs_write_inode(struct inode *i)
184184
struct hpfs_inode_info *hpfs_inode = hpfs_i(i);
185185
struct inode *parent;
186186
if (i->i_ino == hpfs_sb(i->i_sb)->sb_root) return;
187-
if (hpfs_inode->i_rddir_off && !atomic_read(&i->i_count)) {
187+
if (hpfs_inode->i_rddir_off && !icount_read(i)) {
188188
if (*hpfs_inode->i_rddir_off)
189189
pr_err("write_inode: some position still there\n");
190190
kfree(hpfs_inode->i_rddir_off);

fs/inode.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ static void __inode_add_lru(struct inode *inode, bool rotate)
534534
{
535535
if (inode->i_state & (I_DIRTY_ALL | I_SYNC | I_FREEING | I_WILL_FREE))
536536
return;
537-
if (atomic_read(&inode->i_count))
537+
if (icount_read(inode))
538538
return;
539539
if (!(inode->i_sb->s_flags & SB_ACTIVE))
540540
return;
@@ -871,11 +871,11 @@ void evict_inodes(struct super_block *sb)
871871
again:
872872
spin_lock(&sb->s_inode_list_lock);
873873
list_for_each_entry(inode, &sb->s_inodes, i_sb_list) {
874-
if (atomic_read(&inode->i_count))
874+
if (icount_read(inode))
875875
continue;
876876

877877
spin_lock(&inode->i_lock);
878-
if (atomic_read(&inode->i_count)) {
878+
if (icount_read(inode)) {
879879
spin_unlock(&inode->i_lock);
880880
continue;
881881
}
@@ -937,7 +937,7 @@ static enum lru_status inode_lru_isolate(struct list_head *item,
937937
* unreclaimable for a while. Remove them lazily here; iput,
938938
* sync, or the last page cache deletion will requeue them.
939939
*/
940-
if (atomic_read(&inode->i_count) ||
940+
if (icount_read(inode) ||
941941
(inode->i_state & ~I_REFERENCED) ||
942942
!mapping_shrinkable(&inode->i_data)) {
943943
list_lru_isolate(lru, &inode->i_lru);

fs/nfs/inode.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -608,7 +608,7 @@ nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr)
608608
inode->i_sb->s_id,
609609
(unsigned long long)NFS_FILEID(inode),
610610
nfs_display_fhandle_hash(fh),
611-
atomic_read(&inode->i_count));
611+
icount_read(inode));
612612

613613
out:
614614
return inode;
@@ -2229,7 +2229,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr)
22292229
dfprintk(VFS, "NFS: %s(%s/%lu fh_crc=0x%08x ct=%d info=0x%llx)\n",
22302230
__func__, inode->i_sb->s_id, inode->i_ino,
22312231
nfs_display_fhandle_hash(NFS_FH(inode)),
2232-
atomic_read(&inode->i_count), fattr->valid);
2232+
icount_read(inode), fattr->valid);
22332233

22342234
if (!(fattr->valid & NFS_ATTR_FATTR_FILEID)) {
22352235
/* Only a mounted-on-fileid? Just exit */

fs/notify/fsnotify.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ static void fsnotify_unmount_inodes(struct super_block *sb)
6666
* removed all zero refcount inodes, in any case. Test to
6767
* be sure.
6868
*/
69-
if (!atomic_read(&inode->i_count)) {
69+
if (!icount_read(inode)) {
7070
spin_unlock(&inode->i_lock);
7171
continue;
7272
}

fs/smb/client/inode.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2749,7 +2749,7 @@ int cifs_revalidate_dentry_attr(struct dentry *dentry)
27492749
}
27502750

27512751
cifs_dbg(FYI, "Update attributes: %s inode 0x%p count %d dentry: 0x%p d_time %ld jiffies %ld\n",
2752-
full_path, inode, inode->i_count.counter,
2752+
full_path, inode, icount_read(inode),
27532753
dentry, cifs_get_time(dentry), jiffies);
27542754

27552755
again:

0 commit comments

Comments
 (0)