From 82aababc46c4e00dd0eef081ddd8d51c655516c6 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Wed, 6 Jan 2016 00:22:10 -0500 Subject: [PATCH] librgw_file_nfsns: bugfix MARKER1_SETUP Successfully creates 5*1024 objects at /nfsroot/nfs_marker/, verifies externally. Follow-up rgw_readdir shows 999 results, apparently the initial readdir segment works correctly, but restart from offset fails. Signed-off-by: Matt Benjamin --- src/test/librgw_file_nfsns.cc | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/test/librgw_file_nfsns.cc b/src/test/librgw_file_nfsns.cc index ee1867141281..24b9582d7862 100644 --- a/src/test/librgw_file_nfsns.cc +++ b/src/test/librgw_file_nfsns.cc @@ -225,11 +225,16 @@ TEST(LibRGW, MARKER1_SETUP) std::string object_name("f_"); object_name += to_string(ix); obj_rec obj{object_name, nullptr, marker_fh, nullptr}; + // lookup object--all operations are by handle ret = rgw_lookup(fs, marker_fh, obj.name.c_str(), &obj.fh, RGW_LOOKUP_FLAG_CREATE); ASSERT_EQ(ret, 0); obj.rgw_fh = get_rgwfh(obj.fh); - + // open object--open transaction + ret = rgw_open(fs, obj.fh, 0 /* flags */); + ASSERT_EQ(ret, 0); + ASSERT_TRUE(obj.rgw_fh->is_open()); + // unstable write data size_t nbytes; string data("data for "); data += object_name; @@ -237,6 +242,10 @@ TEST(LibRGW, MARKER1_SETUP) (void*) data.c_str()); ASSERT_EQ(ret, 0); ASSERT_EQ(nbytes, data.length()); + // commit transaction (write on close) + ret = rgw_close(fs, obj.fh, 0 /* flags */); + ASSERT_EQ(ret, 0); + // save for cleanup marker_objs.push_back(obj); } } @@ -280,6 +289,8 @@ TEST(LibRGW, MARKER1_READDIR) ASSERT_EQ(offset, get<1>(dvec.obj_names.back())); // cookie check ++dvec.count; } while(!eof); + std::cout << "Read " << dvec.obj_names.size() << " objects in " + << marker_dir.c_str() << std::endl; } } -- 2.47.3