]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw_file_nfsns: bugfix MARKER1_SETUP
authorMatt Benjamin <mbenjamin@redhat.com>
Wed, 6 Jan 2016 05:22:10 +0000 (00:22 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:07:28 +0000 (12:07 -0500)
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 <mbenjamin@redhat.com>
src/test/librgw_file_nfsns.cc

index ee186714128131a8c01fab4e52bedbe199ead779..24b9582d78627b913ab2f40b7111c6ab9a5acaee 100644 (file)
@@ -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;
   }
 }