| From bae818ee1577c27356093901a0ea48f672eda514 Mon Sep 17 00:00:00 2001 |
| From: Ronny Hegewald <ronny.hegewald@online.de> |
| Date: Thu, 15 Oct 2015 18:50:46 +0000 |
| Subject: rbd: require stable pages if message data CRCs are enabled |
| |
| From: Ronny Hegewald <ronny.hegewald@online.de> |
| |
| commit bae818ee1577c27356093901a0ea48f672eda514 upstream. |
| |
| rbd requires stable pages, as it performs a crc of the page data before |
| they are send to the OSDs. |
| |
| But since kernel 3.9 (patch 1d1d1a767206fbe5d4c69493b7e6d2a8d08cc0a0 |
| "mm: only enforce stable page writes if the backing device requires |
| it") it is not assumed anymore that block devices require stable pages. |
| |
| This patch sets the necessary flag to get stable pages back for rbd. |
| |
| In a ceph installation that provides multiple ext4 formatted rbd |
| devices "bad crc" messages appeared regularly (ca 1 message every 1-2 |
| minutes on every OSD that provided the data for the rbd) in the |
| OSD-logs before this patch. After this patch this messages are pretty |
| much gone (only ca 1-2 / month / OSD). |
| |
| Signed-off-by: Ronny Hegewald <Ronny.Hegewald@online.de> |
| [idryomov@gmail.com: require stable pages only in crc case, changelog] |
| [idryomov@gmail.com: backport to 3.18-4.2: context] |
| Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/block/rbd.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/block/rbd.c |
| +++ b/drivers/block/rbd.c |
| @@ -3819,6 +3819,9 @@ static int rbd_init_disk(struct rbd_devi |
| q->limits.discard_zeroes_data = 1; |
| |
| blk_queue_merge_bvec(q, rbd_merge_bvec); |
| + if (!ceph_test_opt(rbd_dev->rbd_client->client, NOCRC)) |
| + q->backing_dev_info.capabilities |= BDI_CAP_STABLE_WRITES; |
| + |
| disk->queue = q; |
| |
| q->queuedata = rbd_dev; |