From: 9seconds Date: Wed, 1 Apr 2015 06:12:06 +0000 (+0300) Subject: rgw: quota not respected in POST object X-Git-Tag: v9.0.1~167^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F4240%2Fhead;p=ceph.git rgw: quota not respected in POST object Signed-off-by: Sergey Arkhipov Backport: hammer, firefly Fixes: #11323 --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 24f85ac4da5f..ecb98c7e4b9c 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -1218,7 +1218,7 @@ void RGWListBucket::execute() ret = store->update_containers_stats(m); if (ret > 0) { bucket = m.begin()->second; - } + } } RGWRados::Bucket target(store, s->bucket); @@ -1968,6 +1968,12 @@ void RGWPostObj::execute() goto done; } + ret = store->check_quota(s->bucket_owner.get_id(), s->bucket, + user_quota, bucket_quota, s->content_length); + if (ret < 0) { + goto done; + } + processor = select_processor(*static_cast(s->obj_ctx)); ret = processor->prepare(store, NULL); @@ -2003,6 +2009,12 @@ void RGWPostObj::execute() s->obj_size = ofs; + ret = store->check_quota(s->bucket_owner.get_id(), s->bucket, + user_quota, bucket_quota, s->obj_size); + if (ret < 0) { + goto done; + } + hash.Final(m); buf_to_hex(m, CEPH_CRYPTO_MD5_DIGESTSIZE, calc_md5); @@ -2835,7 +2847,7 @@ static int list_multipart_parts(RGWRados *store, struct req_state *s, int ret; parts.clear(); - + if (sorted_omap) { string p; p = "part.";