* Failure to reread partition tables on non-busy devices
@ 2002-11-18 0:05 Doug Ledford
2002-11-18 0:35 ` Douglas Gilbert
2002-11-18 0:43 ` Alexander Viro
0 siblings, 2 replies; 4+ messages in thread
From: Doug Ledford @ 2002-11-18 0:05 UTC (permalink / raw)
To: Linux Kernel Mailing List, Linux Scsi Mailing List
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 <dledford@redhat.com> 919-754-3700 x44233
Red Hat, Inc.
1801 Varsity Dr.
Raleigh, NC 27606
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Failure to reread partition tables on non-busy devices
2002-11-18 0:05 Failure to reread partition tables on non-busy devices Doug Ledford
@ 2002-11-18 0:35 ` Douglas Gilbert
2002-11-18 0:43 ` Alexander Viro
1 sibling, 0 replies; 4+ messages in thread
From: Douglas Gilbert @ 2002-11-18 0:35 UTC (permalink / raw)
To: Doug Ledford; +Cc: Linux Kernel Mailing List, Linux Scsi Mailing List
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);
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Failure to reread partition tables on non-busy devices
2002-11-18 0:05 Failure to reread partition tables on non-busy devices Doug Ledford
2002-11-18 0:35 ` Douglas Gilbert
@ 2002-11-18 0:43 ` Alexander Viro
2002-11-18 3:06 ` Doug Ledford
1 sibling, 1 reply; 4+ messages in thread
From: Alexander Viro @ 2002-11-18 0:43 UTC (permalink / raw)
To: Doug Ledford; +Cc: Linux Kernel Mailing List, Linux Scsi Mailing List
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).
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Failure to reread partition tables on non-busy devices
2002-11-18 0:43 ` Alexander Viro
@ 2002-11-18 3:06 ` Doug Ledford
0 siblings, 0 replies; 4+ messages in thread
From: Doug Ledford @ 2002-11-18 3:06 UTC (permalink / raw)
To: Alexander Viro; +Cc: Linux Kernel Mailing List, Linux Scsi Mailing List
[-- Attachment #1: Type: text/plain, Size: 611 bytes --]
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 <dledford@redhat.com> 919-754-3700 x44233
Red Hat, Inc.
1801 Varsity Dr.
Raleigh, NC 27606
[-- Attachment #2: part.patch --]
[-- Type: text/plain, Size: 735 bytes --]
===== fs/block_dev.c 1.112 vs edited =====
--- 1.112/fs/block_dev.c Sun Nov 17 08:09:16 2002
+++ edited/fs/block_dev.c Sun Nov 17 22:00:23 2002
@@ -520,7 +520,7 @@
if (bdev->bd_contains != bdev)
BUG();
down(&bdev->bd_sem);
- if (check_disk_change(bdev)) {
+ if (check_disk_change(bdev) && bdev->bd_invalidated) {
rescan_partitions(bdev->bd_disk, bdev);
res = 1;
}
===== fs/partitions/check.c 1.85 vs edited =====
--- 1.85/fs/partitions/check.c Mon Nov 11 22:16:11 2002
+++ edited/fs/partitions/check.c Sun Nov 17 21:59:28 2002
@@ -453,8 +453,6 @@
struct parsed_partitions *state;
int p, res;
- if (!bdev->bd_invalidated)
- return 0;
if (bdev->bd_part_count)
return -EBUSY;
res = invalidate_device(dev, 1);
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2002-11-18 3:06 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2002-11-18 0:05 Failure to reread partition tables on non-busy devices Doug Ledford
2002-11-18 0:35 ` Douglas Gilbert
2002-11-18 0:43 ` Alexander Viro
2002-11-18 3:06 ` Doug Ledford
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).