public inbox for stable@vger.kernel.org
 help / color / mirror / Atom feed
* [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