Commit 10cf1a02 authored by Tao Ma's avatar Tao Ma Committed by Joel Becker

ocfs2: Set i_nlink properly during reflink.

We create a file in orphan dir for reflink so that if there
is any error, we don't create any wrong dentry in the dir.
But actually the file in orphan dir should be i_nlink = 0
so that it can be replayed and freed successfully.

This patch first set i_nlink to 0 when creating the file in
orphan dir and then set it to 1(reflink now only works for
regular file) when we move it to the dest dir.
Signed-off-by: default avatarTao Ma <tao.ma@oracle.com>
Signed-off-by: default avatarJoel Becker <joel.becker@oracle.com>
parent c7d260af
...@@ -2108,6 +2108,7 @@ int ocfs2_create_inode_in_orphan(struct inode *dir, ...@@ -2108,6 +2108,7 @@ int ocfs2_create_inode_in_orphan(struct inode *dir,
} }
did_quota_inode = 1; did_quota_inode = 1;
inode->i_nlink = 0;
/* do the real work now. */ /* do the real work now. */
status = ocfs2_mknod_locked(osb, dir, inode, status = ocfs2_mknod_locked(osb, dir, inode,
0, &new_di_bh, parent_di_bh, handle, 0, &new_di_bh, parent_di_bh, handle,
...@@ -2268,6 +2269,8 @@ int ocfs2_mv_orphaned_inode_to_new(struct inode *dir, ...@@ -2268,6 +2269,8 @@ int ocfs2_mv_orphaned_inode_to_new(struct inode *dir,
di = (struct ocfs2_dinode *)di_bh->b_data; di = (struct ocfs2_dinode *)di_bh->b_data;
le32_add_cpu(&di->i_flags, -OCFS2_ORPHANED_FL); le32_add_cpu(&di->i_flags, -OCFS2_ORPHANED_FL);
di->i_orphaned_slot = 0; di->i_orphaned_slot = 0;
inode->i_nlink = 1;
ocfs2_set_links_count(di, inode->i_nlink);
ocfs2_journal_dirty(handle, di_bh); ocfs2_journal_dirty(handle, di_bh);
status = ocfs2_add_entry(handle, dentry, inode, status = ocfs2_add_entry(handle, dentry, inode,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment