Re: [PATCH] block: Do not reread partition table on exclusively open device

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

 



On Wed 08-02-23 22:13:02, Yu Kuai wrote:
> Hi,
> 
> 在 2023/02/08 20:02, Jan Kara 写道:
> > 
> > After some thought I don't like opencoding blkdev_get_by_dev() in disk_scan
> > partitions. But I agree Christoph's approach with blkdev_get_whole() does
> > not quite work either. We could propagate holder/owner into
> > blkdev_get_whole() to fix Christoph's check but still we are left with a
> > question what to do with GD_NEED_PART_SCAN set bit when we get into
> > blkdev_get_whole() and find out we are not elligible to rescan partitions.
> > Because then some exclusive opener later might be caught by surprise when
> > the partition rescan happens due to this bit being set from the past failed
> > attempt to rescan.
> > 
> > So what we could do is play a similar trick as we do in the loop device and
> > do in disk_scan_partitions():
> > 
> > 	/*
> > 	 * If we don't hold exclusive handle for the device, upgrade to it
> > 	 * here to avoid changing partitions under exclusive owner.
> > 	 */
> > 	if (!(mode & FMODE_EXCL)) {
> This is not necessary, all the caller make sure FMODE_EXCL is not set.

Yes, but we need to propagate it correctly from blkdev_common_ioctl() now,
exactly so that ioctl does not fail if you exclusively opened the device as
you realized below :)

> > 		error = bd_prepare_to_claim(disk->part0, disk_scan_partitions);
> > 		if (error)
> > 			return error;
> > 	}
> From what I see, if thread open device excl first, and then call ioctl()
> to reread partition, this will cause this ioctl() to fail?

								Honza
-- 
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR



[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