]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librgw: stop abusing parents
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 8 Jan 2016 17:01:55 +0000 (12:01 -0500)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 12 Feb 2016 17:07:36 +0000 (12:07 -0500)
Also make sure that root file handle has directory as its variant
type.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_file.cc
src/rgw/rgw_file.h

index 1ba39d92c8d07fe66230ac2766636d8a450dc5e9..63b5c86badfb71a74798625a9ee04dfe2d2c21cf 100644 (file)
@@ -216,17 +216,16 @@ namespace rgw {
     int rc = 0;
     struct timespec now;
     CephContext* cct = fs->get_context();
-    directory* d = parent->get_directory(); /* already type-checked */
+    directory* d = get_directory(); /* already type-checked */
 
     (void) clock_gettime(CLOCK_MONOTONIC_COARSE, &now); /* !LOCKED */
 
-    // XXXX finish marker handling
     if (is_root()) {
       RGWListBucketsRequest req(cct, fs->get_user(), this, rcb, cb_arg,
                                offset);
       rc = rgwlib.get_fe()->execute_req(&req);
       if (! rc) {
-       parent->set_nlink(3 + d->name_cache.size());
+       set_nlink(3 + d->name_cache.size());
        state.atime = now;
        *eof = req.eof();
        event ev(event::type::READDIR, get_key(), state.atime);
@@ -238,7 +237,7 @@ namespace rgw {
       rc = rgwlib.get_fe()->execute_req(&req);
       if (! rc) {
        state.atime = now;
-       parent->set_nlink(3 + d->name_cache.size());
+       set_nlink(3 + d->name_cache.size());
        *eof = req.eof();
        event ev(event::type::READDIR, get_key(), state.atime);
        fs->state.push_event(ev);
index dd1569f77ae8a6675e4aab1fcdafe6eb5a1170a1..a6ca509744b0f39e964cce71b028ada4f6ddb987 100644 (file)
@@ -215,6 +215,7 @@ namespace rgw {
       {
        /* root */
        fh.fh_type = RGW_FS_TYPE_DIRECTORY;
+       variant_type = directory();
        /* stat */
        state.dev = fs_inst;
        /* pointer to self */