for (map<snapid_t,CapSnap>::iterator p = in->cap_snaps.begin();
p != in->cap_snaps.end();
p++)
- p->second.dirty = 0;
+ p->second.dirty_data = 0;
check_caps(in, false);
signal_cond_list(in->waitfor_commit);
}
CapSnap *capsnap = &in->cap_snaps[seq];
capsnap->context = in->snaprealm->cached_snap_context;
capsnap->issued = in->caps_issued();
+ capsnap->dirty = in->caps_dirty(); // a bit conservative?
- capsnap->dirty = (used & CEPH_CAP_FILE_WRBUFFER);
+ capsnap->dirty_data = (used & CEPH_CAP_FILE_WRBUFFER);
if (used & CEPH_CAP_FILE_WR) {
dout(10) << "queue_cap_snap WR used on " << *in << dendl;
dout(10) << "finish_cap_snap " << *in << " cap_snap " << capsnap << " used " << used
<< " WRBUFFER, delaying" << dendl;
} else {
- capsnap->dirty = 0;
+ capsnap->dirty_data = 0;
flush_snaps(in);
}
}
{
dout(10) << "_flushed_cap_snap seq " << seq << " on " << *in << dendl;
assert(in->cap_snaps.count(seq));
- in->cap_snaps[seq].dirty = 0;
+ in->cap_snaps[seq].dirty_data = 0;
flush_snaps(in);
}
<< " follows " << p->first
<< " size " << p->second.size
<< " mtime " << p->second.mtime
- << " dirty=" << p->second.dirty
+ << " dirty_data=" << p->second.dirty_data
<< " writing=" << p->second.writing
<< " on " << *in << dendl;
- if (p->second.dirty || p->second.writing)
+ if (p->second.dirty_data || p->second.writing)
continue;
MClientCaps *m = new MClientCaps(CEPH_CAP_OP_FLUSHSNAP, in->ino(), in->snaprealm->ino, mseq);
m->head.snap_follows = p->first;
m->head.size = p->second.size;
m->head.caps = p->second.issued;
+ m->head.dirty = p->second.dirty;
p->second.ctime.encode_timeval(&m->head.ctime);
p->second.mtime.encode_timeval(&m->head.mtime);
p->second.atime.encode_timeval(&m->head.atime);
struct CapSnap {
//snapid_t follows; // map key
SnapContext context;
- int issued;
+ int issued, dirty;
__u64 size;
utime_t ctime, mtime, atime;
version_t time_warp_seq;
- bool writing, dirty;
- CapSnap() : issued(0), size(0), time_warp_seq(0), writing(false), dirty(false) {}
+ bool writing, dirty_data;
+ CapSnap() : issued(0), dirty(0), size(0), time_warp_seq(0), writing(false), dirty_data(false) {}
};