diff --git a/components/service/block_storage/block_store/block_store.h b/components/service/block_storage/block_store/block_store.h
index 341e365..e2575d7 100644
--- a/components/service/block_storage/block_store/block_store.h
+++ b/components/service/block_storage/block_store/block_store.h
@@ -33,8 +33,20 @@
  */
 struct storage_partition_info
 {
-	size_t num_blocks;        /* Number of contiguous blocks from LBA zero */
-	size_t block_size;        /* Block size in bytes */
+	/* Number of contiguous blocks from LBA zero */
+	size_t num_blocks;
+
+	/* Block size in bytes */
+	size_t block_size;
+
+	/* The unique partition GUID */
+	struct uuid_octets partition_guid;
+
+	/* GUID of the parent partition/device e.g. the disk GUID of the disk that
+	 * contains the subject storage partition. A nil UUID should be returned if
+	 * there is no parent.
+	 */
+	struct uuid_octets parent_guid;
 };
 
 /**
diff --git a/components/service/block_storage/block_store/client/block_storage_client.c b/components/service/block_storage/block_store/client/block_storage_client.c
index 04b345e..5a7b491 100644
--- a/components/service/block_storage/block_store/client/block_storage_client.c
+++ b/components/service/block_storage/block_store/client/block_storage_client.c
@@ -57,7 +57,16 @@
 
 					info->block_size = resp_msg.block_size;
 					info->num_blocks = resp_msg.num_blocks;
-				} else {
+
+					memcpy(info->partition_guid.octets,
+						resp_msg.partition_guid,
+						TS_BLOCK_STORAGE_GUID_OCTET_LEN);
+
+					memcpy(info->parent_guid.octets,
+						resp_msg.parent_guid,
+						TS_BLOCK_STORAGE_GUID_OCTET_LEN);
+				}
+				else {
 					/* Failed to decode response message */
 					psa_status = PSA_ERROR_GENERIC_ERROR;
 				}
diff --git a/components/service/block_storage/block_store/device/block_device.c b/components/service/block_storage/block_store/device/block_device.c
index dd3abd0..c355e82 100644
--- a/components/service/block_storage/block_store/device/block_device.c
+++ b/components/service/block_storage/block_store/device/block_device.c
@@ -5,6 +5,7 @@
  *
  */
 
+#include <string.h>
 #include "block_device.h"
 
 #define BLOCK_DEVICE_PARTITION_HANDLE    (0)
@@ -34,6 +35,11 @@
 
 		info->block_size = block_device->storage_partition.block_size;
 		info->num_blocks = block_device->storage_partition.num_blocks;
+		info->partition_guid = block_device->storage_partition.partition_guid;
+
+		/* A block_device has no parent so return a nil UUID */
+		memset(info->parent_guid.octets, 0, sizeof(info->parent_guid.octets));
+
 		status = PSA_SUCCESS;
 	}
 
diff --git a/components/service/block_storage/block_store/device/ram/test/ram_block_store_tests.cpp b/components/service/block_storage/block_store/device/ram/test/ram_block_store_tests.cpp
index f7ba5b0..5e9537f 100644
--- a/components/service/block_storage/block_store/device/ram/test/ram_block_store_tests.cpp
+++ b/components/service/block_storage/block_store/device/ram/test/ram_block_store_tests.cpp
@@ -47,6 +47,8 @@
 	LONGS_EQUAL(PSA_SUCCESS, status);
 	LONGS_EQUAL(NUM_BLOCKS, info.num_blocks);
 	LONGS_EQUAL(BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
 }
 
 TEST(RamBlockStoreTests, openClose)
diff --git a/components/service/block_storage/block_store/partitioned/partitioned_block_store.c b/components/service/block_storage/block_store/partitioned/partitioned_block_store.c
index a2ac1bd..735dead 100644
--- a/components/service/block_storage/block_store/partitioned/partitioned_block_store.c
+++ b/components/service/block_storage/block_store/partitioned/partitioned_block_store.c
@@ -89,6 +89,8 @@
 
 		info->block_size = partition->block_size;
 		info->num_blocks = partition->num_blocks;
+		info->partition_guid = partition->partition_guid;
+		info->parent_guid = partitioned_block_store->back_store_info.partition_guid;
 	}
 
 	return status;
diff --git a/components/service/block_storage/block_store/partitioned/test/partitioned_block_store_tests.cpp b/components/service/block_storage/block_store/partitioned/test/partitioned_block_store_tests.cpp
index a499b95..12541bf 100644
--- a/components/service/block_storage/block_store/partitioned/test/partitioned_block_store_tests.cpp
+++ b/components/service/block_storage/block_store/partitioned/test/partitioned_block_store_tests.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved.
+ * Copyright (c) 2022-2023, Arm Limited and Contributors. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -15,12 +15,12 @@
 	void setup()
 	{
 		/* Initialize a ram_block_store to use as the back store */
-		struct uuid_octets back_store_guid;
-		memset(&back_store_guid, 0, sizeof(back_store_guid));
+		uuid_guid_octets_from_canonical(&m_back_store_guid,
+			"6ec10ff6-4252-4ef7-aeca-5036db6697df");
 
 		struct block_store *back_store = ram_block_store_init(
 			&m_ram_store,
-			&back_store_guid,
+			&m_back_store_guid,
 			BACK_STORE_NUM_BLOCKS,
 			BACK_STORE_BLOCK_SIZE);
 
@@ -30,7 +30,7 @@
 		m_block_store = partitioned_block_store_init(
 			&m_partitioned_store,
 			LOCAL_CLIENT_ID,
-			&back_store_guid,
+			&m_back_store_guid,
 			back_store,
 			NULL);
 
@@ -84,6 +84,7 @@
 	struct partitioned_block_store m_partitioned_store;
 	struct uuid_octets m_partition_1_guid;
 	struct uuid_octets m_partition_2_guid;
+	struct uuid_octets m_back_store_guid;
 };
 
 TEST(PartitionedBlockStoreTests, getPartitionInfo)
@@ -97,6 +98,10 @@
 	LONGS_EQUAL(PSA_SUCCESS, status);
 	LONGS_EQUAL(PARTITION_1_ENDING_LBA - PARTITION_1_STARTING_LBA + 1, info.num_blocks);
 	LONGS_EQUAL(BACK_STORE_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_1_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
+	MEMCMP_EQUAL(m_back_store_guid.octets,
+		info.parent_guid.octets, sizeof(info.parent_guid.octets));
 
 	/* Check partition info for partition 2 */
 	status = block_store_get_partition_info(
@@ -105,6 +110,10 @@
 	LONGS_EQUAL(PSA_SUCCESS, status);
 	LONGS_EQUAL(PARTITION_2_ENDING_LBA - PARTITION_2_STARTING_LBA + 1, info.num_blocks);
 	LONGS_EQUAL(BACK_STORE_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_2_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
+	MEMCMP_EQUAL(m_back_store_guid.octets,
+		info.parent_guid.octets, sizeof(info.parent_guid.octets));
 }
 
 TEST(PartitionedBlockStoreTests, openClose)
diff --git a/components/service/block_storage/provider/serializer/packed-c/packedc_block_storage_serializer.c b/components/service/block_storage/provider/serializer/packed-c/packedc_block_storage_serializer.c
index cb5fd7a..7946a47 100644
--- a/components/service/block_storage/provider/serializer/packed-c/packedc_block_storage_serializer.c
+++ b/components/service/block_storage/provider/serializer/packed-c/packedc_block_storage_serializer.c
@@ -39,6 +39,12 @@
 	resp_msg.num_blocks = info->num_blocks;
 	resp_msg.block_size = info->block_size;
 
+	memcpy(resp_msg.partition_guid,
+		info->partition_guid.octets, TS_BLOCK_STORAGE_GUID_OCTET_LEN);
+
+	memcpy(resp_msg.parent_guid,
+		info->parent_guid.octets, TS_BLOCK_STORAGE_GUID_OCTET_LEN);
+
 	if (fixed_len <= resp_buf->size) {
 
 		memcpy(resp_buf->data, &resp_msg, fixed_len);
diff --git a/components/service/block_storage/test/service/block_storage_service_tests.cpp b/components/service/block_storage/test/service/block_storage_service_tests.cpp
index 3c376d9..3899a04 100644
--- a/components/service/block_storage/test/service/block_storage_service_tests.cpp
+++ b/components/service/block_storage/test/service/block_storage_service_tests.cpp
@@ -61,40 +61,40 @@
 		m_block_store, &m_partition_1_guid, &info);
 
 	LONGS_EQUAL(PSA_SUCCESS, status);
-	UNSIGNED_LONGS_EQUAL(
-		REF_PARTITION_1_ENDING_LBA - REF_PARTITION_1_STARTING_LBA + 1,
-		info.num_blocks);
-	UNSIGNED_LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	LONGS_EQUAL(REF_PARTITION_1_ENDING_LBA - REF_PARTITION_1_STARTING_LBA + 1, info.num_blocks);
+	LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_1_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
 
 	/* Check partition info for partition 2 */
 	status = block_store_get_partition_info(
 		m_block_store, &m_partition_2_guid, &info);
 
 	LONGS_EQUAL(PSA_SUCCESS, status);
-	UNSIGNED_LONGS_EQUAL(
-		REF_PARTITION_2_ENDING_LBA - REF_PARTITION_2_STARTING_LBA + 1,
-		info.num_blocks);
-	UNSIGNED_LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	LONGS_EQUAL(REF_PARTITION_2_ENDING_LBA - REF_PARTITION_2_STARTING_LBA + 1, info.num_blocks);
+	LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_2_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
 
 	/* Check partition info for partition 3 */
 	status = block_store_get_partition_info(
 		m_block_store, &m_partition_3_guid, &info);
 
 	LONGS_EQUAL(PSA_SUCCESS, status);
-	UNSIGNED_LONGS_EQUAL(
-		REF_PARTITION_3_ENDING_LBA - REF_PARTITION_3_STARTING_LBA + 1,
-		info.num_blocks);
-	UNSIGNED_LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	LONGS_EQUAL(REF_PARTITION_3_ENDING_LBA - REF_PARTITION_3_STARTING_LBA + 1, info.num_blocks);
+	LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_3_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
 
 	/* Check partition info for partition 4 */
 	status = block_store_get_partition_info(
 		m_block_store, &m_partition_4_guid, &info);
 
 	LONGS_EQUAL(PSA_SUCCESS, status);
-	UNSIGNED_LONGS_EQUAL(
-		REF_PARTITION_4_ENDING_LBA - REF_PARTITION_4_STARTING_LBA + 1,
-		info.num_blocks);
-	UNSIGNED_LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	LONGS_EQUAL(REF_PARTITION_4_ENDING_LBA - REF_PARTITION_4_STARTING_LBA + 1, info.num_blocks);
+	LONGS_EQUAL(REF_PARTITION_BLOCK_SIZE, info.block_size);
+	MEMCMP_EQUAL(m_partition_4_guid.octets,
+		info.partition_guid.octets, sizeof(info.partition_guid.octets));
 }
 
 TEST(BlockStorageServiceTests, openClose)
diff --git a/protocols/service/block_storage/packed-c/messages.h b/protocols/service/block_storage/packed-c/messages.h
index 7769912..fc17d79 100644
--- a/protocols/service/block_storage/packed-c/messages.h
+++ b/protocols/service/block_storage/packed-c/messages.h
@@ -28,14 +28,16 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_get_partition_info_in
 {
-  uint8_t partition_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
+	uint8_t partition_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
 };
 
 /* Mandatory fixed sized output parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_get_partition_info_out
 {
-  uint32_t num_blocks;
-  uint32_t block_size;
+	uint32_t num_blocks;
+	uint32_t block_size;
+	uint8_t partition_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
+	uint8_t parent_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
 };
 
 /****************************************
@@ -49,13 +51,13 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_open_in
 {
-  uint8_t partition_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
+	uint8_t partition_guid[TS_BLOCK_STORAGE_GUID_OCTET_LEN];
 };
 
 /* Mandatory fixed sized output parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_open_out
 {
-  uint64_t handle;
+	uint64_t handle;
 };
 
 /****************************************
@@ -68,7 +70,7 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_close_in
 {
-  uint64_t handle;
+	uint64_t handle;
 };
 
 /****************************************
@@ -80,10 +82,10 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_read_in
 {
-  uint64_t handle;
-  uint32_t lba;
-  uint32_t offset;
-  uint32_t len;
+	uint64_t handle;
+	uint32_t lba;
+	uint32_t offset;
+	uint32_t len;
 };
 
 /* Read data returned in response */
@@ -97,9 +99,9 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_write_in
 {
-  uint64_t handle;
-  uint32_t lba;
-  uint32_t offset;
+	uint64_t handle;
+	uint32_t lba;
+	uint32_t offset;
 };
 
 /* Write data follows fixed size input message */
@@ -107,7 +109,7 @@
 /* Mandatory fixed sized output parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_write_out
 {
-  uint64_t num_written;
+	uint64_t num_written;
 };
 
 /****************************************
@@ -119,9 +121,9 @@
 /* Mandatory fixed sized input parameters */
 struct __attribute__ ((__packed__)) ts_block_storage_erase_in
 {
-  uint64_t handle;
-  uint32_t begin_lba;
-  uint32_t num_blocks;
+	uint64_t handle;
+	uint32_t begin_lba;
+	uint32_t num_blocks;
 };
 
 #endif /* TS_BLOCK_STORAGE_PACKEDC_MESSAGES_H */
