Re: [syzbot] [block?] WARNING in blkdev_put (2)

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

 



On Tue, 2023-03-07 at 09:42 +0800, Yu Kuai wrote:
> Hi,
> 
> 在 2023/03/06 23:00, Julian Ruess 写道:
> > On Thu, 2023-03-02 at 20:33 +0100, Alexander Egorenkov wrote:
> > > 
> > > Hi,
> > > 
> > > we are seeing a similar problem on s390x architecture when
> > > partitioning
> > > a NVMe disk on linux-next.
> > > 
> > > 
> > >    [   70.403015]  nvme0n1: p1
> > >    [   70.403197] ------------[ cut here ]------------
> > >    [   70.403199] WARNING: CPU: 8 PID: 2452 at block/bdev.c:845
> > > blkdev_put+0x280/0x298
> > 
> > ...
> > 
> > > The problem appeared about a week ago.
> > > 
> > > Regards
> > > Alex
> > 
> > Hi all,
> > 
> > I bisected this to:
> > 
> > commit e5cfefa97bccf956ea0bb6464c1f6c84fd7a8d9f
> > Author: Yu Kuai <yukuai3@xxxxxxxxxx>
> > Date:   Fri Feb 17 10:22:00 2023 +0800
> >                                                                    
> >                     
> >      block: fix scan partition for exclusively open device again
> 
> Yes, thanks for the report, I figure out that I made a mistake here.
> 
> Following patch should fix this problem:
> 
> diff --git a/block/genhd.c b/block/genhd.c
> index 3ee5577e1586..02d9cfb9e077 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -385,7 +385,7 @@ int disk_scan_partitions(struct gendisk *disk, 
> fmode_t mode)
>          if (IS_ERR(bdev))
>                  ret =  PTR_ERR(bdev);
>          else
> -               blkdev_put(bdev, mode);
> +               blkdev_put(bdev, mode & ~FMODE_EXCL);
> 
> Thanks,
> Kuai
> >                                                                    
> >                     
> >      As explained in commit 36369f46e917 ("block: Do not reread
> > partition table
> >      on exclusively open device"), reread partition on the device
> > that
> > is
> >      exclusively opened by someone else is problematic.
> >                                                                    
> >                     
> >      This patch will make sure partition scan will only be proceed
> > if
> > current
> >      thread open the device exclusively, or the device is not
> > opened
> >      exclusively, and in the later case, other scanners and
> > exclusive
> > openers
> >      will be blocked temporarily until partition scan is done.
> >                                                                    
> >                     
> >      Fixes: 10c70d95c0f2 ("block: remove the bd_openers checks in
> > blk_drop_partitions")
> >      Cc: <stable@xxxxxxxxxxxxxxx>
> >      Suggested-by: Jan Kara <jack@xxxxxxx>
> >      Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
> >      Reviewed-by: Christoph Hellwig <hch@xxxxxx>
> >      Link:
> > https://lore.kernel.org/r/20230217022200.3092987-3-yukuai1@xxxxxxxxxxxxxxx
> >   
> >      Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
> > 
> > 
> > 
> > Regards
> > Julian
> > 
> 

This patch works for me. Thanks!
@Jens Axboe: Will this be part of the next 6.3-rc?

Regards
Julian





[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