summaryrefslogtreecommitdiffstats
path: root/drivers/block/rbd.c
diff options
context:
space:
mode:
authorJosh Durgin <josh.durgin@inktank.com>2014-04-05 02:47:52 +0200
committerIlya Dryomov <idryomov@redhat.com>2014-10-14 19:03:32 +0200
commitbef95455a44e2533fcea376740bb1a5cbd71269f (patch)
treeefa29053bad92a2b961dbc702351f73e7e27678a /drivers/block/rbd.c
parentrbd: read image size for discard check safely (diff)
downloadlinux-bef95455a44e2533fcea376740bb1a5cbd71269f.tar.xz
linux-bef95455a44e2533fcea376740bb1a5cbd71269f.zip
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 '')
-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 31ace3dd33e4..de1520ccc0d4 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);