8cb897e5f9
- drbd: build error against kernel v5.19 (bsc#1202600) - add patch: + bsc-1202600_01-remove-QUEUE_FLAG_DISCARD.patch + bsc-1202600_02-dax-introduce-DAX_RECOVERY_WRITE-dax-access-mode.patch + bsc-1202600_03-block-decouple-REQ_OP_SECURE_ERASE-from-REQ_OP_DISCA.patch + bsc-1202600_04-remove-assign_p_sizes_qlim.patch - For rpmbuild warning, modify symlink /usr/sbin/rcdrbd to relative path + drbd.spec OBS-URL: https://build.opensuse.org/request/show/998745 OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=139
100 lines
3.9 KiB
Diff
100 lines
3.9 KiB
Diff
/* This patch is related with following upstream kernel commit. */
|
|
|
|
From 40349d0e16cedd0de561f59752c3249780fb749b Mon Sep 17 00:00:00 2001
|
|
From: Christoph Hellwig <hch@lst.de>
|
|
Date: Fri, 15 Apr 2022 06:52:35 +0200
|
|
Subject: [PATCH] drbd: remove assign_p_sizes_qlim
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Fold each branch into its only caller.
|
|
|
|
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Acked-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
|
|
Link: https://lore.kernel.org/r/20220415045258.199825-5-hch@lst.de
|
|
Signed-off-by: Jens Axboe <axboe@kernel.dk>
|
|
---
|
|
|
|
diff -Nupr a/drbd/drbd_main.c b/drbd/drbd_main.c
|
|
--- a/drbd/drbd_main.c 2022-08-22 23:16:08.082402396 +0800
|
|
+++ b/drbd/drbd_main.c 2022-08-22 23:22:31.292772570 +0800
|
|
@@ -1565,31 +1565,6 @@ int drbd_attach_peer_device(struct drbd_
|
|
return err;
|
|
}
|
|
|
|
-/* communicated if (agreed_features & DRBD_FF_WSAME) */
|
|
-static void assign_p_sizes_qlim(struct drbd_device *device, struct p_sizes *p, struct request_queue *q)
|
|
-{
|
|
- if (q) {
|
|
- p->qlim->physical_block_size = cpu_to_be32(queue_physical_block_size(q));
|
|
- p->qlim->logical_block_size = cpu_to_be32(queue_logical_block_size(q));
|
|
- p->qlim->alignment_offset = cpu_to_be32(queue_alignment_offset(q));
|
|
- p->qlim->io_min = cpu_to_be32(queue_io_min(q));
|
|
- p->qlim->io_opt = cpu_to_be32(queue_io_opt(q));
|
|
- p->qlim->discard_enabled = !!bdev_max_discard_sectors(device->ldev->backing_bdev);
|
|
- p->qlim->discard_zeroes_data = queue_discard_zeroes_data(q);
|
|
- p->qlim->write_same_capable = !!q->limits.max_write_same_sectors;
|
|
- } else {
|
|
- q = device->rq_queue;
|
|
- p->qlim->physical_block_size = cpu_to_be32(queue_physical_block_size(q));
|
|
- p->qlim->logical_block_size = cpu_to_be32(queue_logical_block_size(q));
|
|
- p->qlim->alignment_offset = 0;
|
|
- p->qlim->io_min = cpu_to_be32(queue_io_min(q));
|
|
- p->qlim->io_opt = cpu_to_be32(queue_io_opt(q));
|
|
- p->qlim->discard_enabled = 0;
|
|
- p->qlim->discard_zeroes_data = 0;
|
|
- p->qlim->write_same_capable = 0;
|
|
- }
|
|
-}
|
|
-
|
|
int drbd_send_sizes(struct drbd_peer_device *peer_device,
|
|
uint64_t u_size_diskless, enum dds_flags flags)
|
|
{
|
|
@@ -1610,7 +1585,9 @@ int drbd_send_sizes(struct drbd_peer_dev
|
|
|
|
memset(p, 0, packet_size);
|
|
if (get_ldev_if_state(device, D_NEGOTIATING)) {
|
|
- struct request_queue *q = bdev_get_queue(device->ldev->backing_bdev);
|
|
+ struct block_device *bdev = device->ldev->backing_bdev;
|
|
+ struct request_queue *q = bdev_get_queue(bdev);
|
|
+
|
|
d_size = drbd_get_max_capacity(device, device->ldev, false);
|
|
rcu_read_lock();
|
|
u_size = rcu_dereference(device->ldev->disk_conf)->disk_size;
|
|
@@ -1618,14 +1595,32 @@ int drbd_send_sizes(struct drbd_peer_dev
|
|
q_order_type = drbd_queue_order_type(device);
|
|
max_bio_size = queue_max_hw_sectors(q) << 9;
|
|
max_bio_size = min(max_bio_size, DRBD_MAX_BIO_SIZE);
|
|
- assign_p_sizes_qlim(device, p, q);
|
|
+ p->qlim->physical_block_size =
|
|
+ cpu_to_be32(bdev_physical_block_size(bdev));
|
|
+ p->qlim->logical_block_size =
|
|
+ cpu_to_be32(bdev_logical_block_size(bdev));
|
|
+ p->qlim->alignment_offset =
|
|
+ cpu_to_be32(bdev_alignment_offset(bdev));
|
|
+ p->qlim->io_min = cpu_to_be32(bdev_io_min(bdev));
|
|
+ p->qlim->io_opt = cpu_to_be32(bdev_io_opt(bdev));
|
|
+ p->qlim->discard_enabled = !!bdev_max_discard_sectors(bdev);
|
|
put_ldev(device);
|
|
} else {
|
|
+ struct request_queue *q = device->rq_queue;
|
|
+
|
|
+ p->qlim->physical_block_size =
|
|
+ cpu_to_be32(queue_physical_block_size(q));
|
|
+ p->qlim->logical_block_size =
|
|
+ cpu_to_be32(queue_logical_block_size(q));
|
|
+ p->qlim->alignment_offset = 0;
|
|
+ p->qlim->io_min = cpu_to_be32(queue_io_min(q));
|
|
+ p->qlim->io_opt = cpu_to_be32(queue_io_opt(q));
|
|
+ p->qlim->discard_enabled = 0;
|
|
+
|
|
d_size = 0;
|
|
u_size = u_size_diskless;
|
|
q_order_type = QUEUE_ORDERED_NONE;
|
|
max_bio_size = DRBD_MAX_BIO_SIZE; /* ... multiple BIOs per peer_request */
|
|
- assign_p_sizes_qlim(device, p, NULL);
|
|
}
|
|
|
|
if (peer_device->connection->agreed_pro_version <= 94)
|