This patch (almost certainly wrong BTW) makes it work. Obviously,
somewhere there should be a call to invalidate_bdev(); that doesn't exist.
I'm not sure A) where that call should be and B) what checks there should
be to avoid calling invalidate_bdev() on a device that is busy.
fs/partitions/check.c: 1.85 1.86 dledford 02/11/17 17:22:37 (modified,
needs delta)
@@ -453,8 +453,8 @@ int rescan_partitions()
struct parsed_partitions *state;
int p, res;
- if (!bdev->bd_invalidated)
- return 0;
+ //if (!bdev->bd_invalidated)
+ // return 0;
if (bdev->bd_part_count)
return -EBUSY;
res = invalidate_device(dev, 1);
--
Doug Ledford <[email protected]> 919-754-3700 x44233
Red Hat, Inc.
1801 Varsity Dr.
Raleigh, NC 27606
Doug,
Your patch below fixes the problem I was seeing with fdisk
creating new partitions (on a scsi_debug ram disk) not being
visible outside fdisk.
Doug Gilbert
Doug Ledford wrote:
> This patch (almost certainly wrong BTW) makes it work. Obviously,
> somewhere there should be a call to invalidate_bdev(); that doesn't exist.
> I'm not sure A) where that call should be and B) what checks there should
> be to avoid calling invalidate_bdev() on a device that is busy.
>
> fs/partitions/check.c: 1.85 1.86 dledford 02/11/17 17:22:37 (modified,
> needs delta)
>
> @@ -453,8 +453,8 @@ int rescan_partitions()
> struct parsed_partitions *state;
> int p, res;
>
> - if (!bdev->bd_invalidated)
> - return 0;
> + //if (!bdev->bd_invalidated)
> + // return 0;
> if (bdev->bd_part_count)
> return -EBUSY;
> res = invalidate_device(dev, 1);
>
On Sun, 17 Nov 2002, Doug Ledford wrote:
> This patch (almost certainly wrong BTW) makes it work. Obviously,
> somewhere there should be a call to invalidate_bdev(); that doesn't exist.
> I'm not sure A) where that call should be and B) what checks there should
> be to avoid calling invalidate_bdev() on a device that is busy.
Not really. Correct fix is:
a) in fs/block_dev.c::full_check_disk_change() replace
if (check_disk_change(bdev)) {
with
if (check_disk_change(bdev) && bdev->bd_invalidated) {
b) lost the check in rescan_partitions().
Other callers either do that check themselves or don't want that check to
happen at all (BLKRRPART).
On Sun, Nov 17, 2002 at 07:43:27PM -0500, Alexander Viro wrote:
> Not really. Correct fix is:
> a) in fs/block_dev.c::full_check_disk_change() replace
>
> if (check_disk_change(bdev)) {
> with
> if (check_disk_change(bdev) && bdev->bd_invalidated) {
>
> b) lost the check in rescan_partitions().
>
> Other callers either do that check themselves or don't want that check to
> happen at all (BLKRRPART).
Well, since you didn't attach the patch, here it is.
--
Doug Ledford <[email protected]> 919-754-3700 x44233
Red Hat, Inc.
1801 Varsity Dr.
Raleigh, NC 27606