]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: user quota may not adjust on bucket removal 7586/head
authorroot <root@gluster5.gfs.fsw.fujitsu.com>
Tue, 9 Feb 2016 20:03:24 +0000 (12:03 -0800)
committerroot <root@gluster5.gfs.fsw.fujitsu.com>
Tue, 9 Feb 2016 20:03:24 +0000 (12:03 -0800)
Description:
If the user/admin removes a bucket using --force/--purge-objects options with s3cmd/radosgw-admin respectively, the user stats will continue to reflect the deleted objects for quota purposes, and there seems to be no way to reset them. User stats need to be sync'ed prior to bucket removal.

Solution:
Sync user stats before removing a bucket.

Fixes: #14507
Signed-off-by: Edward Yang eyang@us.fujitsu.com
src/rgw/rgw_bucket.cc
src/rgw/rgw_op.cc

index 3e4e85435e7ce3c86e6e006beb6c30e781819144..f9e15e1f108ecb3487a8b8182174ccab5fdcee8d 100644 (file)
@@ -499,6 +499,11 @@ int rgw_remove_bucket(RGWRados *store, rgw_bucket& bucket, bool delete_children)
     }
   }
 
+  ret = rgw_bucket_sync_user_stats(store, bucket.tenant, bucket.name);
+  if ( ret < 0) {
+     dout(1) << "WARNING: failed sync user stats before bucket delete. ret=" <<  ret << dendl;
+  }
+
   RGWObjVersionTracker objv_tracker;
 
   ret = store->delete_bucket(bucket, objv_tracker);
index 8475f48ecc0450f6d9ca8359297fc3b3c9c0381a..e5a6af131be7735e8b56a985a5be42c6bb9e8c50 100644 (file)
@@ -1878,6 +1878,11 @@ void RGWDeleteBucket::execute()
     }
   }
 
+  op_ret = rgw_bucket_sync_user_stats(store, s->user.user_id, s->bucket);
+  if ( op_ret < 0) {
+     ldout(s->cct, 1) << "WARNING: failed to sync user stats before bucket delete: op_ret= " << op_ret << dendl;
+  }
+
   op_ret = store->delete_bucket(s->bucket, ot);
   if (op_ret == 0) {
     op_ret = rgw_unlink_bucket(store, s->user.user_id, s->bucket.tenant,