summaryrefslogtreecommitdiffstats
path: root/src/librados
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2021-09-16 16:20:02 +0200
committerIlya Dryomov <idryomov@gmail.com>2021-09-17 17:10:48 +0200
commit7f72c4a663b5677cb152912820bda82e55920cbb (patch)
tree687337efc88b5e5f5e9e9e99bd74da984291f81f /src/librados
parentlibrados/IoCtxImpl: preserve extra_op_flags when duping (diff)
downloadceph-7f72c4a663b5677cb152912820bda82e55920cbb.tar.xz
ceph-7f72c4a663b5677cb152912820bda82e55920cbb.zip
librados/IoCtxImpl: apply extra_op_flags to watches and notifies
Prior to e468fc0d3b8c ("osdc/Objecter: remove pool_full_try interface"), librados::IoCtx set_pool_full_try() affected watches and notifies. Resurrect that to allow "rbd rm" to work when the metadata pool is full. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'src/librados')
-rw-r--r--src/librados/IoCtxImpl.cc12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc
index 363ac7ee6d5..b9a73c87ca8 100644
--- a/src/librados/IoCtxImpl.cc
+++ b/src/librados/IoCtxImpl.cc
@@ -1651,7 +1651,8 @@ int librados::IoCtxImpl::watch(const object_t& oid, uint64_t *handle,
version_t objver;
C_SaferCond onfinish;
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc, 0);
+ Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
*handle = linger_op->get_cookie();
if (internal) {
linger_op->handle = InternalWatchInfo(this, oid, ctx, ctx2);
@@ -1695,7 +1696,8 @@ int librados::IoCtxImpl::aio_watch(const object_t& oid,
uint32_t timeout,
bool internal)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc, 0);
+ Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
c->io = this;
Context *oncomplete = new C_aio_linger_Complete(c, linger_op, false);
@@ -1781,7 +1783,8 @@ int librados::IoCtxImpl::notify(const object_t& oid, bufferlist& bl,
bufferlist *preply_bl,
char **preply_buf, size_t *preply_buf_len)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc, 0);
+ Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
C_SaferCond notify_finish_cond;
linger_op->on_notify_finish =
@@ -1834,7 +1837,8 @@ int librados::IoCtxImpl::aio_notify(const object_t& oid, AioCompletionImpl *c,
bufferlist *preply_bl, char **preply_buf,
size_t *preply_buf_len)
{
- Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc, 0);
+ Objecter::LingerOp *linger_op = objecter->linger_register(oid, oloc,
+ extra_op_flags);
c->io = this;