* [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag
[not found] <20251220095322.1527664-1-ming.lei@redhat.com>
@ 2025-12-20 9:53 ` Ming Lei
2025-12-22 17:11 ` Caleb Sander Mateos
0 siblings, 1 reply; 4+ messages in thread
From: Ming Lei @ 2025-12-20 9:53 UTC (permalink / raw)
To: Jens Axboe, linux-block
Cc: Caleb Sander Mateos, Uday Shankar, Yoav Cohen, Ming Lei, stable
Add a new feature flag UBLK_F_NO_AUTO_PART_SCAN to allow users to suppress
automatic partition scanning when starting a ublk device.
This is useful for network-backed devices where partition scanning
can cause issues:
- Partition scan triggers synchronous I/O during device startup
- If userspace server crashes during scan, recovery is problematic
- For remotely-managed devices, partition probing may not be needed
Users can manually trigger partition scanning later when appropriate
using standard tools (e.g., partprobe, blockdev --rereadpt).
Reported-by: Yoav Cohen <yoav@nvidia.com>
Link: https://lore.kernel.org/linux-block/DM4PR12MB63280C5637917C071C2F0D65A9A8A@DM4PR12MB6328.namprd12.prod.outlook.com/
Cc: stable@vger.kernel.org
Signed-off-by: Ming Lei <ming.lei@redhat.com>
---
- suggest to backport to stable, which is useful for avoiding problematic
recovery, also the change is simple enough
drivers/block/ublk_drv.c | 16 +++++++++++++---
include/uapi/linux/ublk_cmd.h | 8 ++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
index 78f3e22151b9..ca6ec8ed443f 100644
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -73,7 +73,8 @@
| UBLK_F_AUTO_BUF_REG \
| UBLK_F_QUIESCE \
| UBLK_F_PER_IO_DAEMON \
- | UBLK_F_BUF_REG_OFF_DAEMON)
+ | UBLK_F_BUF_REG_OFF_DAEMON \
+ | UBLK_F_NO_AUTO_PART_SCAN)
#define UBLK_F_ALL_RECOVERY_FLAGS (UBLK_F_USER_RECOVERY \
| UBLK_F_USER_RECOVERY_REISSUE \
@@ -2930,8 +2931,13 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub,
ublk_apply_params(ub);
- /* don't probe partitions if any daemon task is un-trusted */
- if (ub->unprivileged_daemons)
+ /*
+ * Don't probe partitions if:
+ * - any daemon task is un-trusted, or
+ * - user explicitly requested to suppress partition scan
+ */
+ if (ub->unprivileged_daemons ||
+ (ub->dev_info.flags & UBLK_F_NO_AUTO_PART_SCAN))
set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
ublk_get_device(ub);
@@ -2947,6 +2953,10 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub,
if (ret)
goto out_put_cdev;
+ /* allow user to probe partitions from userspace */
+ if (!ub->unprivileged_daemons &&
+ (ub->dev_info.flags & UBLK_F_NO_AUTO_PART_SCAN))
+ clear_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
set_bit(UB_STATE_USED, &ub->state);
out_put_cdev:
diff --git a/include/uapi/linux/ublk_cmd.h b/include/uapi/linux/ublk_cmd.h
index ec77dabba45b..0827db14a215 100644
--- a/include/uapi/linux/ublk_cmd.h
+++ b/include/uapi/linux/ublk_cmd.h
@@ -311,6 +311,14 @@
*/
#define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)
+/*
+ * If this feature is set, the kernel will not automatically scan for partitions
+ * when the device is started. This is useful for network-backed devices where
+ * partition scanning can cause deadlocks if the userspace server crashes during
+ * the scan. Users can manually trigger partition scanning later when appropriate.
+ */
+#define UBLK_F_NO_AUTO_PART_SCAN (1ULL << 15)
+
/* device state */
#define UBLK_S_DEV_DEAD 0
#define UBLK_S_DEV_LIVE 1
--
2.47.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag
2025-12-20 9:53 ` [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag Ming Lei
@ 2025-12-22 17:11 ` Caleb Sander Mateos
2025-12-23 2:32 ` Ming Lei
0 siblings, 1 reply; 4+ messages in thread
From: Caleb Sander Mateos @ 2025-12-22 17:11 UTC (permalink / raw)
To: Ming Lei; +Cc: Jens Axboe, linux-block, Uday Shankar, Yoav Cohen, stable
On Sat, Dec 20, 2025 at 4:53 AM Ming Lei <ming.lei@redhat.com> wrote:
>
> Add a new feature flag UBLK_F_NO_AUTO_PART_SCAN to allow users to suppress
> automatic partition scanning when starting a ublk device.
Is this approach superseded by your patch series "ublk: scan partition
in async way", or are you expecting both to coexist?
>
> This is useful for network-backed devices where partition scanning
> can cause issues:
> - Partition scan triggers synchronous I/O during device startup
> - If userspace server crashes during scan, recovery is problematic
> - For remotely-managed devices, partition probing may not be needed
>
> Users can manually trigger partition scanning later when appropriate
> using standard tools (e.g., partprobe, blockdev --rereadpt).
>
> Reported-by: Yoav Cohen <yoav@nvidia.com>
> Link: https://lore.kernel.org/linux-block/DM4PR12MB63280C5637917C071C2F0D65A9A8A@DM4PR12MB6328.namprd12.prod.outlook.com/
> Cc: stable@vger.kernel.org
> Signed-off-by: Ming Lei <ming.lei@redhat.com>
> ---
>
> - suggest to backport to stable, which is useful for avoiding problematic
> recovery, also the change is simple enough
Not sure backporting to stable makes sense. It's a new feature that
requires the ublk server to opt in, so any existing ublk server being
used on a stable kernel won't be able to make use of it.
>
> drivers/block/ublk_drv.c | 16 +++++++++++++---
> include/uapi/linux/ublk_cmd.h | 8 ++++++++
> 2 files changed, 21 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
> index 78f3e22151b9..ca6ec8ed443f 100644
> --- a/drivers/block/ublk_drv.c
> +++ b/drivers/block/ublk_drv.c
> @@ -73,7 +73,8 @@
> | UBLK_F_AUTO_BUF_REG \
> | UBLK_F_QUIESCE \
> | UBLK_F_PER_IO_DAEMON \
> - | UBLK_F_BUF_REG_OFF_DAEMON)
> + | UBLK_F_BUF_REG_OFF_DAEMON \
> + | UBLK_F_NO_AUTO_PART_SCAN)
>
> #define UBLK_F_ALL_RECOVERY_FLAGS (UBLK_F_USER_RECOVERY \
> | UBLK_F_USER_RECOVERY_REISSUE \
> @@ -2930,8 +2931,13 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub,
>
> ublk_apply_params(ub);
>
> - /* don't probe partitions if any daemon task is un-trusted */
> - if (ub->unprivileged_daemons)
> + /*
> + * Don't probe partitions if:
> + * - any daemon task is un-trusted, or
> + * - user explicitly requested to suppress partition scan
> + */
> + if (ub->unprivileged_daemons ||
> + (ub->dev_info.flags & UBLK_F_NO_AUTO_PART_SCAN))
> set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
>
> ublk_get_device(ub);
> @@ -2947,6 +2953,10 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub,
> if (ret)
> goto out_put_cdev;
>
> + /* allow user to probe partitions from userspace */
> + if (!ub->unprivileged_daemons &&
> + (ub->dev_info.flags & UBLK_F_NO_AUTO_PART_SCAN))
> + clear_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
> set_bit(UB_STATE_USED, &ub->state);
>
> out_put_cdev:
> diff --git a/include/uapi/linux/ublk_cmd.h b/include/uapi/linux/ublk_cmd.h
> index ec77dabba45b..0827db14a215 100644
> --- a/include/uapi/linux/ublk_cmd.h
> +++ b/include/uapi/linux/ublk_cmd.h
> @@ -311,6 +311,14 @@
> */
> #define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)
>
> +/*
> + * If this feature is set, the kernel will not automatically scan for partitions
> + * when the device is started. This is useful for network-backed devices where
> + * partition scanning can cause deadlocks if the userspace server crashes during
> + * the scan. Users can manually trigger partition scanning later when appropriate.
> + */
> +#define UBLK_F_NO_AUTO_PART_SCAN (1ULL << 15)
This is the same bit you've used for UBLK_F_BATCH_IO in your other
patch series. Are you planning to change that one?
Best,
Caleb
> +
> /* device state */
> #define UBLK_S_DEV_DEAD 0
> #define UBLK_S_DEV_LIVE 1
> --
> 2.47.0
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag
2025-12-22 17:11 ` Caleb Sander Mateos
@ 2025-12-23 2:32 ` Ming Lei
2025-12-23 20:03 ` Caleb Sander Mateos
0 siblings, 1 reply; 4+ messages in thread
From: Ming Lei @ 2025-12-23 2:32 UTC (permalink / raw)
To: Caleb Sander Mateos
Cc: Jens Axboe, linux-block, Uday Shankar, Yoav Cohen, stable
On Mon, Dec 22, 2025 at 12:11:03PM -0500, Caleb Sander Mateos wrote:
> On Sat, Dec 20, 2025 at 4:53 AM Ming Lei <ming.lei@redhat.com> wrote:
> >
> > Add a new feature flag UBLK_F_NO_AUTO_PART_SCAN to allow users to suppress
> > automatic partition scanning when starting a ublk device.
>
> Is this approach superseded by your patch series "ublk: scan partition
> in async way", or are you expecting both to coexist?
This one probably is useful too, but it should belong to v6.20 because
"ublk: scan partition in async way" can fix the issue now, and backport
to stable isn't needed any more.
Thanks,
Ming
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag
2025-12-23 2:32 ` Ming Lei
@ 2025-12-23 20:03 ` Caleb Sander Mateos
0 siblings, 0 replies; 4+ messages in thread
From: Caleb Sander Mateos @ 2025-12-23 20:03 UTC (permalink / raw)
To: Ming Lei; +Cc: Jens Axboe, linux-block, Uday Shankar, Yoav Cohen, stable
On Mon, Dec 22, 2025 at 9:32 PM Ming Lei <ming.lei@redhat.com> wrote:
>
> On Mon, Dec 22, 2025 at 12:11:03PM -0500, Caleb Sander Mateos wrote:
> > On Sat, Dec 20, 2025 at 4:53 AM Ming Lei <ming.lei@redhat.com> wrote:
> > >
> > > Add a new feature flag UBLK_F_NO_AUTO_PART_SCAN to allow users to suppress
> > > automatic partition scanning when starting a ublk device.
> >
> > Is this approach superseded by your patch series "ublk: scan partition
> > in async way", or are you expecting both to coexist?
>
> This one probably is useful too, but it should belong to v6.20 because
> "ublk: scan partition in async way" can fix the issue now, and backport
> to stable isn't needed any more.
Sure, I think it could be useful for other ublk servers too that know
the block devices they expose won't be partitioned or want to more
finely control when/whether the partition scan happens.
Best,
Caleb
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-12-23 20:03 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20251220095322.1527664-1-ming.lei@redhat.com>
2025-12-20 9:53 ` [PATCH 1/2] ublk: add UBLK_F_NO_AUTO_PART_SCAN feature flag Ming Lei
2025-12-22 17:11 ` Caleb Sander Mateos
2025-12-23 2:32 ` Ming Lei
2025-12-23 20:03 ` Caleb Sander Mateos
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox