inode生命周期

本文详细介绍了Linux内核中inode的管理,包括inode引用计数减少后的处理(iput_final),inode从inodecache中删除(prune_icache_sb),以及回收过程中的evict、destroy_inode和ext4_destroy_inode等函数。重点展示了inode如何从使用到回收,最终返回SLAB缓存的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.添加inode到inode cache链表

当inode的引用计数器i_count为0后,会调用iput_final去释放

static void iput_final(struct inode *inode)
{
   
	struct super_block *sb = inode->i_sb;
	const struct super_operations *op = inode->i_sb->s_op;
	unsigned long state;
	int drop;

	WARN_ON(inode->i_state & I_NEW);

	if (op->drop_inode)
		drop = op->drop_inode(inode);
	else
		drop = generic_drop_inode(inode);
	
	//引用计数为0之后,将inode放到lru中,等待回收
	if (!drop &&
	    !(inode->i_state & I_DONTCACHE) &&
	    (sb->s_flags & SB_ACTIVE)) {
   
		inode_add_lru(inode);
		spin_unlock(&inode->i_lock);
		return;
	}
	
	//对于已经被文件系统除名的文件,即i_nlink = 0, 不必再保留inode,直接释放掉
	WRITE_ONCE(inode->i_state, state 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值