|
|
@@ -1,10 +1,11 @@
|
|
|
--- a/block/blk.h
|
|
|
+++ b/block/blk.h
|
|
|
-@@ -361,6 +361,7 @@ char *disk_name(struct gendisk *hd, int
|
|
|
+@@ -361,6 +361,8 @@ char *disk_name(struct gendisk *hd, int
|
|
|
#define ADDPART_FLAG_NONE 0
|
|
|
#define ADDPART_FLAG_RAID 1
|
|
|
#define ADDPART_FLAG_WHOLEDISK 2
|
|
|
-+#define ADDPART_FLAG_ROOTDEV 4
|
|
|
++#define ADDPART_FLAG_READONLY 4
|
|
|
++#define ADDPART_FLAG_ROOTDEV 8
|
|
|
void delete_partition(struct hd_struct *part);
|
|
|
int bdev_add_partition(struct block_device *bdev, int partno,
|
|
|
sector_t start, sector_t length);
|
|
|
@@ -73,13 +74,16 @@
|
|
|
#ifdef CONFIG_SGI_PARTITION
|
|
|
sgi_partition,
|
|
|
#endif
|
|
|
-@@ -694,6 +701,11 @@ static bool blk_add_partition(struct gen
|
|
|
+@@ -694,6 +701,14 @@ static bool blk_add_partition(struct gen
|
|
|
(state->parts[p].flags & ADDPART_FLAG_RAID))
|
|
|
md_autodetect_dev(part_to_dev(part)->devt);
|
|
|
|
|
|
+#ifdef CONFIG_FIT_PARTITION
|
|
|
+ if ((state->parts[p].flags & ADDPART_FLAG_ROOTDEV) && ROOT_DEV == 0)
|
|
|
+ ROOT_DEV = part_to_dev(part)->devt;
|
|
|
++
|
|
|
++ if (state->parts[p].flags & ADDPART_FLAG_READONLY)
|
|
|
++ part->policy = true;
|
|
|
+#endif
|
|
|
+
|
|
|
return true;
|