Hi Bruce,
This patch seems to fix the parted ptest problems, but now util-linux
ptest is failing :-(
Also seems to be partition resize related:
AssertionError: Failed ptests:
{'util-linux': ['fdisk:_gpt-resize']}
Steve
On Thu, Mar 7, 2024 at 9:34 AM Bruce Ashfield <[email protected]> wrote:
>
> From: Bruce Ashfield <[email protected]>
>
> Signed-off-by: Bruce Ashfield <[email protected]>
> ---
> ...partitions-if-GD_SUPPRESS_PART_SCAN-.patch | 43 +++++++++
> ...-support-partitions-without-scanning.patch | 87 +++++++++++++++++++
> meta/recipes-kernel/linux/linux-yocto_5.15.bb | 4 +
> 3 files changed, 134 insertions(+)
> create mode 100644
> meta/recipes-kernel/linux/files/0001-block-don-t-add-partitions-if-GD_SUPPRESS_PART_SCAN-.patch
> create mode 100644
> meta/recipes-kernel/linux/files/0001-block-loop-support-partitions-without-scanning.patch
>
> diff --git
> a/meta/recipes-kernel/linux/files/0001-block-don-t-add-partitions-if-GD_SUPPRESS_PART_SCAN-.patch
>
> b/meta/recipes-kernel/linux/files/0001-block-don-t-add-partitions-if-GD_SUPPRESS_PART_SCAN-.patch
> new file mode 100644
> index 0000000000..cde4f317e9
> --- /dev/null
> +++
> b/meta/recipes-kernel/linux/files/0001-block-don-t-add-partitions-if-GD_SUPPRESS_PART_SCAN-.patch
> @@ -0,0 +1,43 @@
> +From 748008e1da926a814cc0a054c81ca614408b1b0c Mon Sep 17 00:00:00 2001
> +From: Ming Lei <[email protected]>
> +Date: Tue, 23 Aug 2022 18:38:19 +0800
> +Subject: [PATCH] block: don't add partitions if GD_SUPPRESS_PART_SCAN is set
> +
> +Commit b9684a71fca7 ("block, loop: support partitions without scanning")
> +adds GD_SUPPRESS_PART_SCAN for replacing part function of
> +GENHD_FL_NO_PART. But looks blk_add_partitions() is missed, since
> +loop doesn't want to add partitions if GENHD_FL_NO_PART was set.
> +And it causes regression on libblockdev (as called from udisks) which
> +operates with the LO_FLAGS_PARTSCAN.
> +
> +Fixes the issue by not adding partitions if GD_SUPPRESS_PART_SCAN is
> +set.
> +
> +Upstream-Status: Backport [748008e1da926a814cc0a054c81ca614408b1b0c]
> +
> +Fixes: b9684a71fca7 ("block, loop: support partitions without scanning")
> +Signed-off-by: Ming Lei <[email protected]>
> +Reviewed-by: Christoph Hellwig <[email protected]>
> +Link: https://lore.kernel.org/r/[email protected]
> +Signed-off-by: Jens Axboe <[email protected]>
> +---
> + block/partitions/core.c | 3 +++
> + 1 file changed, 3 insertions(+)
> +
> +diff --git a/block/partitions/core.c b/block/partitions/core.c
> +index fc1d70384825..b8112f52d388 100644
> +--- a/block/partitions/core.c
> ++++ b/block/partitions/core.c
> +@@ -596,6 +596,9 @@ static int blk_add_partitions(struct gendisk *disk)
> + if (disk->flags & GENHD_FL_NO_PART)
> + return 0;
> +
> ++ if (test_bit(GD_SUPPRESS_PART_SCAN, &disk->state))
> ++ return 0;
> ++
> + state = check_partition(disk);
> + if (!state)
> + return 0;
> +--
> +2.39.2
> +
> diff --git
> a/meta/recipes-kernel/linux/files/0001-block-loop-support-partitions-without-scanning.patch
>
> b/meta/recipes-kernel/linux/files/0001-block-loop-support-partitions-without-scanning.patch
> new file mode 100644
> index 0000000000..9522c2d2cc
> --- /dev/null
> +++
> b/meta/recipes-kernel/linux/files/0001-block-loop-support-partitions-without-scanning.patch
> @@ -0,0 +1,87 @@
> +From ea6bf87558eb534ded532cfa622b575c1f39e3d6 Mon Sep 17 00:00:00 2001
> +From: Christoph Hellwig <[email protected]>
> +Date: Fri, 27 May 2022 07:58:06 +0200
> +Subject: [PATCH] block, loop: support partitions without scanning
> +
> +Historically we did distinguish between a flag that surpressed partition
> +scanning, and a combinations of the minors variable and another flag if
> +any partitions were supported. This was generally confusing and doesn't
> +make much sense, but some corner case uses of the loop driver actually
> +do want to support manually added partitions on a device that does not
> +actively scan for partitions. To make things worsee the loop driver
> +also wants to dynamically toggle the scanning for partitions on a live
> +gendisk, which makes the disk->flags updates non-atomic.
> +
> +Introduce a new GD_SUPPRESS_PART_SCAN bit in disk->state that disables
> +just scanning for partitions, and toggle that instead of GENHD_FL_NO_PART
> +in the loop driver.
> +
> +Upstream-Status: Backport [b9684a71fca793213378dd410cd11675d973eaa1]
> +
> +Fixes: 1ebe2e5f9d68 ("block: remove GENHD_FL_EXT_DEVT")
> +Reported-by: Ming Lei <[email protected]>
> +Signed-off-by: Christoph Hellwig <[email protected]>
> +Reviewed-by: Ming Lei <[email protected]>
> +Link: https://lore.kernel.org/r/[email protected]
> +Signed-off-by: Jens Axboe <[email protected]>
> +Signed-off-by: Bruce Ashfield <[email protected]>
> +---
> + drivers/block/loop.c | 8 ++++----
> + include/linux/blkdev.h | 1 +
> + 2 files changed, 5 insertions(+), 4 deletions(-)
> +
> +diff --git a/drivers/block/loop.c b/drivers/block/loop.c
> +index 4769caab9ff9..a76302450c46 100644
> +--- a/drivers/block/loop.c
> ++++ b/drivers/block/loop.c
> +@@ -1332,7 +1332,7 @@ static int loop_configure(struct loop_device *lo,
> fmode_t mode,
> + lo->lo_flags |= LO_FLAGS_PARTSCAN;
> + partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
> + if (partscan)
> +- lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
> ++ clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
> +
> + /* enable and uncork uevent now that we are done */
> + dev_set_uevent_suppress(disk_to_dev(lo->lo_disk), 0);
> +@@ -1481,7 +1481,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool
> release)
> + mutex_lock(&lo->lo_mutex);
> + lo->lo_flags = 0;
> + if (!part_shift)
> +- lo->lo_disk->flags |= GENHD_FL_NO_PART;
> ++ set_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
> + lo->lo_state = Lo_unbound;
> + mutex_unlock(&lo->lo_mutex);
> +
> +@@ -1598,7 +1598,7 @@ loop_set_status(struct loop_device *lo, const struct
> loop_info64 *info)
> +
> + if (!err && (lo->lo_flags & LO_FLAGS_PARTSCAN) &&
> + !(prev_lo_flags & LO_FLAGS_PARTSCAN)) {
> +- lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
> ++ clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
> + partscan = true;
> + }
> + out_unlock:
> +@@ -2428,7 +2428,7 @@ static int loop_add(int i)
> + * userspace tools. Parameters like this in general should be avoided.
> + */
> + if (!part_shift)
> +- disk->flags |= GENHD_FL_NO_PART;
> ++ set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
> + disk->flags |= GENHD_FL_EXT_DEVT;
> + atomic_set(&lo->lo_refcnt, 0);
> + mutex_init(&lo->lo_mutex);
> +diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
> +index 905844172cfd..15815f1ced9e 100644
> +--- a/include/linux/blkdev.h
> ++++ b/include/linux/blkdev.h
> +@@ -813,6 +813,7 @@ static inline unsigned int blk_queue_depth(struct
> request_queue *q)
> + */
> + #define BLK_DEFAULT_SG_TIMEOUT (60 * HZ)
> + #define BLK_MIN_SG_TIMEOUT (7 * HZ)
> ++#define GD_SUPPRESS_PART_SCAN 5
> +
> + struct rq_map_data {
> + struct page **pages;
> +--
> +2.39.2
> +
> diff --git a/meta/recipes-kernel/linux/linux-yocto_5.15.bb
> b/meta/recipes-kernel/linux/linux-yocto_5.15.bb
> index 1c6b3d1112..17d36524f7 100644
> --- a/meta/recipes-kernel/linux/linux-yocto_5.15.bb
> +++ b/meta/recipes-kernel/linux/linux-yocto_5.15.bb
> @@ -38,6 +38,10 @@ KBRANCH:class-devupstream = "v5.15/base"
> SRC_URI =
> "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
>
> git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.15;destsuffix=${KMETA}"
>
> +SRC_URI +=
> "file://0001-block-don-t-add-partitions-if-GD_SUPPRESS_PART_SCAN-.patch"
> +SRC_URI += "file://0001-block-loop-support-partitions-without-scanning.patch"
> +
> +
> LIC_FILES_CHKSUM = "file://COPYING;md5=6bc538ed5bd9a7fc9398086aedcd7e46"
> LINUX_VERSION ?= "5.15.149"
>
> --
> 2.39.2
>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#196825):
https://lists.openembedded.org/g/openembedded-core/message/196825
Mute This Topic: https://lists.openembedded.org/mt/104794844/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-