Patchwork [U-Boot,V2,9/9] disk: part_dos: print partition UUID in partition list

login
register
mail settings
Submitter Stephen Warren
Date Oct. 8, 2012, 6:14 p.m.
Message ID <1349720080-13119-9-git-send-email-swarren@wwwdotorg.org>
Download mbox | patch
Permalink /patch/190078/
State Accepted
Delegated to: Tom Rini
Headers show

Comments

Stephen Warren - Oct. 8, 2012, 6:14 p.m.
From: Stephen Warren <swarren@nvidia.com>

This information may be useful to compare against command "part uuid",
or if you want to manually paste the information into the kernel
command-line.

Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
 disk/part_dos.c |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

Patch

diff --git a/disk/part_dos.c b/disk/part_dos.c
index 732187a..3fe901b 100644
--- a/disk/part_dos.c
+++ b/disk/part_dos.c
@@ -66,13 +66,13 @@  static inline int is_bootable(dos_partition_t *p)
 }
 
 static void print_one_part(dos_partition_t *p, int ext_part_sector,
-			   int part_num)
+			   int part_num, unsigned int disksig)
 {
 	int lba_start = ext_part_sector + le32_to_int (p->start4);
 	int lba_size  = le32_to_int (p->size4);
 
-	printf("%3d\t%-10d\t%-10d\t%02x%s%s\n",
-		part_num, lba_start, lba_size, p->sys_ind,
+	printf("%3d\t%-10d\t%-10d\t%08x-%02x\t%02x%s%s\n",
+		part_num, lba_start, lba_size, disksig, part_num, p->sys_ind,
 		(is_extended(p->sys_ind) ? " Extd" : ""),
 		(is_bootable(p) ? " Boot" : ""));
 }
@@ -108,7 +108,7 @@  int test_part_dos (block_dev_desc_t *dev_desc)
  */
 static void print_partition_extended(block_dev_desc_t *dev_desc,
 				     int ext_part_sector, int relative,
-				     int part_num)
+				     int part_num, unsigned int disksig)
 {
 	ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz);
 	dos_partition_t *pt;
@@ -127,6 +127,9 @@  static void print_partition_extended(block_dev_desc_t *dev_desc,
 		return;
 	}
 
+	if (!ext_part_sector)
+		disksig = le32_to_int(&buffer[DOS_PART_DISKSIG_OFFSET]);
+
 	/* Print all primary/logical partitions */
 	pt = (dos_partition_t *) (buffer + DOS_PART_TBL_OFFSET);
 	for (i = 0; i < 4; i++, pt++) {
@@ -137,7 +140,7 @@  static void print_partition_extended(block_dev_desc_t *dev_desc,
 
 		if ((pt->sys_ind != 0) &&
 		    (ext_part_sector == 0 || !is_extended (pt->sys_ind)) ) {
-			print_one_part(pt, ext_part_sector, part_num);
+			print_one_part(pt, ext_part_sector, part_num, disksig);
 		}
 
 		/* Reverse engr the fdisk part# assignment rule! */
@@ -155,7 +158,7 @@  static void print_partition_extended(block_dev_desc_t *dev_desc,
 
 			print_partition_extended(dev_desc, lba_start,
 				ext_part_sector == 0  ? lba_start : relative,
-				part_num);
+				part_num, disksig);
 		}
 	}
 
@@ -262,8 +265,8 @@  static int get_partition_info_extended (block_dev_desc_t *dev_desc, int ext_part
 
 void print_part_dos (block_dev_desc_t *dev_desc)
 {
-	printf("Part\tStart Sector\tNum Sectors\tType\n");
-	print_partition_extended(dev_desc, 0, 0, 1);
+	printf("Part\tStart Sector\tNum Sectors\tUUID\t\tType\n");
+	print_partition_extended(dev_desc, 0, 0, 1, 0);
 }
 
 int get_partition_info_dos (block_dev_desc_t *dev_desc, int part, disk_partition_t * info)