summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2014-04-05 00:47:52 (GMT)
committerIlya Dryomov <idryomov@redhat.com>2014-10-14 17:03:32 (GMT)
commitbef95455a44e2533fcea376740bb1a5cbd71269f (patch)
treeefa29053bad92a2b961dbc702351f73e7e27678a
parent3c5df89367761d09d76454a2c4301a73bf2d46ce (diff)
downloadlinux-bef95455a44e2533fcea376740bb1a5cbd71269f.tar.xz
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>
-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);