On Thu, Jun 12, 2014 at 03:52:14PM -0700, Mark Fasheh wrote: > On Mon, Jun 09, 2014 at 01:03:59PM -0700, Andrew Morton wrote: > > From: alex chen <alex.c...@huawei.com> > > Subject: ocfs2: should add inode into orphan dir after updating entry in > > ocfs2_rename() > > > > There are two files a and b in dir /mnt/ocfs2. > > node A node B > > mv a b > > In ocfs2_rename(), after calling > > ocfs2_orphan_add(), the inode of > > file b will be added into orphan > > dir. > > > > If ocfs2_update_entry() fails, > > ocfs2_rename return error and mv > > operation fails. But file b still > > exists in the parent dir. > > > > ocfs2_queue_orphan_scan > > -> ocfs2_queue_recovery_completion > > -> ocfs2_complete_recovery > > -> ocfs2_recover_orphans > > The inode of the file b will be > > put with iput(). > > > > ocfs2_evict_inode > > -> ocfs2_delete_inode > > -> ocfs2_wipe_inode > > -> ocfs2_remove_inode > > OCFS2_VALID_FL in the inode > > i_flags will be cleared. > > > > The file b still can be accessed > > on node B. > > ls /mnt/ocfs2 > > When first read the file b with > > ocfs2_read_inode_block(). It will > > validate the inode using > > ocfs2_validate_inode_block(). > > Because OCFS2_VALID_FL not set in > > the inode i_flags, so the file > > system will be readonly. > > > > So we should add inode into orphan dir after updating entry in > > ocfs2_rename(). > > That looks fine. I guess the downside now is that if we fail during orphan > add we could leak the file which would have been otherwise replaced. In my > opinion though this is much better than going readonly because we have a > link to a dead file. > > > Thanks for this Alex, > --Mark
Err, probably helps if I leave this, sorry: Reviewed-by: Mark Fasheh <mfas...@suse.de> -- Mark Fasheh _______________________________________________ Ocfs2-devel mailing list Ocfs2-devel@oss.oracle.com https://oss.oracle.com/mailman/listinfo/ocfs2-devel