# US 2003/0135709 A1 · Dynamic allocation of computer memory

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

- Number: US 2003/0135709 A1
- Document ID: US20030135709A1
- Status: Published application
- Kind: A1
- Application number: 10/052,208
- Filed: 2002-01-17
- Published: 2003-07-17
- Earliest claimed: 2002-01-17
- Assignees: FalconStor Software, Inc.
- Inventors: Ronald Steven Niles; Larry Louie
- Web page: https://patentgrep.com/patent/US20030135709A1

## CPC

- G06F 3/0676: {Magnetic disk device}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/064: {Management of blocks}
- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method for processing requests or commands for writing and reading to and from memory that has not been allocated and reserved for one or more volumes, and a method for establishing one or more volumes, where the one or more volumes define an area of the memory that is accumulatively greater than the actual memory capacity, thus allowing for memory to be added at a later time.

## Claims

### Claim 1

A method for writing data to a memory having physical sector addresses that have not been assigned to logical sector addresses, the method comprising:
receiving a write command having associated therewith a starting logical sector address;
assigning the starting logical sector address to a group of the physical sector addresses;
assigning the group of the physical sector addresses to a group of logical sector addresses;
determining from the group of the physical sector addresses a physical sector address associated with the starting logical sector address; and
writing data to the physical sector address within the group of the physical sector addresses associated with the starting logical sector address.

### Claim 2 (depends on 1)

The method of claim 1 wherein the write command has associated therewith a write sector count, the group of the physical sector addresses having a physical starting sector address and a sector count, and the group of logical sector addresses having a group starting logical sector address.

### Claim 3 (depends on 2)

The method of claim 2 wherein the determining from the group of the physical sector addresses comprises:
determining a value by subtracting the group starting logical sector address from the starting logical sector address; and
determining a second value by adding the value to the physical starting sector address.

### Claim 4 (depends on 2)

The method of claim 2 further comprises:
determining whether the write sector count exceeds an amount of physical sector addresses available within the group of the physical sector addresses;
if it does, determining a second starting logical sector address;
assigning the second starting logical sector address to a second group of the physical sector addresses; and
assigning the second group of the physical sector addresses to a second group of logical sector addresses.

### Claim 5 (depends on 4)

The method of claim 4 wherein the determining whether the write sector count exceeds an amount of physical sector addresses available further comprises:
adding the physical starting sector address to the sector count producing a third value;
subtracting the second value from the third value producing a fourth value; and
comparing the fourth value to the write sector count,
if the write sector count is greater than the fourth value, then the write sector count exceeds an amount of physical sector addresses available.

### Claim 6 (depends on 1)

The method of claim 1 further comprises determining whether an amount of data written to the group of the physical sector addresses exceeds a predefined amount.

### Claim 7 (depends on 6)

The method of claim 6 further comprises indicating that the amount of data written to the group of the physical sector addresses exceeds the predefined amount, if the amount of data written to the group of the physical sector addresses exceeds the predefined amount.

### Claim 8

A method for processing a request or command, having a starting logical sector address, to write data to a memory, where the memory has not been allocated and reserved, the method comprising:
grouping physical sector addresses into a plurality of segments;
reading the starting logical sector address;
selecting a segment from the plurality of segments;
associating the segment and physical sector addresses associated therewith, with the starting logical sector address and a plurality of logical sector addresses;
determining a physical sector address associated with the starting logical sector address; and
writing the data in the memory at the physical sector address.

### Claim 9 (depends on 8)

The method of claim 8 further comprises setting an indicator indicating that the segment is selected.

### Claim 10 (depends on 8)

The method of claim 8 further comprises setting an indicator indicating that the segment and associated plurality of logical sector addresses are associated with the starting logical sector address.

### Claim 11 (depends on 8)

The method of claim 8 wherein the segment has a starting logical segment address, and associated therewith a starting physical sector addresses associated with the segment includes a starting physical sector address, the determining the physical sector address further comprises:
subtracting the starting logical segment address from the starting logical sector address producing a result; and
adding the result with the starting physical sector address.

### Claim 12

A method for establishing one or more logical partitions of a memory having a memory capacity, where the one or more logical partitions define an area of the memory that is accumulatively greater than the memory capacity, the method comprising:
representing the memory as a plurality of segments, each segment associated with a plurality of logical sectors of which the sum of the logical sectors are accumulatively greater than the memory capacity;
maintaining a list of the plurality of segments available for association to the one or more logical sector addresses; and
establishing a data structure associated with each of the plurality of segments, the data structure defining properties of the segment.

### Claim 13 (depends on 11)

The method of claim 11 wherein the properties comprises a physical starting sector address and sector count.

### Claim 14 (depends on 12)

The method of claim 12 further comprises receiving a request or command to write data, wherein the request or command includes a starting logical sector address.

### Claim 15 (depends on 14)

The method of claim 14 further comprises determining a physical sector address to write the data.

### Claim 16 (depends on 15)

The method of claim 15 further comprises:
subtracting a starting logical segment address from the starting logical sector address producing a result; and
adding the result with the starting physical sector address.

### Claim 17

A method for processing a request or command, having a starting logical sector address, to write data to a memory, where the memory has not been allocated and reserved and is represented as a plurality of segments, the method comprising:
reading the starting logical sector address;
selecting a first segment from the plurality of segments;
selecting a first set of physical sector addresses;
associating the first segment and the first set of physical sector addresses to the starting logical sector address;
associating the first set of physical sector addresses with a set of logical sector addresses;
determining a physical sector address associated with the starting logical sector address;
determining a quantity of physical sectors available within the first segment;
determining whether the data exceeds the quantity of physical sectors;
if the data exceeds the quantity of physical sectors, selecting a second segment from the plurality of segments;
selecting a second set of physical sector addresses;
associating the second segment and the second set of physical sector addresses to a second starting logical sector address;
associating the second set of physical sector addresses with a second set of logical sector addresses;
determining a second physical sector address associated with the second starting logical sector address; and
writing the data in the memory at the first set of physical sector addresses and the second set of physical sector addresses.

### Claim 18

A method for processing a request or command, having a starting logical sector address and a sector count, to write to a memory, where one or more segments having a predetermined number of logical sector addresses has been allocated and reserved for the memory, the method comprising:
determining whether the starting logical sector address is within a segment of the one or more segments;
if the starting logical sector address is within a segment of the one or more segments, determining the segment that the starting logical sector address is within;
determining whether the sector count exceeds the predetermined number of logical sector addresses in the segment that are available;
if the sector count does not exceed the predetermined number of logical sector addresses in the segment that are available, writing to the predetermined number of logical sector addresses in the segment that are available;
if the sector count does exceed the predetermined number of logical sector addresses in the segment that are available,
writing data to the predetermined number of logical sector addresses in the segment that are available,
determining a second starting logical sector address and a second sector count, and
determining whether the second starting logical sector address is within a second segment of the one or more segments; and
if the second starting logical sector address is within the second segment of the one or more segments, writing data to the predetermined number of logical sector addresses in the second segment that are available.

### Claim 19

A method for processing a request or command, having a starting logical sector address and a sector count value, to read data from a memory, the method comprises:
read a segment descriptor that is associated with the starting logical sector address;
determine from the segment descriptor a starting physical sector address and an ending physical sector address; and
read data located within a range from the starting physical sector address and the ending physical sector address from the memory.

### Claim 20 (depends on 19)

The method of claim 19 further comprises:
determine whether the data located within the range from the starting physical sector address and the ending physical sector address is associated with a second segment descriptor;
if the range is associated with a second segment descriptor, then read the second segment descriptor;
determine from the segment descriptor a second starting physical sector address and a second ending physical sector address; and
read data located within a second range from the second starting physical sector address and the second ending physical sector address from the memory.

### Claim 21 (depends on 19)

The method of claim 19 wherein the segment descriptor comprises a physical starting sector and a second sector count value.

### Claim 22

A method for processing a request or command, having a starting logical sector address, to read data from a memory, the method comprises the steps:
read the starting logical sector address;
determine whether the starting logical sector address is associated with a segment descriptor;
if the starting logical sector address is not associated with the segment descriptor, then generate data and respond to the request or command by returning the generated data; and
if the starting logical sector address is associated with the segment descriptor, then read the data associated with the segment descriptor from the memory.

### Claim 23 (depends on 22)

The method of claim 22 wherein the determining step comprises searching a table for a segment descriptor having a logical sector address range that is associated with the starting logical sector address.

### Claim 24 (depends on 22)

The method of claim 22 wherein the step of reading the data associated with the segment descriptor comprises:
reading a physical starting sector address and a sector count from the segment descriptor; and
determining which physical sector addresses to read the data.

### Claim 25

A method for processing a request or command, having a starting logical sector address and a sector count value, to read data from a memory, the method comprises the steps:
read the starting logical sector address;
determine whether the starting logical sector address is associated with a segment descriptor;
if the starting logical sector address is not associated with the segment descriptor, then generate data and respond to the request or command by returning the generated data; and
if the starting logical sector address is associated with the segment descriptor, then read the data from a location in memory that is associated with the starting logical sector address and the sector count value, as defined by the segment descriptor.

### Claim 26 (depends on 25)

The method of claim 25 wherein the determining step comprises searching a table for a segment descriptor having a logical sector address range that is associated with the starting logical sector address.

### Claim 27 (depends on 25)

The method of claim 25 wherein the step of reading the data from a location in memory comprises:
reading a physical starting sector address and a sector quantity from the segment descriptor;
determining physical sector addresses defined by the association of the starting logical sector address and the sector count value with the physical starting sector address and the sector quantity from the segment descriptor; and
reading the data located in memory at the physical sector addresses.

### Claim 28

A method for processing a request or command, having a starting logical sector address and a sector count value, to read data from a memory, the method comprising the steps:
reading the starting logical sector address;
determining from a group of segment descriptors a segment descriptor associated with the starting logical sector address; and
reading the data from a location in memory that is associated with the starting logical sector address and the sector count value, as defined by the segment descriptor.

### Claim 29 (depends on 28)

The method of claim 28 wherein the determining step comprises searching a table for a segment descriptor having a logical sector address range that is associated with the starting logical sector address.

### Claim 30 (depends on 28)

The method of claim 28 wherein the step of reading the data comprises:
reading a physical starting sector address and a sector quantity from the segment descriptor;
determining physical sector addresses defined by the association of the starting logical sector address and the sector count value with the physical starting sector address and the sector quantity from the segment descriptor; and
reading the data located in memory at the physical sector addresses.

### Claim 31

A method for processing a request or command, having a starting logical sector address and a sector count value, to write data to a memory, the method comprising the steps:
reading the starting logical sector address;
determining from a group of segment descriptors a segment descriptor associated with the starting logical sector address; and
writing the data to a location in memory that is associated with the starting logical sector address and the sector count value, as defined by the segment descriptor.

### Claim 32 (depends on 31)

The method of claim 31 wherein the determining step comprises searching a table for a segment descriptor having a logical sector address range that is associated with the starting logical sector address.

### Claim 33 (depends on 31)

The method of claim 31 wherein the writing the data comprises:
reading a physical starting sector address and a sector quantity from the segment descriptor;
determining physical sector addresses defined by the association of the starting logical sector address and the sector count value with the physical starting sector address and the sector quantity from the segment descriptor; and
writing the data to a location in memory associated with the physical sector addresses.
