All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: linux-block@vger.kernel.org, shinichiro.kawasaki@wdc.com
Subject: Re: [PATCH blktests] src/miniublk: fix logical block size setting
Date: Mon, 6 Nov 2023 08:33:51 +0800	[thread overview]
Message-ID: <ZUg0b/iv5ie2D7AU@fedora> (raw)
In-Reply-To: <20231104121742.178081-1-akinobu.mita@gmail.com>

On Sat, Nov 04, 2023 at 09:17:42PM +0900, Akinobu Mita wrote:
> The miniublk always sets the logical block size to 512 bytes when setting
> a regular file-backed loop target.
> A test fails if the regular file is on a filesystem built on a block
> device with a logical block size of 4KB.
> 
> $ cd blktests
> $ modprobe -r scsi_debug
> $ modprobe scsi_debug sector_size=4096 dev_size_mb=2048
> $ mkfs.ext4 /dev/sdX
> $ mount /dev/sdX results/
> $ ./check ublk/003
> 
> The logical block size of the ublk block device is set to 512 bytes,
> so a request that is not 4KB aligned may occur, and the miniublk will
> attempt to process it with direct IO and fail.
> 
> The original ublk program already fixed this problem by determining
> the logical block size to set based on the block device to which the
> target regular file belongs.
> 
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
> ---
>  src/miniublk.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/src/miniublk.c b/src/miniublk.c
> index 1c97668..565aa60 100644
> --- a/src/miniublk.c
> +++ b/src/miniublk.c
> @@ -1440,6 +1440,8 @@ static int ublk_loop_tgt_init(struct ublk_dev *dev)
>  		p.basic.physical_bs_shift = ilog2(pbs);
>  	} else if (S_ISREG(st.st_mode)) {
>  		bytes = st.st_size;
> +		p.basic.logical_bs_shift = ilog2(st.st_blksize);
> +		p.basic.physical_bs_shift = ilog2(st.st_blksize);
>  	} else {
>  		bytes = 0;
>  	}
> @@ -1512,6 +1514,8 @@ static int ublk_loop_tgt_recover(struct ublk_dev *dev)
>  			return -1;
>  	} else if (S_ISREG(st.st_mode)) {
>  		bytes = st.st_size;
> +		bs = st.st_blksize;
> +		pbs = st.st_blksize;
>  	} else {
>  		bytes = 0;

Looks fine,

Reviewed-by: Ming Lei <ming.lei@redhat.com>

Thanks,
Ming


  reply	other threads:[~2023-11-06  0:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-04 12:17 [PATCH blktests] src/miniublk: fix logical block size setting Akinobu Mita
2023-11-06  0:33 ` Ming Lei [this message]
2023-11-07  2:24 ` Shinichiro Kawasaki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZUg0b/iv5ie2D7AU@fedora \
    --to=ming.lei@redhat.com \
    --cc=akinobu.mita@gmail.com \
    --cc=linux-block@vger.kernel.org \
    --cc=shinichiro.kawasaki@wdc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.