Skip to contentSkip to conversation

Fix readonly "policy" use in gendisk/hd_struct and drivers

PATCH New Jon Masters 1 participant 1 message Nov 5, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fix readonly "policy" use in gendisk/hd_struct and drivers

This modifies the gendisk and hd_struct structs to replace "policy" with "readonly" (as that's the only use for this field). It also introduces a new function disk_read_only, which behaves like the corresponding device functions do.

drivers/block/genhd.c +18 -8
diff -urN linux-2.6.14/drivers/block/genhd.c linux-2.6.14_new/drivers/block/genhd.c
@@ -655,22 +655,22 @@
 
 EXPORT_SYMBOL(put_disk);
 
-void set_device_ro(struct block_device *bdev, int flag)
+void set_device_ro(struct block_device *bdev, int state)
 {
 	if (bdev->bd_contains != bdev)
-		bdev->bd_part->policy = flag;
+		bdev->bd_part->readonly = state;
 	else
-		bdev->bd_disk->policy = flag;
+		bdev->bd_disk->readonly = state;
 }
 
 EXPORT_SYMBOL(set_device_ro);
 
-void set_disk_ro(struct gendisk *disk, int flag)
+void set_disk_ro(struct gendisk *disk, int state)
 {
 	int i;
-	disk->policy = flag;
+	disk->readonly = state;
 	for (i = 0; i < disk->minors - 1; i++)
-		if (disk->part[i]) disk->part[i]->policy = flag;
+		if (disk->part[i]) disk->part[i]->readonly = state;
 }
 
 EXPORT_SYMBOL(set_disk_ro);
@@ -680,13 +680,23 @@
 	if (!bdev)
 		return 0;
 	else if (bdev->bd_contains != bdev)
-		return bdev->bd_part->policy;
+		return bdev->bd_part->readonly;
 	else
-		return bdev->bd_disk->policy;
+		return bdev->bd_disk->readonly;
 }
 
 EXPORT_SYMBOL(bdev_read_only);
 
+int disk_read_only(struct gendisk *disk)
+{
+	if (!disk)
+		return 0;
+
+	return (disk->readonly);
+}
+
+EXPORT_SYMBOL(disk_read_only);
+
 int invalidate_partition(struct gendisk *disk, int index)
 {
 	int res = 0;
drivers/ide/ide-cd.c +3 -2
diff -urN linux-2.6.14/drivers/ide/ide-cd.c linux-2.6.14_new/drivers/ide/ide-cd.c
@@ -313,7 +313,7 @@
 #include <linux/cdrom.h>
 #include <linux/ide.h>
 #include <linux/completion.h>
-
+ 
 #include <scsi/scsi.h>	/* For SCSI -> ATAPI command conversion */
 
 #include <asm/irq.h>
@@ -1873,7 +1873,8 @@
 	/*
 	 * disk has become write protected
 	 */
-	if (g->policy) {
+
+	if (disk_read_only(g)) {
 		cdrom_end_request(drive, 0);
 		return ide_stopped;
 	}
drivers/md/dm-ioctl.c +1 -1
diff -urN linux-2.6.14/drivers/md/dm-ioctl.c linux-2.6.14_new/drivers/md/dm-ioctl.c
@@ -538,7 +538,7 @@
 	} else
 		param->open_count = -1;
 
-	if (disk->policy)
+	if (disk_read_only(disk))
 		param->flags |= DM_READONLY_FLAG;
 
 	param->event_nr = dm_get_event_nr(md);
include/linux/genhd.h +5 -4
diff -urN linux-2.6.14/include/linux/genhd.h linux-2.6.14_new/include/linux/genhd.h
@@ -79,7 +79,7 @@
 	sector_t nr_sects;
 	struct kobject kobj;
 	unsigned reads, read_sectors, writes, write_sectors;
-	int policy, partno;
+	int readonly, partno;
 };
 
 #define GENHD_FL_REMOVABLE			1
@@ -116,7 +116,7 @@
 	struct kobject kobj;
 
 	struct timer_rand_state *random;
-	int policy;
+	int readonly;			/* needed for underlying media */
 
 	atomic_t sync_io;		/* RAID */
 	unsigned long stamp, stamp_idle;
@@ -230,8 +230,9 @@
 extern void unlink_gendisk(struct gendisk *gp);
 extern struct gendisk *get_gendisk(dev_t dev, int *part);
 
-extern void set_device_ro(struct block_device *bdev, int flag);
-extern void set_disk_ro(struct gendisk *disk, int flag);
+extern void set_device_ro(struct block_device *bdev, int state);
+extern void set_disk_ro(struct gendisk *disk, int state);
+extern int disk_read_only(struct gendisk *disk);
 
 /* drivers/char/random.c */
 extern void add_disk_randomness(struct gendisk *disk);