[Devel] [PATCH rh7] ext4: ext4_mkdir must set S_IOPS_WRAPPER bit

Maxim Patlasov mpatlasov at virtuozzo.com
Mon Jul 25 14:01:16 PDT 2016


ext4_iget() sets this bit for directories. Let's do the same in ext4_mkdir().
Otherwise, the behaviour of vfs_rename (on top of ext4) varies depending on
how the in-core inode was born: via lookup or mkdir.

The key place in vfs_rename sensible to the change is:

>	if (flags && !rename2)
>		return -EINVAL;

Signed-off-by: Maxim Patlasov <mpatlasov at virtuozzo.com>
---
 fs/ext4/namei.c |    1 +
 1 file changed, 1 insertion(+)

diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 0adc6df..bebe698 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -2413,6 +2413,7 @@ retry:
 
 	inode->i_op = &ext4_dir_inode_operations.ops;
 	inode->i_fop = &ext4_dir_operations;
+	inode->i_flags |= S_IOPS_WRAPPER;
 	err = ext4_init_new_dir(handle, dir, inode);
 	if (err)
 		goto out_clear_inode;



More information about the Devel mailing list