# US 2013/0159613 A1 · Methods, apparatuses, and computer program products for enhancing memory erase functionality

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

- Number: US 2013/0159613 A1
- Document ID: US20130159613A1
- Status: Published application
- Kind: A1
- Application number: 13/771,868
- Filed: 2013-02-20
- Published: 2013-06-20
- Earliest claimed: 2008-11-26
- Assignees: Core Wireless Licensing S.a.r.l.
- Inventors: Olli Olavi LUUKKAINEN
- Web page: https://patentgrep.com/patent/US20130159613A1

## CPC

- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/7205: Cleaning, compaction, garbage collection, erase control
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method, apparatus, and computer program product are provided for enhancing memory erase functionality. An apparatus may include a block-based mass memory and a controller configured to receive an erase command from a host device comprising an indication of a location of a block in the mass memory storing memory allocation data. The controller may be further configured to access the memory allocation data based at least in part upon the indicated location. The controller may additionally be configured to determine, based at least in part upon the memory allocation data, blocks within the mass memory that have been freed by the host device. The controller may also be configured to erase the freed blocks. Corresponding methods and computer program products are also provided.

## Claims

### Claim 1

A method comprising:
receiving, at a controller embodied on a block-based mass memory, an erase command from a host device in communication with the mass memory such that the host device has ability to read from and write to the mass memory and is configured to free one or more blocks of the mass memory by writing to memory allocation data stored in the mass memory prior to sending the erase command to the controller, wherein the erase command comprises a location of a block storing memory allocation data for one or more blocks of the mass memory;
accessing the block storing memory allocation data based at least in part upon the location included in the erase command;
determining, based at least in part upon the memory allocation data, at least one block within the mass memory that has been freed by the host device; and
erasing the at least one freed block in response to the erase command.

### Claim 2 (depends on 1)

A method according to claim 1, wherein the host device has direct read and write access to the mass memory.

### Claim 3 (depends on 1)

A method according to claim 1, wherein the erase command comprises an indication of a size of an entry in the memory allocation data, an indication of a value of an entry denoting that a corresponding block is free, an indication of a number of entries in the memory allocation data, an indication of a location of a block in the mass memory corresponding to the first entry in the memory allocation data, and an indication of a size of a block in the mass memory.

### Claim 4 (depends on 1)

A method according to claim 1, wherein erasing the freed blocks comprises securely erasing the freed blocks so that data erased from the freed blocks cannot be restored.

### Claim 5 (depends on 1)

A method according to claim 1, wherein:
receiving an erase command comprises receiving an erase command for each file system partition on the mass memory;
accessing the block storing memory allocation data comprises accessing the memory allocation data for each file system partition;
determining blocks within the mass memory that have been freed by the host device comprises determining blocks within each file system partition on the mass memory that have been freed by the host device; and
erasing the freed blocks comprises erasing the freed blocks in each file system partition.

### Claim 6 (depends on 1)

A method according to claim 1, wherein the location of the block storing memory allocation data for one or more blocks of the mass memory further comprises a location of a block storing data comprising a free/allocated status of one or more blocks of the mass memory.

### Claim 7 (depends on 1)

A method according to claim 1, wherein the mass memory comprises a flash memory.

### Claim 8

A computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program instructions stored therein, the computer-readable program instructions comprising:
a program instruction for receiving, at a controller embodied on a block-based mass memory, an erase command from a host device in communication with the mass memory such that the host device has ability to read from and write to the mass memory and is configured to free one or more blocks of the mass memory by writing to memory allocation data stored in the mass memory prior to sending the erase command to the controller, wherein the erase command comprises a location of a block storing memory allocation data for one or more blocks of the mass memory;
a program instruction for accessing the block storing memory allocation data based at least in part upon the location included in the erase command;
a program instruction for determining, based at least in part upon the memory allocation data, at least one block within the mass memory that has been freed by the host device; and
a program instruction for erasing the at least one freed block in response to the erase command.

### Claim 9 (depends on 8)

A computer program product according to claim 8, wherein the host device has direct read and write access to the mass memory.

### Claim 10 (depends on 8)

A computer program product according to claim 8, wherein the erase command comprises an indication of a size of an entry in the memory allocation data, an indication of a value of an entry denoting that a corresponding block is free, an indication of a number of entries in the memory allocation data, an indication of a location of a block in the mass memory corresponding to the first entry in the memory allocation data, and an indication of a size of a block in the mass memory.

### Claim 11 (depends on 8)

A computer program product according to claim 8, wherein the program instruction for erasing the freed blocks comprises instructions for securely erasing the freed blocks so that data erased from the freed blocks cannot be restored.

### Claim 12 (depends on 8)

A computer program product according to claim 8, wherein:
the program instruction for receiving an erase command comprises instructions for receiving an erase command for each file system partition on the mass memory;
the program instruction for accessing the block storing memory allocation data comprises instructions for accessing the memory allocation data for each file system partition;
the program instruction for determining blocks within the mass memory that have been freed by the host device comprises instructions for determining blocks within each file system partition on the mass memory that have been freed by the host device; and
the program instruction for erasing the freed blocks comprises instructions for erasing the freed blocks in each file system partition.

### Claim 13 (depends on 8)

A computer program product according to claim 8, wherein the location of the block storing memory allocation data for one or more blocks of the mass memory further comprises a location of a block storing data comprising a free/allocated status of one or more blocks of the mass memory.

### Claim 14 (depends on 8)

A computer program product according to claim 8, wherein the mass memory comprises a flash memory.

### Claim 15

An apparatus comprising a block-based mass memory and a controller, wherein the controller is configured to:
receive an erase command from a host device in communication with the mass memory such that the host device has ability to read from and write to the mass memory and is configured to free one or more blocks of the mass memory by writing to memory allocation data stored in the mass memory prior to sending the erase command to the controller, wherein the erase command comprises a location of a block storing memory allocation data for one or more blocks of the mass memory;
access the block storing memory allocation data based at least in part upon the location included in the erase command;
determine, based at least in part upon the memory allocation data, at least one block within the mass memory that has been freed by the host device; and
erase the at least one freed block in response to the erase command.

### Claim 16 (depends on 15)

The apparatus of claim 15, wherein the host device has direct read and write access to the mass memory.

### Claim 17 (depends on 15)

The apparatus of claim 15, wherein the erase command comprises an indication of a size of an entry in the memory allocation data, an indication of a value of an entry denoting that a corresponding block is free, an indication of a number of entries in the memory allocation data, an indication of a location of a block in the mass memory corresponding to the first entry in the memory allocation data, and an indication of a size of a block in the mass memory.

### Claim 18 (depends on 15)

The apparatus of claim 15, wherein the controller is configured to erase the freed blocks by securely erasing the freed blocks so that data erased from the freed blocks cannot be restored.

### Claim 19 (depends on 15)

The apparatus of claim 15, wherein the controller is configured to:
receive an erase command by receiving an erase command for each file system partition on the mass memory;
access the block storing memory allocation data by accessing the memory allocation data for each file system partition;
determine blocks within the mass memory that have been freed by the host device by determining blocks within each file system partition on the mass memory that have been freed by the host device; and
erase the freed blocks by erasing the freed blocks in each file system partition.

### Claim 20 (depends on 15)

The apparatus of claim 15, wherein the location of the block storing memory allocation data for one or more blocks of the mass memory further comprises a location of a block storing data comprising a free/allocated status of one or more blocks of the mass memory.

### Claim 21 (depends on 15)

The apparatus of claim 15, wherein the mass memory comprises a flash memory.
