Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45321ac5 authored by Al Viro's avatar Al Viro
Browse files

Make ->drop_inode() just return whether inode needs to be dropped



... and let iput_final() do the actual eviction or retention

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 30140837
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1223,7 +1223,7 @@ void pohmelfs_fill_inode(struct inode *inode, struct netfs_inode_info *info)
	}
}

static void pohmelfs_drop_inode(struct inode *inode)
static int pohmelfs_drop_inode(struct inode *inode)
{
	struct pohmelfs_sb *psb = POHMELFS_SB(inode->i_sb);
	struct pohmelfs_inode *pi = POHMELFS_I(inode);
@@ -1232,7 +1232,7 @@ static void pohmelfs_drop_inode(struct inode *inode)
	list_del_init(&pi->inode_entry);
	spin_unlock(&psb->ino_lock);

	generic_drop_inode(inode);
	return generic_drop_inode(inode);
}

static struct pohmelfs_inode *pohmelfs_get_inode_from_list(struct pohmelfs_sb *psb,
+1 −1
Original line number Diff line number Diff line
@@ -2395,7 +2395,7 @@ int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc);
void btrfs_dirty_inode(struct inode *inode);
struct inode *btrfs_alloc_inode(struct super_block *sb);
void btrfs_destroy_inode(struct inode *inode);
void btrfs_drop_inode(struct inode *inode);
int btrfs_drop_inode(struct inode *inode);
int btrfs_init_cachep(void);
void btrfs_destroy_cachep(void);
long btrfs_ioctl_trans_end(struct file *file);
+6 −5
Original line number Diff line number Diff line
@@ -3943,7 +3943,7 @@ again:
			if (atomic_read(&inode->i_count) > 1)
				d_prune_aliases(inode);
			/*
			 * btrfs_drop_inode will remove it from
			 * btrfs_drop_inode will have it removed from
			 * the inode cache when its usage count
			 * hits zero.
			 */
@@ -6337,13 +6337,14 @@ free:
	kmem_cache_free(btrfs_inode_cachep, BTRFS_I(inode));
}

void btrfs_drop_inode(struct inode *inode)
int btrfs_drop_inode(struct inode *inode)
{
	struct btrfs_root *root = BTRFS_I(inode)->root;
	if (inode->i_nlink > 0 && btrfs_root_refs(&root->root_item) == 0)
		generic_delete_inode(inode);

	if (btrfs_root_refs(&root->root_item) == 0)
		return 1;
	else
		generic_drop_inode(inode);
		return generic_drop_inode(inode);
}

static void init_once(void *foo)
+4 −5
Original line number Diff line number Diff line
@@ -480,14 +480,13 @@ static int cifs_remount(struct super_block *sb, int *flags, char *data)
	return 0;
}

void cifs_drop_inode(struct inode *inode)
static int cifs_drop_inode(struct inode *inode)
{
	struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);

	if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM)
		return generic_drop_inode(inode);

	return generic_delete_inode(inode);
	/* no serverino => unconditional eviction */
	return !(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) ||
		generic_drop_inode(inode);
}

static const struct super_operations cifs_super_ops = {
+2 −2
Original line number Diff line number Diff line
@@ -1191,7 +1191,7 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data)
 * node for later deallocation.
 */

static void gfs2_drop_inode(struct inode *inode)
static int gfs2_drop_inode(struct inode *inode)
{
	struct gfs2_inode *ip = GFS2_I(inode);

@@ -1200,7 +1200,7 @@ static void gfs2_drop_inode(struct inode *inode)
		if (gl && test_bit(GLF_DEMOTE, &gl->gl_flags))
			clear_nlink(inode);
	}
	generic_drop_inode(inode);
	return generic_drop_inode(inode);
}

static int is_ancestor(const struct dentry *d1, const struct dentry *d2)
Loading