summaryrefslogtreecommitdiffstats
path: root/drivers/block/rbd.c
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2014-04-04 17:47:52 -0700
committerIlya Dryomov <idryomov@redhat.com>2014-10-14 21:03:32 +0400
commitbef95455a44e2533fcea376740bb1a5cbd71269f (patch)
treeefa29053bad92a2b961dbc702351f73e7e27678a /drivers/block/rbd.c
parent3c5df89367761d09d76454a2c4301a73bf2d46ce (diff)
downloadop-kernel-dev-bef95455a44e2533fcea376740bb1a5cbd71269f.zip
op-kernel-dev-bef95455a44e2533fcea376740bb1a5cbd71269f.tar.gz
rbd: fix snapshot context reference count for discards
Discards take a reference to the snapshot context of an image when they are created. This reference needs to be cleaned up when the request is done just as it is for regular writes. Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'drivers/block/rbd.c')
-rw-r--r--drivers/block/rbd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 31ace3d..de1520c 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -2170,7 +2170,8 @@ static void rbd_img_request_destroy(struct kref *kref)
rbd_dev_parent_put(img_request->rbd_dev);
}
- if (img_request_write_test(img_request))
+ if (img_request_write_test(img_request) ||
+ img_request_discard_test(img_request))
ceph_put_snap_context(img_request->snapc);
kmem_cache_free(rbd_img_request_cache, img_request);
OpenPOWER on IntegriCloud