Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package drbd for openSUSE:Factory checked in at 2021-11-22 23:04:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/drbd (Old) and /work/SRC/openSUSE:Factory/.drbd.new.1895 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "drbd" Mon Nov 22 23:04:03 2021 rev:96 rq:932872 version:9.0.30~1+git.8e9c0812 Changes: -------- --- /work/SRC/openSUSE:Factory/drbd/drbd.changes 2021-08-02 12:06:01.485643848 +0200 +++ /work/SRC/openSUSE:Factory/.drbd.new.1895/drbd.changes 2021-11-22 23:04:47.153810864 +0100 @@ -1,0 +2,15 @@ +Mon Nov 22 04:38:30 UTC 2021 - nick wang <nw...@suse.com> + +- bsc#1192929, compat to kernel v5.15 +- Remove patch convert_to_blk_alloc_disk.patch (upstream) +- Add patch make_block_holder_optional.patch + Add patch move_kvmalloc_related_to_slab.patch + Add patch polling_to_bio_base.patch + Add patch pass_gend_to_blk_queue_update_readahead.patch + Add patch move_bdi_from_request_queue_to_gendisk.patch + Add patch dax_support.patch + Add patch add_disk_error_handle.patch + Add patch have_void_drbd_submit_bio.patch + Add patch remove_bdgrab.patch + +------------------------------------------------------------------- Old: ---- convert_to_blk_alloc_disk.patch drbd-9.0.30~1+git.10bee2d5.tar.bz2 New: ---- add_disk_error_handle.patch dax_support.patch drbd-9.0.30~1+git.8e9c0812.tar.bz2 have_void_drbd_submit_bio.patch make_block_holder_optional.patch move_bdi_from_request_queue_to_gendisk.patch move_kvmalloc_related_to_slab.patch pass_gend_to_blk_queue_update_readahead.patch polling_to_bio_base.patch remove_bdgrab.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ drbd.spec ++++++ --- /var/tmp/diff_new_pack.QZp4s7/_old 2021-11-22 23:04:47.813808649 +0100 +++ /var/tmp/diff_new_pack.QZp4s7/_new 2021-11-22 23:04:47.817808636 +0100 @@ -24,7 +24,7 @@ %endif %endif Name: drbd -Version: 9.0.30~1+git.10bee2d5 +Version: 9.0.30~1+git.8e9c0812 Release: 0 Summary: Linux driver for the "Distributed Replicated Block Device" License: GPL-2.0-or-later @@ -35,7 +35,15 @@ Source2: Module.supported Source3: drbd_git_revision Patch1: fix-resync-finished-with-syncs-have-bits-set.patch -Patch2: convert_to_blk_alloc_disk.patch +Patch2: make_block_holder_optional.patch +Patch3: move_kvmalloc_related_to_slab.patch +Patch4: polling_to_bio_base.patch +Patch5: pass_gend_to_blk_queue_update_readahead.patch +Patch6: move_bdi_from_request_queue_to_gendisk.patch +Patch7: dax_support.patch +Patch8: add_disk_error_handle.patch +Patch9: have_void_drbd_submit_bio.patch +Patch10: remove_bdgrab.patch Patch99: suse-coccinelle.patch #https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py BuildRequires: coccinelle >= 1.0.8 @@ -71,6 +79,14 @@ %setup -q -n drbd-%{version} %patch1 -p1 %patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 %patch99 -p1 mkdir source ++++++ add_disk_error_handle.patch ++++++ /* {"version":"v5.16-rc1~73", "commit": "e92ab4eda516a5bfd96c087282ebe9521deba4f4", "comment": "drbd: add error handling support for add_disk()"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_main.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_main.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_main.c 2021-11-19 15:36:33.405592808 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_main.c 2021-11-19 15:43:32.799929686 +0800 @@ -3794,7 +3794,10 @@ goto out_remove_peer_device; } - add_disk(disk); + err = add_disk(disk); + if (err) + goto out_cleanup_disk; + device->have_quorum[OLD] = device->have_quorum[NEW] = (resource->res_opts.quorum == QOU_OFF); @@ -3811,6 +3814,8 @@ *p_device = device; return NO_ERROR; +out_cleanup_disk: + blk_cleanup_disk(disk); out_remove_peer_device: list_add_rcu(&tmp, &device->peer_devices); list_del_init(&device->peer_devices); ++++++ dax_support.patch ++++++ /* {"version":"v5.15-rc1~45", "commit": "1b7646014e0d838b06be7288e2dec3262948cc56", "comment": "dax: mark dax_get_by_host static"} */ diff -Naru drbd-9.0.30~1+git.8e9c0812.orig/drbd/Kbuild drbd-9.0.30~1+git.8e9c0812/drbd/Kbuild --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/Kbuild 2021-11-22 10:12:32.660034839 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/Kbuild 2021-11-22 10:15:26.327117285 +0800 @@ -53,6 +53,11 @@ endif endif +ifeq ($(shell grep -e '\<dax_get_by_host\>' \ + $(objtree)/Module.symvers | wc -l),1) +override EXTRA_CFLAGS += -DDAX_GET_BY_HOST_EXPORTED +endif + drbd-$(CONFIG_DEBUG_FS) += drbd_debugfs.o drbd-y += drbd_buildtag.o drbd_bitmap.o drbd_proc.o drbd-y += drbd_sender.o drbd_receiver.o drbd_req.o drbd_actlog.o diff -Naru drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_dax_pmem.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_dax_pmem.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_dax_pmem.c 2021-11-22 10:12:32.668034796 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_dax_pmem.c 2021-11-22 10:32:04.933864379 +0800 @@ -29,6 +29,53 @@ #include "drbd_dax_pmem.h" #include "drbd_meta_data.h" +#ifndef DAX_GET_BY_HOST_EXPORTED +/* From drivers/dax/super.c */ +#include <linux/fs.h> +#include <linux/mm.h> +#include <linux/radix-tree.h> + +#define DAX_HASH_SIZE (PAGE_SIZE / sizeof(struct hlist_head)) +static DEFINE_SPINLOCK(dax_host_lock); +static struct hlist_head dax_host_list[DAX_HASH_SIZE]; + +static int dax_host_hash(const char *host) +{ + return hashlen_hash(hashlen_string("DAX", host)) % DAX_HASH_SIZE; +} + +/** + * dax_get_by_host() - temporary lookup mechanism for filesystem-dax + * @host: alternate name for the device registered by a dax driver + */ +struct dax_device *dax_get_by_host(const char *host) +{ + struct dax_device *dax_dev, *found = NULL; + int hash, id; + + if (!host) + return NULL; + + hash = dax_host_hash(host); + + id = dax_read_lock(); + spin_lock(&dax_host_lock); + hlist_for_each_entry(dax_dev, &dax_host_list[hash], list) { + if (!dax_alive(dax_dev) + || strcmp(host, dax_dev->host) != 0) + continue; + + if (igrab(&dax_dev->inode)) + found = dax_dev; + break; + } + spin_unlock(&dax_host_lock); + dax_read_unlock(id); + + return found; +} +#endif + static int map_superblock_for_dax(struct drbd_backing_dev *bdev, struct dax_device *dax_dev) { long want = 1; diff -Naru drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_dax_pmem.h drbd-9.0.30~1+git.8e9c0812/drbd/drbd_dax_pmem.h --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_dax_pmem.h 2021-11-22 10:12:32.668034796 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_dax_pmem.h 2021-11-22 10:32:22.449772726 +0800 @@ -36,4 +36,29 @@ #endif /* IS_ENABLED(CONFIG_DEV_DAX_PMEM) */ +#ifndef DAX_GET_BY_HOST_EXPORTED +#include <linux/cdev.h> +/** + * struct dax_device - anchor object for dax services + * @inode: core vfs + * @cdev: optional character interface for "device dax" + * @host: optional name for lookups where the device path is not available + * @private: dax driver private data + * @flags: state and boolean properties + */ +struct dax_device { + struct hlist_node list; + struct inode inode; + struct cdev cdev; + const char *host; + void *private; + unsigned long flags; + const struct dax_operations *ops; +}; + +#define DAX_HASH_SIZE (PAGE_SIZE / sizeof(struct hlist_head)) + +extern struct dax_device *dax_get_by_host(const char *); +#endif + #endif /* DRBD_DAX_H */ ++++++ drbd-9.0.30~1+git.10bee2d5.tar.bz2 -> drbd-9.0.30~1+git.8e9c0812.tar.bz2 ++++++ ++++ 2464 lines of diff (skipped) ++++++ drbd_git_revision ++++++ --- /var/tmp/diff_new_pack.QZp4s7/_old 2021-11-22 23:04:48.265807132 +0100 +++ /var/tmp/diff_new_pack.QZp4s7/_new 2021-11-22 23:04:48.269807119 +0100 @@ -1 +1 @@ -GIT-hash: 10bee2d57dcbc48836ac61bad434590b7b82917e +GIT-hash: 8e9c08122ae738eec189abe402ba7358b57182cd ++++++ have_void_drbd_submit_bio.patch ++++++ /* {"version":"v5.16-rc1~75", "commit": "3e08773c3841e9db7a520908cc2b136a77d275ff", "comment": "block: switch polling to be bio based"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_void_drbd_submit_bio.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_void_drbd_submit_bio.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_void_drbd_submit_bio.c 1970-01-01 08:00:00.000000000 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_void_drbd_submit_bio.c 2021-11-19 16:52:39.349253992 +0800 @@ -0,0 +1,8 @@ +/* { "version": "v5.16-rc1", "commit": "3e08773c3841e9db7a520908cc2b136a77d275ff", "comment": "block: switch polling to be bio based", "author": "Christoph Hellwig <h...@lst.de>", "date": "Tue Oct 12 13:12:24 2021 +0200" } */ + +#include <linux/bio.h> + +void foo(struct bio *b) +{ + b->bi_cookie = 0; +} diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_int.h drbd-9.0.30~1+git.8e9c0812/drbd/drbd_int.h --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_int.h 2021-11-19 16:43:47.011257061 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_int.h 2021-11-19 16:57:32.204153502 +0800 @@ -1848,7 +1848,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); +#ifdef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO +extern void drbd_submit_bio(struct bio *bio); +#else extern blk_qc_t drbd_submit_bio(struct bio *bio); +#endif /* drbd_nl.c */ enum suspend_scope { diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_req.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_req.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_req.c 2021-11-19 16:43:47.011257061 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_req.c 2021-11-19 16:54:34.460820836 +0800 @@ -2186,7 +2186,11 @@ return false; } +#ifdef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO +void drbd_submit_bio(struct bio *bio) +#else blk_qc_t drbd_submit_bio(struct bio *bio) +#endif { struct drbd_device *device = bio->bi_bdev->bd_disk->private_data; #ifdef CONFIG_DRBD_TIMING_STATS @@ -2197,7 +2201,9 @@ if (drbd_fail_request_early(device, bio)) { bio->bi_status = BLK_STS_IOERR; bio_endio(bio); +#ifndef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO return BLK_QC_T_NONE; +#endif } blk_queue_split(&bio); @@ -2205,7 +2211,9 @@ if (device->cached_err_io) { bio->bi_status = BLK_STS_IOERR; bio_endio(bio); +#ifndef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO return BLK_QC_T_NONE; +#endif } /* This is both an optimization: READ of size 0, nothing to do @@ -2217,7 +2225,9 @@ if (bio_op(bio) == REQ_OP_READ && bio->bi_iter.bi_size == 0) { WARN_ONCE(1, "size zero read from upper layers"); bio_endio(bio); +#ifndef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO return BLK_QC_T_NONE; +#endif } ktime_get_accounting(start_kt); @@ -2225,7 +2235,9 @@ __drbd_make_request(device, bio, start_kt, start_jif); +#ifndef COMPAT_HAVE_VOID_DRBD_SUBMIT_BIO return BLK_QC_T_NONE; +#endif } static unsigned long time_min_in_future(unsigned long now, ++++++ make_block_holder_optional.patch ++++++ /* {"version":"v5.15-rc1~161", "commit": "c66fd019713e9cf7d6f1243c378cd177d01fe18a", "comment": "block: make the block holder code optional"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_bd_claim_by_disk.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_bd_claim_by_disk.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_bd_claim_by_disk.c 2021-11-18 11:27:38.503118180 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_bd_claim_by_disk.c 2021-11-18 11:28:30.370889421 +0800 @@ -1,6 +1,6 @@ #include <linux/fs.h> -#ifdef CONFIG_SYSFS +#if defined(CONFIG_SYSFS) || defined(CONFIG_BLOCK_HOLDER_DEPRECATED) void dummy(struct block_device *bdev, void *holder, struct gendisk *disk) { bd_claim_by_disk(bdev, holder, disk); diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c 2021-11-18 11:27:38.503118180 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_bd_unlink_disk_holder.c 2021-11-18 13:15:26.943553840 +0800 @@ -2,12 +2,12 @@ #include <linux/fs.h> #include <linux/blkdev.h> -#ifdef CONFIG_SYSFS +#if defined(CONFIG_SYSFS) || defined(CONFIG_BLOCK_HOLDER_DEPRECATED) void dummy(struct block_device *bdev, struct gendisk *disk) { /* also check that we are not between 49731ba and e09b457, * where there was a singular bd_holder_disk for a short time */ - if (!list_empty(&bdev->bd_holder_disks)) + /* if (!list_empty(&bdev->bd_holder_disks)) */ bd_unlink_disk_holder(bdev, disk); } #endif ++++++ move_bdi_from_request_queue_to_gendisk.patch ++++++ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/gen_patch_names.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/gen_patch_names.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/gen_patch_names.c 2021-11-22 14:00:22.158226957 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/gen_patch_names.c 2021-11-22 14:10:47.141520981 +0800 @@ -396,8 +396,10 @@ COMPAT_HAVE_BLK_QUEUE_UPDATE_READAHEAD, "present"); #endif +#ifndef COMPAT_HAVE_GENDISK_BACKING_DEV_INFO patch(1, "backing_dev_info", true, false, COMPAT_HAVE_POINTER_BACKING_DEV_INFO, "is_pointer"); +#endif patch(1, "sendpage_ok", true, false, COMPAT_HAVE_SENDPAGE_OK, "present"); diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_gendisk_backing_dev_info.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_gendisk_backing_dev_info.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_gendisk_backing_dev_info.c 1970-01-01 08:00:00.000000000 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_gendisk_backing_dev_info.c 2021-11-22 14:08:58.564950244 +0800 @@ -0,0 +1,11 @@ +/* { "version": "v5.15-rc1~161", "commit": "edb0872f44ec9976ea6d052cb4b93cd2d23ac2ba", "comment": "block: move the bdi from the request_queue to the gendisk", "author": "Christoph Hellwig <h...@lst.de>", "date": "Mon Aug 9 16:17:43 2021 +0200" } */ + + +#include <linux/genhd.h> +#include <linux/backing-dev-defs.h> + +void dummy(struct gendisk *gd) +{ + struct backing_dev_info *b; + b = gd->bdi; +} diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c 2021-11-22 14:00:22.158226957 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c 2021-11-22 14:40:51.131336874 +0800 @@ -5594,7 +5594,9 @@ if (get_ldev(device)) { struct drbd_md *md = &device->ldev->md; u64 *history_uuids = (u64 *)s->history_uuids; +#ifndef COMPAT_HAVE_GENDISK_BACKING_DEV_INFO struct request_queue *q; +#endif int n; spin_lock_irq(&md->uuid_lock); @@ -5606,11 +5608,18 @@ spin_unlock_irq(&md->uuid_lock); s->dev_disk_flags = md->flags; +#ifndef COMPAT_HAVE_GENDISK_BACKING_DEV_INFO q = bdev_get_queue(device->ldev->backing_bdev); s->dev_lower_blocked = bdi_congested(q->backing_dev_info, (1 << WB_async_congested) | (1 << WB_sync_congested)); +#else + s->dev_lower_blocked = + bdi_congested(device->ldev->backing_bdev->bd_disk->bdi, + (1 << WB_async_congested) | + (1 << WB_sync_congested)); +#endif put_ldev(device); } s->dev_size = get_capacity(device->vdisk); diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_req.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_req.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_req.c 2021-11-22 14:00:22.158226957 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_req.c 2021-11-22 14:15:43.103076717 +0800 @@ -1148,13 +1148,19 @@ struct drbd_peer_device *peer_device, sector_t sector, enum drbd_read_balancing rbm) { +#ifndef COMPAT_HAVE_GENDISK_BACKING_DEV_INFO struct backing_dev_info *bdi; +#endif int stripe_shift; switch (rbm) { case RB_CONGESTED_REMOTE: +#ifndef COMPAT_HAVE_GENDISK_BACKING_DEV_INFO bdi = device->ldev->backing_bdev->bd_disk->queue->backing_dev_info; return bdi_read_congested(bdi); +#else + return bdi_read_congested(device->ldev->backing_bdev->bd_disk->bdi); +#endif case RB_LEAST_PENDING: return atomic_read(&device->local_cnt) > atomic_read(&peer_device->ap_pending_cnt) + atomic_read(&peer_device->rs_pending_cnt); ++++++ move_kvmalloc_related_to_slab.patch ++++++ /* {"version":"v5.16-rc1~106", "commit": "8587ca6f34152ea650bad4b2db68456601159024", "comment": "mm: move kvmalloc-related functions to slab.h"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_kvfree.c drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_kvfree.c --- drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_kvfree.c 2021-11-09 22:43:17.000000000 +0800 +++ drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_kvfree.c 2021-11-18 13:32:39.783138887 +0800 @@ -1,4 +1,5 @@ #include <linux/mm.h> +#include <linux/slab.h> void foo(void) { kvfree(NULL); ++++++ pass_gend_to_blk_queue_update_readahead.patch ++++++ /* {"version":"v5.15-rc1~161", "commit": ""471aa704db4904f7af5a50019ca3b5b018c0cf62, "comment": "block: pass a gendisk to blk_queue_update_readahead"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/gen_patch_names.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/gen_patch_names.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/gen_patch_names.c 2021-11-19 12:56:56.962529304 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/gen_patch_names.c 2021-11-19 12:58:45.370112678 +0800 @@ -391,8 +391,10 @@ patch(1, "wb_congested_enum", true, false, COMPAT_HAVE_WB_CONGESTED_ENUM, "present"); +#ifndef COMPAT_HAVE_DISK_UPDATE_READAHEAD patch(1, "blk_queue_update_readahead", true, false, COMPAT_HAVE_BLK_QUEUE_UPDATE_READAHEAD, "present"); +#endif patch(1, "backing_dev_info", true, false, COMPAT_HAVE_POINTER_BACKING_DEV_INFO, "is_pointer"); diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_disk_update_readahead.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_disk_update_readahead.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_disk_update_readahead.c 1970-01-01 08:00:00.000000000 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_disk_update_readahead.c 2021-11-19 12:59:10.194017276 +0800 @@ -0,0 +1,9 @@ +/* { "version": "v5.16", "commit": "471aa704db4904f7af5a50019ca3b5b018c0cf62", "comment": "block: pass a gendisk to blk_queue_update_readahead", "author": "Christoph Hellwig <h...@lst.de>", "date": "Mon Aug 9 16:17:41 2021 +0200" } */ + +#include <linux/genhd.h> +#include <linux/blkdev.h> + +void foo(struct gendisk *d) +{ + disk_update_readahead(d); +} diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c 2021-11-19 12:56:56.966529288 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c 2021-11-19 13:00:37.777680684 +0800 @@ -2124,7 +2124,11 @@ if (b) { blk_stack_limits(&q->limits, &b->limits, 0); +#ifdef COMPAT_HAVE_DISK_UPDATE_READAHEAD + disk_update_readahead(device->vdisk); +#else blk_queue_update_readahead(q); +#endif } fixup_discard_if_not_supported(q); fixup_write_zeroes(device, q); ++++++ polling_to_bio_base.patch ++++++ /* {"version":"v5.16-rc1~75", "commit": "3e08773c3841e9db7a520908cc2b136a77d275ff", "comment": "block: switch polling to be bio based"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_submit_bio_noacct.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_submit_bio_noacct.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd-kernel-compat/tests/have_submit_bio_noacct.c 2021-11-18 13:33:44.434862535 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd-kernel-compat/tests/have_submit_bio_noacct.c 2021-11-18 16:47:31.764019596 +0800 @@ -4,7 +4,5 @@ void foo(struct bio *bio) { - blk_qc_t result; - - result = submit_bio_noacct(bio); + submit_bio_noacct(bio); } ++++++ remove_bdgrab.patch ++++++ /* {"version":"v5.15-rc1~161", "commit": "14cf1dbb55bb07427babee425fd2a8a9300737cc", "comment": "block: remove bdgrab"} */ diff -Naur drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c --- drbd-9.0.30~1+git.8e9c0812.orig/drbd/drbd_nl.c 2021-11-22 12:32:17.202848720 +0800 +++ drbd-9.0.30~1+git.8e9c0812/drbd/drbd_nl.c 2021-11-22 12:32:57.719098447 +0800 @@ -1038,10 +1038,7 @@ } else /* (role == R_SECONDARY) */ { down(&resource->state_sem); idr_for_each_entry(&resource->devices, device, vnr) { - bdev = bdgrab(device->vdisk->part0); - if (bdev) - fsync_bdev(bdev); - bdput(bdev); + fsync_bdev(bdev); flush_workqueue(device->submit.wq); }