uint32_t create_mask = RGW_SETATTR_UID | RGW_SETATTR_GID | RGW_SETATTR_MODE;
- string bucket_name("nfsroot");
+ string bucket_name("dmarker");
class obj_rec
{
string marker_dir("nfs_marker");
struct rgw_file_handle *bucket_fh = nullptr;
struct rgw_file_handle *marker_fh;
- static constexpr int marker_nobjs = 2*1024;
+ uint32_t marker_nobjs = 2*1024;
std::deque<obj_rec> marker_objs;
using dirent_t = std::tuple<std::string, uint64_t>;
{
/* "large" directory enumeration test. this one deals only with
* file objects */
+
if (do_create) {
int ret;
- for (int ix = 0; ix < marker_nobjs; ++ix) {
+ for (uint32_t ix = 0; ix < marker_nobjs; ++ix) {
std::string object_name("f_");
object_name += to_string(ix);
obj_rec obj{object_name, nullptr, marker_fh, nullptr};
// commit transaction (write on close)
ret = rgw_close(fs, obj.fh, 0 /* flags */);
ASSERT_EQ(ret, 0);
+ if (verbose) {
+ /* XXX std:cout fragged...did it get /0 in the stream
+ * somewhere? */
+ printf("created: %s:%s\n", bucket_name.c_str(), obj.name.c_str());
+ }
// save for cleanup
marker_objs.push_back(obj);
}
uint32_t flags) {
dirent_vec& dvec =
*(static_cast<dirent_vec*>(arg));
- lsubdout(cct, rgw, 10) << __func__
- << " bucket=" << bucket_name
- << " dir=" << marker_dir
- << " iv count=" << dvec.count
- << " called back name=" << name
- << " flags=" << flags
- << dendl;
-
- std::cout << __func__
- << " bucket=" << bucket_name
- << " dir=" << marker_dir
- << " iv count=" << dvec.count
- << " called back name=" << name
- << " flags=" << flags
- << std::endl;
+
+ printf("%s bucket=%s dir=%s iv count=%d called back name=%s flags=%d\n",
+ __func__,
+ bucket_name.c_str(),
+ marker_dir.c_str(),
+ dvec.count,
+ name,
+ flags);
string name_str{name};
if (! ((name_str == ".") ||
int ret = rgw_readdir(fs, marker_fh, &offset, r2_cb, &dvec, &eof,
RGW_READDIR_FLAG_DOTDOT);
ASSERT_EQ(ret, 0);
+ ASSERT_GE(dvec.obj_names.size(), 0);
ASSERT_EQ(offset, get<1>(dvec.obj_names.back())); // cookie check
++dvec.count;
} while(!eof);
int ret = rgw_readdir2(fs, marker_fh,
(marker.length() > 0) ? marker.c_str() : nullptr,
r2_cb, &dvec, &eof,
- RGW_READDIR_FLAG_DOTDOT);
+ RGW_READDIR_FLAG_NONE);
ASSERT_EQ(ret, 0);
+ ASSERT_GE(dvec.obj_names.size(), 0);
marker = get<0>(dvec.obj_names.back());
++dvec.count;
} while((!eof) && dvec.count < 4);
} else if (ceph_argparse_witharg(args, arg_iter, &val, "--gid",
(char*) nullptr)) {
owner_gid = std::stoi(val);
+ } else if (ceph_argparse_witharg(args, arg_iter, &val, "--nobjs",
+ (char*) nullptr)) {
+ marker_nobjs = std::stoi(val);
} else if (ceph_argparse_flag(args, arg_iter, "--marker1",
(char*) nullptr)) {
do_marker1 = true;