]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Disable prefetch of entire head object when GET request with range header 34826/head
authorOr Friedmann <ofriedma@redhat.com>
Sun, 8 Mar 2020 13:34:48 +0000 (15:34 +0200)
committerNathan Cutler <ncutler@suse.com>
Wed, 29 Apr 2020 11:33:35 +0000 (13:33 +0200)
Disable prefetch of entire head object when GET request with range header.
The current behavior for the RGW is getting the whole object although the client asked only for a small bytes offset.
For example: If the client asked for bytes=0-1, The RGW will anyway fetch 0-4194304

Fixes: https://tracker.ceph.com/issues/44508
Signed-off-by: Or Friedmann <ofriedma@redhat.com>
(cherry picked from commit 2be5af0006169cb54547034aa98b7eacb8751d59)

src/rgw/rgw_op.cc

index cb8e8a90d5333e71f6c476ebeb2085d04164f34d..f5643fdab1b4a67f47303515ea851dc9627e247b 100644 (file)
@@ -2147,22 +2147,14 @@ bool RGWGetObj::prefetch_data()
     return false;
   }
 
-  bool prefetch_first_chunk = true;
   range_str = s->info.env->get("HTTP_RANGE");
-
+  // TODO: add range prefetch
   if (range_str) {
-    int r = parse_range();
-    /* error on parsing the range, stop prefetch and will fail in execute() */
-    if (r < 0) {
-      return false; /* range_parsed==false */
-    }
-    /* range get goes to shadow objects, stop prefetch */
-    if (ofs >= s->cct->_conf->rgw_max_chunk_size) {
-      prefetch_first_chunk = false;
-    }
+    parse_range();
+    return false;
   }
 
-  return get_data && prefetch_first_chunk;
+  return get_data;
 }
 
 void RGWGetObj::pre_exec()