]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw_file: invalid use of RGWFileHandle::FLAG_EXACT_MATCH
authorMatt Benjamin <mbenjamin@redhat.com>
Sun, 19 Feb 2017 22:43:17 +0000 (17:43 -0500)
committerNathan Cutler <ncutler@suse.com>
Wed, 8 Mar 2017 12:08:58 +0000 (13:08 +0100)
The change which introduced this flag also caused it to be
given as the flags argument to RGWLibFS::stat_leaf() when called
from rgw_lookup().

This was incorrect:  in particular, when a directory is known only
as a common prefix of other objects, the AWS namespace mapping
convention requires lookup("foo") to match a non-materialized
instance of "foo/" (case 2 in RGWLibFS::stat_leaf's stat loop).

Fixes: http://tracker.ceph.com/issues/18992
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit e31e9eb980f958640150e8d7f17de1b9e5478b1e)

src/rgw/rgw_file.cc

index 4e3723712196fa04d00f8602f933f7cfecf354f9..8573465c6d730a2512784e2402079c7d1939a141 100644 (file)
@@ -1300,7 +1300,7 @@ int rgw_lookup(struct rgw_fs *rgw_fs,
        return -ENOENT;
     }
   } else {
-    fhr = fs->stat_leaf(parent, path, RGWFileHandle::FLAG_EXACT_MATCH);
+    fhr = fs->stat_leaf(parent, path, RGWFileHandle::FLAG_NONE);
     if (! get<0>(fhr)) {
       if (! (flags & RGW_LOOKUP_FLAG_CREATE))
        return -ENOENT;