<< dendl;
{
lock_guard guard(state.mtx); /* LOCKED */
- /* just return if no events */
+ lsubdout(get_context(), rgw, 15)
+ << "GC: processing"
+ << " count=" << events.size()
+ << " events"
+ << dendl;
+ /* just return if no events */
if (events.empty()) {
return;
}
struct timespec now;
CephContext* cct = fs->get_context();
+ lsubdout(cct, rgw, 10)
+ << __func__ << " readdir called on "
+ << object_name()
+ << dendl;
+
directory* d = get<directory>(&variant_type);
if (d) {
(void) clock_gettime(CLOCK_MONOTONIC_COARSE, &now); /* !LOCKED */
set_nlink(2);
inc_nlink(req.d_count);
*eof = req.eof();
- event ev(event::type::READDIR, get_key(), state.atime);
- lock_guard sguard(fs->state.mtx);
- fs->state.push_event(ev);
}
} else {
RGWReaddirRequest req(cct, fs->get_user(), this, rcb, cb_arg, offset);
set_nlink(2);
inc_nlink(req.d_count);
*eof = req.eof();
- event ev(event::type::READDIR, get_key(), state.atime);
- lock_guard sguard(fs->state.mtx);
- fs->state.push_event(ev);
}
}
+ event ev(event::type::READDIR, get_key(), state.atime);
+ lock_guard sguard(fs->state.mtx);
+ fs->state.push_event(ev);
+
lsubdout(fs->get_context(), rgw, 15)
<< __func__
<< " final link count=" << state.nlink
RGWFileHandle::FHCache::FLAG_LOCK);
/* LATCHED */
if (! fh) {
+ if (unlikely(fhk == root_fh.fh.fh_hk)) {
+ /* lookup for root of this fs */
+ fh = &root_fh;
+ goto out;
+ }
lsubdout(get_context(), rgw, 0)
- << __func__ << " handle lookup failed <"
- << fhk.fh_hk.bucket << "," << fhk.fh_hk.object << ">"
- << "(need persistent handles)"
+ << __func__ << " handle lookup failed " << fhk
<< dendl;
goto out;
}