osc copypac from project:home:wanghaisu:branches:Kernel:HEAD:KMP package:drbd revision:11
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/drbd?expand=0&rev=118
This commit is contained in:
parent
86d3ab9e4c
commit
466f0dcd56
80
1.patch
Normal file
80
1.patch
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
1. b9b1a5d7 blk_queue_stack_limits is removed
|
||||||
|
2. 63a0895d and 3f649ab72 uninitialized_var() macro removed
|
||||||
|
3. c9ec0524 convert sched_setscheduler to sched_set_fifo*
|
||||||
|
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/drbd_wrappers.h drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/drbd_wrappers.h
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-10-20 10:48:14.274795598 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-10-20 10:48:02.074702666 +0800
|
||||||
|
@@ -523,4 +523,13 @@
|
||||||
|
#define __vmalloc(SIZE, GFP, PRGROT) __vmalloc(SIZE, GFP)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef COMPAT_HAVE_BLK_QUEUE_STACK_LIMITS
|
||||||
|
+#define blk_queue_stack_limits(TOP, BOTTOM) \
|
||||||
|
+ blk_stack_limits(&((TOP)->limits), &((BOTTOM)->limits), 0 )
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#ifndef COMPAT_HAVE_UNINITIALIZED_VAR
|
||||||
|
+#define uninitialized_var(X) (X)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#endif
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blk_queue_stack_limits.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blk_queue_stack_limits.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blk_queue_stack_limits.c 1970-01-01 08:00:00.000000000 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blk_queue_stack_limits.c 2020-10-20 10:48:02.070702635 +0800
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+#include <linux/blkdev.h>
|
||||||
|
+
|
||||||
|
+/* b9b1a5d7 blk_queue_stack_limits is removed */
|
||||||
|
+void dummy(struct request_queue *a, struct request_queue *b)
|
||||||
|
+{
|
||||||
|
+ blk_queue_stack_limits(a, b);
|
||||||
|
+}
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_sched_set_fifo_low.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_sched_set_fifo_low.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_sched_set_fifo_low.c 1970-01-01 08:00:00.000000000 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_sched_set_fifo_low.c 2020-10-20 10:48:02.070702635 +0800
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+/* 6d2b84a4e and c9ec052470 Convert set_scheduler to sched_set_fifo* */
|
||||||
|
+#include <linux/sched.h>
|
||||||
|
+
|
||||||
|
+void test(struct task_struct *p)
|
||||||
|
+{
|
||||||
|
+ sched_set_fifo_low(p);
|
||||||
|
+}
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_uninitialized_var.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_uninitialized_var.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_uninitialized_var.c 1970-01-01 08:00:00.000000000 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_uninitialized_var.c 2020-10-20 10:48:02.070702635 +0800
|
||||||
|
@@ -0,0 +1,10 @@
|
||||||
|
+/* 63a0895d9 uninitialized_var is removed
|
||||||
|
+ * 3f649ab72 uninitialized_var removed in all .c
|
||||||
|
+*/
|
||||||
|
+#include <linux/compiler-gcc.h>
|
||||||
|
+
|
||||||
|
+void test()
|
||||||
|
+{
|
||||||
|
+ unsigned int uninitialized_var(a);
|
||||||
|
+ a = 1;
|
||||||
|
+}
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_receiver.c drbd-9.0.25~0+git.bd41626d/drbd/drbd_receiver.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_receiver.c 2020-10-20 10:48:14.058793953 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_receiver.c 2020-10-20 11:11:32.948922212 +0800
|
||||||
|
@@ -9241,13 +9241,18 @@
|
||||||
|
unsigned int header_size = drbd_header_size(connection);
|
||||||
|
int expect = header_size;
|
||||||
|
bool ping_timeout_active = false;
|
||||||
|
- struct sched_param param = { .sched_priority = 2 };
|
||||||
|
struct drbd_transport *transport = &connection->transport;
|
||||||
|
struct drbd_transport_ops *tr_ops = transport->ops;
|
||||||
|
|
||||||
|
+#ifdef COMPAT_HAVE_SCHED_SET_FIFO_LOW
|
||||||
|
+ sched_set_fifo_low(current);
|
||||||
|
+#else
|
||||||
|
+ struct sched_param param = { .sched_priority = 2 };
|
||||||
|
rv = sched_setscheduler(current, SCHED_RR, ¶m);
|
||||||
|
+
|
||||||
|
if (rv < 0)
|
||||||
|
drbd_err(connection, "drbd_ack_receiver: ERROR set priority, ret=%d\n", rv);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
while (get_t_state(thi) == RUNNING) {
|
||||||
|
drbd_thread_current_set_cpu(thi);
|
139
blk_alloc_queue_make_request.patch
Normal file
139
blk_alloc_queue_make_request.patch
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
Together with generic_make_request change to submit_bio_noacct,
|
||||||
|
patch compat_generic_make_request.patch
|
||||||
|
|
||||||
|
Adapted two upstream changes:
|
||||||
|
c62b37d96b6eb v5.9-rc1~147^2~55
|
||||||
|
move ->make_request_fn to struct
|
||||||
|
block_device_operations
|
||||||
|
f695ca3886ce7 v5.9-rc1~147^2~59
|
||||||
|
remove the request_queue argument
|
||||||
|
from blk_queue_split
|
||||||
|
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_int.h drbd-9.0.25~0+git.bd41626d/drbd/drbd_int.h
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_int.h 2020-10-10 13:00:26.547933412 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_int.h 2020-10-10 13:00:51.932114769 +0800
|
||||||
|
@@ -1838,7 +1838,11 @@
|
||||||
|
#define __drbd_make_request(d,b,k,j) __drbd_make_request(d,b,j)
|
||||||
|
#endif
|
||||||
|
extern void __drbd_make_request(struct drbd_device *, struct bio *, ktime_t, unsigned long);
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+extern blk_qc_t drbd_make_request(struct bio *bio);
|
||||||
|
+#else
|
||||||
|
extern blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* drbd_nl.c */
|
||||||
|
enum suspend_scope {
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/gen_patch_names.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/gen_patch_names.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/gen_patch_names.c 2020-10-10 13:00:26.543933383 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/gen_patch_names.c 2020-10-10 13:00:51.932114769 +0800
|
||||||
|
@@ -83,7 +83,7 @@
|
||||||
|
patch(1, "block_device_operations_release", true, false,
|
||||||
|
COMPAT_DRBD_RELEASE_RETURNS_VOID, "is_void");
|
||||||
|
|
||||||
|
-#if !defined(COMPAT_HAVE_BD_UNLINK_DISK_HOLDER) || defined(COMPAT_HAVE_BD_CLAIM_BY)
|
||||||
|
+#if !defined(COMPAT_HAVE_BD_UNLINK_DISK_HOLDER) || defined(COMPAT_HAVE_BD_CLAIM_BY_DISK)
|
||||||
|
patch(2, "claim_disk", true, false,
|
||||||
|
COMPAT_HAVE_BD_UNLINK_DISK_HOLDER, "link",
|
||||||
|
COMPAT_HAVE_BD_CLAIM_BY_DISK, "claim");
|
||||||
|
@@ -130,11 +130,14 @@
|
||||||
|
patch(1, "blk_queue_make_request", false, true,
|
||||||
|
COMPAT_HAVE_BLK_QUEUE_MAKE_REQUEST, "present");
|
||||||
|
|
||||||
|
+/* together with generic_make_request change to submit_bio_noacct */
|
||||||
|
+#ifdef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
#ifndef COMPAT_HAVE_BLK_QC_T_MAKE_REQUEST
|
||||||
|
patch(2, "make_request", false, false,
|
||||||
|
COMPAT_HAVE_BLK_QC_T_MAKE_REQUEST, "is_blk_qc_t",
|
||||||
|
COMPAT_HAVE_VOID_MAKE_REQUEST, "is_void");
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
patch(1, "blkdev_get_by_path", true, false,
|
||||||
|
COMPAT_HAVE_BLKDEV_GET_BY_PATH, "present");
|
||||||
|
@@ -209,6 +212,8 @@
|
||||||
|
patch(1, "blk_queue_merge_bvec", false, true,
|
||||||
|
COMPAT_HAVE_BLK_QUEUE_MERGE_BVEC, "present");
|
||||||
|
|
||||||
|
+/* together with generic_make_request change to submit_bio_noacct */
|
||||||
|
+#ifdef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
#if !defined(COMPAT_HAVE_BLK_QUEUE_SPLIT_Q_BIO)
|
||||||
|
# if defined(COMPAT_HAVE_BLK_QUEUE_SPLIT_Q_BIO_BIOSET)
|
||||||
|
/* if _BIOSET is true, it's the variant with 3 arguments */
|
||||||
|
@@ -222,6 +227,7 @@
|
||||||
|
NO, "present");
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
patch(1, "security_netlink_recv", false, true,
|
||||||
|
COMPAT_HAVE_SECURITY_NETLINK_RECV, "present");
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blk_queue_split_q_bio.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blk_queue_split_q_bio.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blk_queue_split_q_bio.c 2020-10-10 13:00:26.543933383 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blk_queue_split_q_bio.c 2020-10-10 13:03:31.905257690 +0800
|
||||||
|
@@ -2,5 +2,10 @@
|
||||||
|
|
||||||
|
void dummy(struct request_queue *q, struct bio *bio)
|
||||||
|
{
|
||||||
|
+/* together with generic_make_request change to submit_bio_noacct */
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ blk_queue_split(&bio);
|
||||||
|
+#else
|
||||||
|
blk_queue_split(q, &bio);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_main.c drbd-9.0.25~0+git.bd41626d/drbd/drbd_main.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_main.c 2020-10-10 13:00:26.547933412 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_main.c 2020-10-10 13:00:51.936114797 +0800
|
||||||
|
@@ -161,6 +161,9 @@
|
||||||
|
.owner = THIS_MODULE,
|
||||||
|
.open = drbd_open,
|
||||||
|
.release = drbd_release,
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ .submit_bio = drbd_make_request,
|
||||||
|
+#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
struct bio *bio_alloc_drbd(gfp_t gfp_mask)
|
||||||
|
@@ -3709,7 +3712,11 @@
|
||||||
|
|
||||||
|
init_rwsem(&device->uuid_sem);
|
||||||
|
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ q = blk_alloc_queue(NUMA_NO_NODE);
|
||||||
|
+#else
|
||||||
|
q = blk_alloc_queue(drbd_make_request, NUMA_NO_NODE);
|
||||||
|
+#endif
|
||||||
|
if (!q)
|
||||||
|
goto out_no_q;
|
||||||
|
device->rq_queue = q;
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_req.c drbd-9.0.25~0+git.bd41626d/drbd/drbd_req.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_req.c 2020-10-10 13:00:26.547933412 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_req.c 2020-10-10 13:05:16.018001520 +0800
|
||||||
|
@@ -2183,15 +2183,26 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+blk_qc_t drbd_make_request(struct bio *bio)
|
||||||
|
+{
|
||||||
|
+ struct drbd_device *device = bio->bi_disk->private_data;
|
||||||
|
+#else
|
||||||
|
blk_qc_t drbd_make_request(struct request_queue *q, struct bio *bio)
|
||||||
|
{
|
||||||
|
struct drbd_device *device = (struct drbd_device *) q->queuedata;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef CONFIG_DRBD_TIMING_STATS
|
||||||
|
ktime_t start_kt;
|
||||||
|
#endif
|
||||||
|
unsigned long start_jif;
|
||||||
|
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ blk_queue_split(&bio);
|
||||||
|
+#else
|
||||||
|
blk_queue_split(q, &bio);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (device->cached_err_io) {
|
||||||
|
bio->bi_status = BLK_STS_IOERR;
|
49
compat_generic_make_request.patch
Normal file
49
compat_generic_make_request.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
Upstream ed00aabd5eb9fb44d6aff1173234a2e911b9fead
|
||||||
|
block: rename generic_make_request to submit_bio_noacct
|
||||||
|
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_int.h drbd-9.0.25~0+git.bd41626d/drbd/drbd_int.h
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_int.h 2020-09-19 09:26:23.903673522 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_int.h 2020-09-19 09:34:03.363139586 +0800
|
||||||
|
@@ -2063,7 +2063,11 @@
|
||||||
|
bio->bi_status = BLK_STS_IOERR;
|
||||||
|
bio_endio(bio);
|
||||||
|
} else {
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ submit_bio_noacct(bio);
|
||||||
|
+#else
|
||||||
|
generic_make_request(bio);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_generic_make_request.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_generic_make_request.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_generic_make_request.c 1970-01-01 08:00:00.000000000 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_generic_make_request.c 2020-09-19 09:30:31.729550871 +0800
|
||||||
|
@@ -0,0 +1,11 @@
|
||||||
|
+#include <linux/blkdev.h>
|
||||||
|
+
|
||||||
|
+/* in Commit ed00aabd5eb9fb44d6aff1173234a2e911b9fead
|
||||||
|
+ generic_make_request rename to submit_bio_noacct
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+void foo(void)
|
||||||
|
+{
|
||||||
|
+ struct bio *bio;
|
||||||
|
+ generic_make_request(bio);
|
||||||
|
+}
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_req.c drbd-9.0.25~0+git.bd41626d/drbd/drbd_req.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_req.c 2020-09-19 09:26:23.903673522 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_req.c 2020-09-19 09:35:12.107655181 +0800
|
||||||
|
@@ -1481,7 +1481,11 @@
|
||||||
|
} else if (bio_op(bio) == REQ_OP_DISCARD) {
|
||||||
|
drbd_process_discard_or_zeroes_req(req, EE_TRIM);
|
||||||
|
} else {
|
||||||
|
- generic_make_request(bio);
|
||||||
|
+#ifndef COMPAT_HAVE_GENERIC_MAKE_REQUEST
|
||||||
|
+ submit_bio_noacct(bio);
|
||||||
|
+#else
|
||||||
|
+ generic_make_request(bio);
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
put_ldev(device);
|
||||||
|
} else {
|
@ -40,6 +40,11 @@ Patch3: drbd-fix-zero-metadata-limit-by-page-size-misaligned.patch
|
|||||||
Patch4: compat_remove_pgprot_88dca4c.patch
|
Patch4: compat_remove_pgprot_88dca4c.patch
|
||||||
Patch5: compat_remove_include_vermagic.patch
|
Patch5: compat_remove_include_vermagic.patch
|
||||||
Patch6: compat_remove_kernel_setsockopt.patch
|
Patch6: compat_remove_kernel_setsockopt.patch
|
||||||
|
# Compat to kernel v5.9
|
||||||
|
Patch7: compat_generic_make_request.patch
|
||||||
|
Patch8: blk_alloc_queue_make_request.patch
|
||||||
|
Patch9: remove_congested_fn_congested_data.patch
|
||||||
|
Patch10: 1.patch
|
||||||
Patch99: suse-coccinelle.patch
|
Patch99: suse-coccinelle.patch
|
||||||
#https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py
|
#https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py
|
||||||
BuildRequires: coccinelle >= 1.0.8
|
BuildRequires: coccinelle >= 1.0.8
|
||||||
@ -79,6 +84,10 @@ installed kernel.
|
|||||||
%patch4 -p1
|
%patch4 -p1
|
||||||
%patch5 -p1
|
%patch5 -p1
|
||||||
%patch6 -p1
|
%patch6 -p1
|
||||||
|
%patch7 -p1
|
||||||
|
%patch8 -p1
|
||||||
|
%patch9 -p1
|
||||||
|
%patch10 -p1
|
||||||
%patch99 -p1
|
%patch99 -p1
|
||||||
|
|
||||||
mkdir source
|
mkdir source
|
||||||
|
115
remove_congested_fn_congested_data.patch
Normal file
115
remove_congested_fn_congested_data.patch
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
1. Remove congested_fn and drbd_congested due to
|
||||||
|
21cf866145047f8bfecb38ec8d2fed64464c074f
|
||||||
|
2. Change define of blkdev_get_by_path from fs.h to blkdev.h,
|
||||||
|
3f1266f1f82d7b8c72472a8921e80aa3e611fb62
|
||||||
|
3. Change define of bd_unlink_disk_holder from fs.h to genhd.h,
|
||||||
|
3f1266f1f82d7b8c72472a8921e80aa3e611fb62
|
||||||
|
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/drbd_wrappers.h drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/drbd_wrappers.h
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-10-10 10:50:15.408562371 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/drbd_wrappers.h 2020-10-10 10:50:21.156601464 +0800
|
||||||
|
@@ -143,9 +143,7 @@
|
||||||
|
|
||||||
|
#ifdef COMPAT_HAVE_POINTER_BACKING_DEV_INFO /* >= v4.11 */
|
||||||
|
#define bdi_from_device(device) (device->ldev->backing_bdev->bd_disk->queue->backing_dev_info)
|
||||||
|
-#define init_bdev_info(bdev_info, drbd_congested, device) do { \
|
||||||
|
- (bdev_info)->congested_fn = drbd_congested; \
|
||||||
|
- (bdev_info)->congested_data = device; \
|
||||||
|
+#define init_bdev_info(bdev_info, device) do { \
|
||||||
|
set_bdi_cap_stable_writes(bdev_info->capabilities); \
|
||||||
|
} while(0)
|
||||||
|
#define adjust_ra_pages(q, b) _adjust_ra_pages((q)->backing_dev_info->ra_pages, (b)->backing_dev_info->ra_pages)
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c 2020-10-10 10:50:15.408562371 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c 2020-10-10 10:50:29.488658135 +0800
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
#include <linux/fs.h>
|
||||||
|
+#include <linux/genhd.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_SYSFS
|
||||||
|
void dummy(struct block_device *bdev, struct gendisk *disk)
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blkdev_get_by_path.c drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blkdev_get_by_path.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd-kernel-compat/tests/have_blkdev_get_by_path.c 2020-10-10 10:50:15.408562371 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd-kernel-compat/tests/have_blkdev_get_by_path.c 2020-10-10 10:50:40.432732559 +0800
|
||||||
|
@@ -1,4 +1,5 @@
|
||||||
|
#include <linux/fs.h>
|
||||||
|
+#include <linux/blkdev.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In kernel version 2.6.38-rc1, open_bdev_exclusive() was replaced by
|
||||||
|
diff -Naur drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_main.c drbd-9.0.25~0+git.bd41626d/drbd/drbd_main.c
|
||||||
|
--- drbd-9.0.25~0+git.bd41626d.orig/drbd/drbd_main.c 2020-10-10 10:50:15.412562399 +0800
|
||||||
|
+++ drbd-9.0.25~0+git.bd41626d/drbd/drbd_main.c 2020-10-10 10:50:21.156601464 +0800
|
||||||
|
@@ -3103,63 +3103,6 @@
|
||||||
|
pr_info("module cleanup done.\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
-/**
|
||||||
|
- * drbd_congested() - Callback for the flusher thread
|
||||||
|
- * @congested_data: User data
|
||||||
|
- * @bdi_bits: Bits the BDI flusher thread is currently interested in
|
||||||
|
- *
|
||||||
|
- * Returns 1<<WB_async_congested and/or 1<<WB_sync_congested if we are congested.
|
||||||
|
- */
|
||||||
|
-static int drbd_congested(void *congested_data, int bdi_bits)
|
||||||
|
-{
|
||||||
|
- struct drbd_device *device = congested_data;
|
||||||
|
- struct request_queue *q;
|
||||||
|
- int r = 0;
|
||||||
|
-
|
||||||
|
- if (!may_inc_ap_bio(device)) {
|
||||||
|
- /* DRBD has frozen IO */
|
||||||
|
- r = bdi_bits;
|
||||||
|
- goto out;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (test_bit(CALLBACK_PENDING, &device->resource->flags)) {
|
||||||
|
- r |= (1 << WB_async_congested);
|
||||||
|
- /* Without good local data, we would need to read from remote,
|
||||||
|
- * and that would need the worker thread as well, which is
|
||||||
|
- * currently blocked waiting for that usermode helper to
|
||||||
|
- * finish.
|
||||||
|
- */
|
||||||
|
- if (!get_ldev_if_state(device, D_UP_TO_DATE))
|
||||||
|
- r |= (1 << WB_sync_congested);
|
||||||
|
- else
|
||||||
|
- put_ldev(device);
|
||||||
|
- r &= bdi_bits;
|
||||||
|
- goto out;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (get_ldev(device)) {
|
||||||
|
- q = bdev_get_queue(device->ldev->backing_bdev);
|
||||||
|
- r = bdi_congested(q->backing_dev_info, bdi_bits);
|
||||||
|
- put_ldev(device);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (bdi_bits & (1 << WB_async_congested)) {
|
||||||
|
- struct drbd_peer_device *peer_device;
|
||||||
|
-
|
||||||
|
- rcu_read_lock();
|
||||||
|
- for_each_peer_device_rcu(peer_device, device) {
|
||||||
|
- if (test_bit(NET_CONGESTED, &peer_device->connection->transport.flags)) {
|
||||||
|
- r |= (1 << WB_async_congested);
|
||||||
|
- break;
|
||||||
|
- }
|
||||||
|
- }
|
||||||
|
- rcu_read_unlock();
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
-out:
|
||||||
|
- return r;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static void drbd_init_workqueue(struct drbd_work_queue* wq)
|
||||||
|
{
|
||||||
|
spin_lock_init(&wq->q_lock);
|
||||||
|
@@ -3731,7 +3674,7 @@
|
||||||
|
/* we have no partitions. we contain only ourselves. */
|
||||||
|
device->this_bdev->bd_contains = device->this_bdev;
|
||||||
|
|
||||||
|
- init_bdev_info(q->backing_dev_info, drbd_congested, device);
|
||||||
|
+ init_bdev_info(q->backing_dev_info, device);
|
||||||
|
|
||||||
|
blk_queue_write_cache(q, true, true);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user