dout(20) << " ignoring OLD accounted_fragstat " << pf->fragstat << dendl;
}
}
+ pi->mtime = pi->ctime = pi->dirstat.mtime;
pi->dirstat.version++;
dout(20) << " final dirstat " << pi->dirstat << dendl;
assert(pi->dirstat.size() >= 0);
bool do_parent_mtime = flags & PREDIRTY_DIR;
bool shallow = flags & PREDIRTY_SHALLOW;
+ // declare now?
+ if (mut->now == utime_t())
+ mut->now = g_clock.real_now();
+
dout(10) << "predirty_nested"
<< (do_parent_mtime ? " do_parent_mtime":"")
<< " linkunlink=" << linkunlink
pf->version = parent->pre_dirty();
if (do_parent_mtime) {
- dout(10) << "predirty_nested updating mtime on " << *parent << dendl;
pf->fragstat.mtime = mut->now;
- if (mut->now > pf->fragstat.rctime)
+ if (mut->now > pf->fragstat.rctime) {
+ dout(10) << "predirty_nested updating mtime on " << *parent << dendl;
pf->fragstat.rctime = mut->now;
+ } else {
+ dout(10) << "predirty_nested updating mtime UNDERWATER on " << *parent << dendl;
+ }
}
if (linkunlink) {
dout(10) << "predirty_nested updating size on " << *parent << dendl;
dout(15) << "predirty_nested take_diff " << pf->fragstat << dendl;
dout(15) << "predirty_nested - " << pf->accounted_fragstat << dendl;
pi->dirstat.take_diff(pf->fragstat, pf->accounted_fragstat);
+ pi->mtime = pi->ctime = pi->dirstat.mtime;
dout(15) << "predirty_nested gives " << pi->dirstat << " on " << *pin << dendl;
// next parent!
// log + wait
EUpdate *le = new EUpdate(mdlog, "link_local");
le->metablob.add_client_req(mdr->reqid);
- mds->locker->predirty_nested(mdr, &le->metablob, targeti, dn->dir, PREDIRTY_DIR, 1); // new dn
+ mds->locker->predirty_nested(mdr, &le->metablob, targeti, dn->dir, PREDIRTY_DIR, 1); // new dn
mds->locker->predirty_nested(mdr, &le->metablob, targeti, 0, PREDIRTY_PRIMARY); // targeti
le->metablob.add_remote_dentry(dn, true, targeti->ino(),
MODE_TO_DT(targeti->inode.mode)); // new remote