linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 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).