#define RGW_MAX_CHUNK_SIZE (512*1024)
#define RGW_MAX_PENDING_CHUNKS 16
#define RGW_MAX_PUT_SIZE (5ULL*1024*1024*1024)
+#define RGW_MIN_MULTIPART_SIZE (5ULL*1024*1024)
#define RGW_FORMAT_PLAIN 0
#define RGW_FORMAT_XML 1
{
string part_num;
RGWMPObj mp;
+
protected:
bool immutable_head() { return true; }
int prepare(RGWRados *store, struct req_state *s);
if (part_num.empty()) {
return -EINVAL;
}
+
oid = mp.get_part(part_num);
head_obj.init_ns(s->bucket, oid, mp_ns);
return;
}
+ // ensure that each part if of the minimum size
+ for (obj_iter = obj_parts.begin(); obj_iter != obj_parts.end(); ++obj_iter) {
+ if ((obj_iter->second).size < min_part_size) {
+ ret = -ERR_TOO_SMALL;
+ return;
+ }
+ }
+
mp.init(s->object_str, upload_id);
meta_oid = mp.get_meta();
string etag;
char *data;
int len;
+ uint64_t min_part_size;
public:
RGWCompleteMultipart() {
ret = 0;
data = NULL;
len = 0;
+ min_part_size = RGW_MIN_MULTIPART_SIZE;
}
virtual ~RGWCompleteMultipart() {
free(data);