if (mdr->now == utime_t())
mdr->now = g_clock.real_now();
+ bool linkmerge = (srcdn->inode == destdn->inode &&
+ (srcdn->is_primary() || destdn->is_primary()));
+
// -- create stray dentry? --
CDentry *straydn = 0;
- if (destdn->is_primary()) {
+ if (destdn->is_primary() && !linkmerge) {
straydn = mdcache->get_or_create_stray_dentry(destdn->inode);
mdr->pin(straydn);
dout(10) << "straydn is " << *straydn << dendl;
}
// -- prepare anchor updates --
- bool linkmerge = (srcdn->inode == destdn->inode &&
- (srcdn->is_primary() || destdn->is_primary()));
-
if (!linkmerge) {
C_Gather *anchorgather = 0;