struct inode *dir = dentry->d_parent->d_inode;
if (ceph_inode_lease_valid(dir, CEPH_LOCK_ICONTENT)) {
- dout(20, "dentry_revalidate have ICONTENT on dir inode %p\n",
- dir);
+ dout(20, "dentry_revalidate %p have ICONTENT on dir inode %p\n",
+ dentry, dir);
return 1;
}
if (ceph_dentry_lease_valid(dentry)) {
- dout(20, "dentry_revalidate - dentry %p lease valid\n", dentry);
+ dout(20, "dentry_revalidate %p lease valid\n", dentry);
return 1;
}
- dout(20, "dentry_revalidate - dentry %p expired\n", dentry);
+ dout(20, "dentry_revalidate %p no lease\n", dentry);
d_drop(dentry);
return 0;
}
dout(10, "fill_trace doing d_move %p -> %p\n",
req->r_old_dentry, dn);
d_move(req->r_old_dentry, dn);
+ dput(dn); /* dn is dropped */
+ dn = req->r_old_dentry; /* use old_dentry */
+ req->r_old_dentry = 0;
}
} else {
dname.name = rinfo->trace_dname[d];