Re: [LTP] [linux-next:master] [block/bdev] 47dd675323: ltp.ioctl_loop06.fail

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 11, 2025 at 09:09:08PM +0800, Li Wang wrote:
> On Tue, Mar 11, 2025 at 11:33 AM Luis Chamberlain <mcgrof@xxxxxxxxxx> wrote:
> 
> > On Tue, Mar 11, 2025 at 09:43:42AM +0800, Li Wang wrote:
> > > On Mon, Mar 10, 2025 at 11:15 PM Luis Chamberlain <mcgrof@xxxxxxxxxx>
> > wrote:
> > >
> > > > There's a fix for this already in next
> > > >
> > >
> > > Oh? Which commit?
> >
> > Oh seems linux-next hasn't been updated in a few days, so you can try
> > this patch:
> >
> > https://lore.kernel.org/all/20250307020403.3068567-1-mcgrof@xxxxxxxxxx/
> 
> 
> --- a/block/bdev.c
> +++ b/block/bdev.c
> @@ -181,6 +181,8 @@ EXPORT_SYMBOL(set_blocksize);
> 
>  int sb_set_blocksize(struct super_block *sb, int size)
>  {
> +       if (!(sb->s_type->fs_flags & FS_LBS) && size > PAGE_SIZE)
> +               return 0;
>         if (set_blocksize(sb->s_bdev_file, size))
>                 return 0;
> ...
> 
> 
> Thanks, but looking at the code change, seems filesystems with FS_LBS
> (e.g., bcachefs, XFS) can still mount larger block sizes properly. IOW,
> the test ioctl_loop06 still failed on RHEL9 (XFS) platform.

The test does not fail because the filesystem being used, the test fails
because it expects setting the block size > PAGE_SIZE will fail for the
loop back device it is creating and then setting the block size for it.

There are two tests which fail:

  * set block size > PAGE_SIZE with LOOP_SET_BLOCK_SIZE
  * set block size > PAGE_SIZE with LOOP_CONFIGURE

It expects to fail. The new work enables the block layer to support
block sizes > PAGE_SIZE on block devices, essentially that the logical
or physical block size can be > PAGE_SIZE. That is supported now.

> Is that expected? Or, should we adjust the testcase for FS with FS_LBS
> as exception?

Contrary to filesystems, block drivers use now implicitly use
blk_validate_limits() through queue_limits_commit_update to validate
queue limits, but PAGE_SIZE is no longer an issue. In the loop back driver
case we have then:

ioctl LOOP_CONFIGURE --> loop_configure() 
	lim = queue_limits_start_update(lo->lo_queue);                           
	loop_update_limits(lo, &lim, config->block_size); 

ioctl LOOP_SET_BLOCK_SIZE --> loop_set_block_size()
	lim = queue_limits_start_update(lo->lo_queue);                           
	loop_update_limits(lo, &lim, arg); 

I don't see anything wrong with the loop driver supporting logical block
sizes > PAGE_SIZE, from a quick look, but it does not matter. If tests
exists which are verifying you *can't* do it, then we're bound to get
other similar reports. queue_limits_commit_update() calls
blk_validate_block_size. I just sent a fix.

Thanks for the report.

  Luis




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux