# US 12,769,476 B2 · Data object-based storage controllers for managing pools of storage

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,769,476 B2
- Document ID: US12769476B2
- Status: Granted
- Kind: B2
- Application number: 18/890,685
- Filed: 2024-09-19
- Published: 2026-03-19
- Granted: 2026-10-20
- Earliest claimed: 2024-09-19
- Assignees: Avago Technologies International Sales Pte. Limited
- Applicants: Avago Technologies International Sales Pte. Limited
- Inventors: Suraj Chandra Shekar Ballaki; Ramakrishna Rajaram
- Web page: https://patentgrep.com/patent/US12769476B2

## CPC

- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An example computing system includes a hardware platform including a central processing unit (CPU), volatile memory, storage devices, and a storage controller; software, executing on the hardware platform, the software configured to: discover, by the storage controller, the storage devices; create, by the storage controller, pools of the storage devices; obtain, by first software executing on the CPU, information describing the pools; determine, by the first software in cooperation with the storage controller, an address space for each of the pools; and communicating, from the software to the storage controller, a storage transaction referencing a first pool of the pools and a first address in the address space for the first pool.

## Claims

### Claim 1

A computing system, comprising:
a hardware platform including a central processing unit (CPU), volatile memory, and storage devices;
software executing on the hardware platform, the software configured to generate a request for a storage transaction for an object, the software maintaining first metadata having a first address of the object in an address space of a first pool of the storage devices; and
a storage controller of the hardware platform, the storage controller configured to discover the storage devices, create pools of the storage devices including the first pool, determine an address space for each of the pools, send information describing the pools and the address space for each of the pools to the software, and execute, in response to the request from the software, the storage transaction with at least one of the storage devices, the storage controller configured to maintain second metadata that maps the address spaces of the pools to address spaces of the storage devices.

### Claim 2 (depends on 1)

The computing system of claim 1, wherein the storage controller is configured to communicate with the storage devices to create arrays of the storage devices and assign the arrays to the pools.

### Claim 3 (depends on 2)

The computing system of claim 2, wherein the storage controller is configured to create the pools based on performance of the arrays of the storage devices, each of the pools having a different performance metric.

### Claim 4 (depends on 1)

The computing system of claim 1, wherein the storage controller is configured to determine a list of free addresses in an address space of the storage devices.

### Claim 5 (depends on 1)

The computing system of claim 1, wherein the storage controller is configured to determine, for each pool of the pools, a map of the address space of the pool to an address space of the storage devices.

### Claim 6 (depends on 1)

The computing system of claim 1, wherein the request is to write a data object, and wherein the storage controller is configured to determine a second address in an address space of the storage devices, update a map of the address space of the first pool to the address space of the storage devices, write the data object to at least one of the storage devices based on the second address.

### Claim 7 (depends on 1)

The computing system of claim 1, wherein the request is to read a data object, and wherein the storage controller is configured to determine a second address in an address space of the storage devices that is mapped to the first address from a map of the address space of the first pool to the address space of the storage devices, and read the data object from at least one of the storage devices based on the second address.

### Claim 8 (depends on 1)

The computing system of claim 1, wherein the request is to move a data object, wherein the first pool is a source pool of the pools and the first address is in the address space of the source pool, wherein the request references a destination pool of the pools and a second address in the address space of the destination pool, and wherein the storage controller is configured to:
determine a third address in an address space of the storage devices;
determine a fourth address in the address space of the storage devices that is mapped to the first address from a first map of the address space of the source pool to the address space of the storage devices;
update a second map of the address space of the destination pool to the address space of the storage devices; and
move the data object from at least one of the storage devices backing the source pool to at least one of the storage devices backing the destination pool based on the third address.

### Claim 9

A method of managing input/output (IO) between software and a storage controller in a computing system, the method comprising:
discovering, by the storage controller, storage devices in the computing system;
creating, by the storage controller, pools of the storage devices;
obtaining, by the software, information describing the pools;
determining, by the software in cooperation with the storage controller, an address space for each of the pools;
maintaining, by the software, first metadata having a first address of an object in an address space of a first pool of the pools;
executing, through communication between the software to the storage controller, a storage transaction referencing the first pool of the pools and the first address in the address space for the first pool; and
maintaining, by the storage controller, second metadata that maps the address spaces of the pools to address spaces of the storage devices.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
creating, by the storage controller, arrays of the storage devices; and
assigning, by the storage controller, the arrays to the pools.

### Claim 11 (depends on 10)

The method of claim 10, wherein the pools are created based on performance of the arrays of the storage devices, each of the pools having a different performance metric.

### Claim 12 (depends on 9)

The method of claim 9, further comprising:
determining, by the storage controller, a list of free addresses in an address space of the storage devices.

### Claim 13 (depends on 9)

The method of claim 9, further comprising:
determining, by the storage controller for each pool of the pools, a map of the address space of the pool to an address space of the storage devices.

### Claim 14 (depends on 9)

The method of claim 9, wherein the storage transaction is a request to write a data object, and wherein the method further comprises:
communicating, from the first software to the storage controller, the request to write the data object, the request specifying the first pool of the pools and the first address in the first pool;
determining, by the storage controller, a second address in an address space of the storage devices;
updating, by the storage controller, a map of the address space of the first pool to the address space of the storage devices; and
writing, by the storage controller, the data object to at least one of the storage devices based on the second address.

### Claim 15 (depends on 9)

The method of claim 9, wherein the storage transaction is a request to read a data object, and wherein the method further comprises:
communicating, from the first software to the storage controller, the request to read the data object, the request specifying the first pool of the pools and the first address in the first pool;
determining, by the storage controller, a second address in an address space of the storage devices that is mapped to the first address from a map of the address space of the first pool to the address space of the storage devices;
reading, by the storage controller, the data object from at least one of the storage devices based on the second address.

### Claim 16 (depends on 9)

The method of claim 9, wherein the storage transaction is a request to move a data object, wherein the first pool is a source pool of the pools and the first address is in the address space of the source pool, and wherein the further comprises:
communicating, from the first software to the storage controller, the request to move the data object, the request specifying the source pool, the first address in the address space of the source pool, a destination pool of the pools, and a second address in the address space of the destination pool;
determining, by the storage controller, a third address in an address space of the storage devices;
determining, by the storage controller, a fourth address in the address space of the storage devices that is mapped to the first address from a first map of the address space of the source pool to the address space of the storage devices;
updating, by the storage controller, a second map of the address space of the destination pool to the address space of the storage devices; and
moving, by the storage controller, the data object from at least one of the storage devices backing the source pool to at least one of the storage devices backing the destination pool based on the third address.

### Claim 17

A non-transitory computer readable medium comprising instructions to be executed in a computing device to cause the computing device to carry out a method of managing input/output (IO) between software and a storage controller in a computing system, the method comprising:
discovering, by the storage controller, storage devices in the computing system;
creating, by the storage controller, pools of the storage devices;
obtaining, by the software, information describing the pools;
determining, by the software in cooperation with the storage controller, an address space for each of the pools;
maintaining, by the software, first metadata having a first address of an object in an address space of a first pool of the pools;
executing, through communication between the software to the storage controller, a storage transaction referencing the first pool of the pools and the first address in the address space for the first pool; and
maintaining, by the storage controller, second metadata that maps the address spaces of the pools to address spaces of the storage devices.

### Claim 18 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein the storage transaction is a request to write a data object, and wherein the method further comprises:
communicating, from the first software to the storage controller, the request to write the data object, the request specifying the first pool of the pools and the first address in the first pool;
determining, by the storage controller, a second address in an address space of the storage devices;
updating, by the storage controller, a map of the address space of the first pool to the address space of the storage devices; and
writing, by the storage controller, the data object to at least one of the storage devices based on the second address.

### Claim 19 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein the storage transaction is a request to read a data object, and wherein the method further comprises:
communicating, from the first software to the storage controller, the request to read the data object, the request specifying the first pool of the pools and the first address in the first pool;
determining, by the storage controller, a second address in an address space of the storage devices that is mapped to the first address from a map of the address space of the first pool to the address space of the storage devices;
reading, by the storage controller, the data object from at least one of the storage devices based on the second address.

### Claim 20 (depends on 17)

The non-transitory computer readable medium of claim 17, wherein the storage transaction is a request to move a data object, wherein the first pool is a source pool of the pools and the first address is in the address space of the source pool, and wherein the further comprises:
communicating, from the first software to the storage controller, the request to move the data object, the request specifying the source pool, the first address in the address space of the source pool, a destination pool of the pools, and a second address in the address space of the destination pool;
determining, by the storage controller, a third address in an address space of the storage devices;
determining, by the storage controller, a fourth address in the address space of the storage devices that is mapped to the first address from a first map of the address space of the source pool to the address space of the storage devices;
updating, by the storage controller, a second map of the address space of the destination pool to the address space of the storage devices; and
moving, by the storage controller, the data object from at least one of the storage devices backing the source pool to at least one of the storage devices backing the destination pool based on the third address.
