if (pf->fragstat.nfiles < 0 ||
pf->fragstat.nsubdirs < 0) {
- clog.error() << "bad/negative dir size on "
- << dir->dirfrag() << " " << pf->fragstat << "\n";
+ if (!is_stray())
+ clog.error() << "bad/negative dir size on "
+ << dir->dirfrag() << " " << pf->fragstat << "\n";
if (pf->fragstat.nfiles < 0)
pf->fragstat.nfiles = 0;
if (pf->fragstat.nsubdirs < 0)
pf->fragstat.nsubdirs = 0;
- assert(!"bad/negative frag size" == g_conf->mds_verify_scatter);
+ if (!is_stray())
+ assert(!"bad/negative frag size" == g_conf->mds_verify_scatter);
}
if (update) {
if (fg == frag_t()) { // i.e., we are the only frag
if (pi->dirstat.size() != pf->fragstat.size()) {
- clog.error() << "unmatched fragstat size on single "
- << "dirfrag " << dir->dirfrag() << ", inode has "
- << pi->dirstat << ", dirfrag has " << pf->fragstat << "\n";
+ if (!is_stray())
+ clog.error() << "unmatched fragstat size on single "
+ << "dirfrag " << dir->dirfrag() << ", inode has "
+ << pi->dirstat << ", dirfrag has " << pf->fragstat << "\n";
// trust the dirfrag for now
version_t v = pi->dirstat.version;
pi->dirstat = pf->fragstat;
pi->dirstat.version = v;
- assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
+ if (!is_stray())
+ assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
}
}
}
if (pi->dirstat.nfiles < 0 ||
pi->dirstat.nsubdirs < 0) {
- clog.error() << "bad/negative dir size on " << ino()
- << ", inode has " << pi->dirstat << "\n";
+ if (!is_stray())
+ clog.error() << "bad/negative dir size on " << ino()
+ << ", inode has " << pi->dirstat << "\n";
if (pi->dirstat.nfiles < 0)
pi->dirstat.nfiles = 0;
if (pi->dirstat.nsubdirs < 0)
pi->dirstat.nsubdirs = 0;
- assert(!"bad/negative dir size" == g_conf->mds_verify_scatter);
+ if (!is_stray())
+ assert(!"bad/negative dir size" == g_conf->mds_verify_scatter);
}
}
break;
if (fg == frag_t()) { // i.e., we are the only frag
if (pi->rstat.rbytes != pf->rstat.rbytes) {
- clog.error() << "unmatched rstat rbytes on single dirfrag "
- << dir->dirfrag() << ", inode has " << pi->rstat
- << ", dirfrag has " << pf->rstat << "\n";
+ if (!is_stray())
+ clog.error() << "unmatched rstat rbytes on single dirfrag "
+ << dir->dirfrag() << ", inode has " << pi->rstat
+ << ", dirfrag has " << pf->rstat << "\n";
// trust the dirfrag for now
version_t v = pi->rstat.version;
pi->rstat = pf->rstat;
pi->rstat.version = v;
- assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
+ if (!is_stray())
+ assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
}
}
if (update)
//assert(pi->rstat.rfiles >= 0);
if (pi->rstat.rfiles < 0) {
- clog.error() << "rfiles underflow " << pi->rstat.rfiles
- << " on " << *this << "\n";
+ if (!is_stray())
+ clog.error() << "rfiles underflow " << pi->rstat.rfiles
+ << " on " << *this << "\n";
pi->rstat.rfiles = 0;
}
//assert(pi->rstat.rsubdirs >= 0);
if (pi->rstat.rsubdirs < 0) {
- clog.error() << "rsubdirs underflow " << pi->rstat.rfiles
- << " on " << *this << "\n";
+ if (!is_stray())
+ clog.error() << "rsubdirs underflow " << pi->rstat.rfiles
+ << " on " << *this << "\n";
pi->rstat.rsubdirs = 0;
}
}
pi->rstat.add(delta);
dout(20) << " result [" << first << "," << last << "] " << pi->rstat << dendl;
- if (pi->rstat.rbytes < 0)
+ if (pi->rstat.rbytes < 0 && !pin->is_stray())
assert(!"negative rstat rbytes" == g_conf->mds_verify_scatter);
last = first-1;
pi->mtime = pi->ctime = pi->dirstat.mtime;
dout(20) << "predirty_journal_parents gives " << pi->dirstat << " on " << *pin << dendl;
- if (pi->dirstat.size() < 0)
+ if (pi->dirstat.size() < 0 && !pin->is_stray())
assert(!"negative dirstat size" == g_conf->mds_verify_scatter);
if (parent->get_frag() == frag_t()) { // i.e., we are the only frag
if (pi->dirstat.size() != pf->fragstat.size()) {
- mds->clog.error() << "unmatched fragstat size on single dirfrag "
- << parent->dirfrag() << ", inode has " << pi->dirstat
- << ", dirfrag has " << pf->fragstat << "\n";
+ if (!pin->is_stray())
+ mds->clog.error() << "unmatched fragstat size on single dirfrag "
+ << parent->dirfrag() << ", inode has " << pi->dirstat
+ << ", dirfrag has " << pf->fragstat << "\n";
// trust the dirfrag for now
pi->dirstat = pf->fragstat;
- assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
+ if (!pin->is_stray())
+ assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
}
}
}
pf->accounted_rstat = pf->rstat;
if (parent->get_frag() == frag_t()) { // i.e., we are the only frag
- if (pi->rstat.rbytes != pf->rstat.rbytes) {
- mds->clog.error() << "unmatched rstat rbytes on single dirfrag "
- << parent->dirfrag() << ", inode has " << pi->rstat
- << ", dirfrag has " << pf->rstat << "\n";
+ if (pi->rstat.rbytes != pf->rstat.rbytes) {
+ if (!pin->is_stray())
+ mds->clog.error() << "unmatched rstat rbytes on single dirfrag "
+ << parent->dirfrag() << ", inode has " << pi->rstat
+ << ", dirfrag has " << pf->rstat << "\n";
// trust the dirfrag for now
pi->rstat = pf->rstat;
- assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
+ if (!pin->is_stray())
+ assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
}
}
}