From e76f84e179d2ba8bfc0dc5abf4e620fef14bc8a0 Mon Sep 17 00:00:00 2001 From: 9seconds Date: Wed, 1 Apr 2015 09:12:06 +0300 Subject: [PATCH] rgw: quota not respected in POST object Signed-off-by: Sergey Arkhipov Backport: hammer, firefly Fixes: #11323 --- src/rgw/rgw_op.cc | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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."; -- 2.47.3