do {
(void) clock_gettime(CLOCK_MONOTONIC_COARSE, &now);
-
lsubdout(get_context(), rgw, 15)
<< "GC: top of expire loop"
- << " expire_ts=" << expire_ts
+ << " now=" << now
<< " expire_s=" << expire_s
<< dendl;
{
(void) clock_gettime(CLOCK_MONOTONIC_COARSE, &now); /* !LOCKED */
lock_guard guard(mtx);
state.atime = now;
+ if (*offset == 0)
+ set_nlink(2);
inc_nlink(req.d_count);
*eof = req.eof();
event ev(event::type::READDIR, get_key(), state.atime);
(void) clock_gettime(CLOCK_MONOTONIC_COARSE, &now); /* !LOCKED */
lock_guard guard(mtx);
state.atime = now;
+ if (*offset == 0)
+ set_nlink(2);
inc_nlink(req.d_count);
*eof = req.eof();
event ev(event::type::READDIR, get_key(), state.atime);
switch (fh.fh_type) {
case RGW_FS_TYPE_DIRECTORY:
- st->st_nlink = 2;
+ st->st_nlink = state.nlink;
break;
case RGW_FS_TYPE_FILE:
st->st_nlink = 1;
const rgw_obj_key* find_marker(uint64_t off) const {
using std::get;
- const directory* d = get<directory>(&variant_type);
- if (d) {
- return &d->last_marker;
+ if (off > 0) {
+ const directory* d = get<directory>(&variant_type);
+ if (d ) {
+ return &d->last_marker;
+ }
}
return nullptr;
}
-
+
bool is_open() const { return flags & FLAG_OPEN; }
bool is_root() const { return flags & FLAG_ROOT; }
bool is_bucket() const { return flags & FLAG_BUCKET; }
<< dendl;
return;
}
- ++d_count;
++ix;
}
} /* send_response_data */
/* update traversal cache */
rgw_fh->add_marker(off, rgw_obj_key{marker.data(), ""},
RGW_FS_TYPE_DIRECTORY);
+ ++d_count;
return rcb(name.data(), cb_arg, off, RGW_LOOKUP_FLAG_DIR);
}
read directory content (bucket objects)
*/
- class RGWReaddirRequest : public RGWLibRequest,
- public RGWListBucket /* RGWOp */
+class RGWReaddirRequest : public RGWLibRequest,
+ public RGWListBucket /* RGWOp */
{
public:
RGWFileHandle* rgw_fh;
*offset = off;
/* update traversal cache */
rgw_fh->add_marker(off, marker, type);
+ ++d_count;
return rcb(name.data(), cb_arg, off,
(type == RGW_FS_TYPE_DIRECTORY) ?
RGW_LOOKUP_FLAG_DIR :
<< dendl;
return;
}
- ++d_count;
++ix;
}
for (auto& iter : common_prefixes) {