blkmap: store type of blkmap slice in corresponding structure
authorSughosh Ganu <sughosh.ganu@linaro.org>
Mon, 17 Mar 2025 08:34:00 +0000 (14:04 +0530)
committerIlias Apalodimas <ilias.apalodimas@linaro.org>
Wed, 26 Mar 2025 11:28:08 +0000 (13:28 +0200)
Add information about the type of blkmap slices as an attribute in the
corresponding slice structure. Put information in the blkmap slice
structure to identify if it is associated with a memory or linear
mapped device. Which can then be used to take specific action based on
the type of the blkmap slice.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Tobias Waldekranz <tobias@waldekranz.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
drivers/block/blkmap.c

index 34eed13..08f6857 100644 (file)
 
 struct blkmap;
 
+/**
+ * define BLKMAP_SLICE_LINEAR - Linear mapping to another block device
+ *
+ * This blkmap slice type is used for mapping to other existing block
+ * devices.
+ */
+#define BLKMAP_SLICE_LINEAR    BIT(0)
+
+/**
+ * define BLKMAP_SLICE_MEM - Linear mapping to memory based block device
+ *
+ * This blkmap slice type is used for mapping to memory based block
+ * devices, like ramdisks.
+ */
+#define BLKMAP_SLICE_MEM       BIT(1)
+
 /**
  * struct blkmap_slice - Region mapped to a blkmap
  *
@@ -25,12 +41,14 @@ struct blkmap;
  * @node: List node used to associate this slice with a blkmap
  * @blknr: Start block number of the mapping
  * @blkcnt: Number of blocks covered by this mapping
+ * @attr: Attributes of blkmap slice
  */
 struct blkmap_slice {
        struct list_head node;
 
        lbaint_t blknr;
        lbaint_t blkcnt;
+       uint     attr;
 
        /**
         * @read: - Read from slice
@@ -169,6 +187,7 @@ int blkmap_map_linear(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
                .slice = {
                        .blknr = blknr,
                        .blkcnt = blkcnt,
+                       .attr = BLKMAP_SLICE_LINEAR,
 
                        .read = blkmap_linear_read,
                        .write = blkmap_linear_write,
@@ -248,6 +267,7 @@ int __blkmap_map_mem(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
                .slice = {
                        .blknr = blknr,
                        .blkcnt = blkcnt,
+                       .attr = BLKMAP_SLICE_MEM,
 
                        .read = blkmap_mem_read,
                        .write = blkmap_mem_write,