On Fri, Aug 13, 2021 at 02:34:34PM +0200, Jan Kara wrote: > Actually, in the orphan list code, we leave the inode in the on-disk list > but remove it from the in-memory list - see how > list_del_init(&ei->i_orphan) is called very early in ext4_orphan_del(). The > reason for this unconditional deletion is that if we do not remove the > inode from the in-memory orphan list, the filesystem will complain and > corrupt memory on unmount. > > Also note that leaving inode in the on-disk orphan list actually does no > serious harm. Because the orphan cleanup code just checks i_nlink and > i_disksize and truncates inode down to current i_disksize and removes inode > completely if i_nlink is 0. So even if an inode on the orphan list gets > reused, orphan cleanup will just do nothing for it. So the worst problem > that will likely happen is that on-disk orphan linked list becomes > corrupted but there's no data loss AFAICT. > > Is it clearer now or am I missing something? Yes, you're right, I misread the code. Thanks for clarifying. Can you send the final spin of this patch set? I think we're all set for this patch series. Reviewed-by: Theodore Ts'o <tytso@xxxxxxx> - Ted