Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4a29f26 authored by Sage Weil's avatar Sage Weil
Browse files

ceph: ensure rename target dentry fails revalidation



This works around a bug in vfs_rename_dir() that rehashes the target
dentry.  Ensure such dentries always fail revalidation by timing out the
dentry lease and kicking it out of the current directory lease gen.

This can be reverted when the vfs bug is fixed.

Signed-off-by: default avatarSage Weil <sage@newdream.net>
parent 2baba250
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -939,6 +939,10 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req,
			     req->r_old_dentry->d_name.len,
			     req->r_old_dentry->d_name.name,
			     dn, dn->d_name.len, dn->d_name.name);
			/* ensure target dentry is invalidated, despite
			   rehashing bug in vfs_rename_dir */
			dn->d_time = jiffies;
			ceph_dentry(dn)->lease_shared_gen = 0;
			/* take overwritten dentry's readdir offset */
			ceph_dentry(req->r_old_dentry)->offset =
				ceph_dentry(dn)->offset;