Storage controller configured to select unused regions of a storage device for data storage according to head position
First Claim
1. A storage device controller configured for coupling to a storage device having a plurality of locations for storing data, wherein the controller is coupled to receive a write command including write data, and wherein the write command does not specify a location of the storage device where the write data is to be stored, and wherein the controller is configured to respond to the write command by:
- (i) selecting an unused location of the storage device, and (ii) writing the write data to the storage device, wherein the writing of the write data includes directing the storage device to store at least a portion of the write data in the unused location, wherein the controller is coupled to receive the write command from a host, and wherein the host is configured to track usage of the locations of the storage device, wherein the controller is coupled to receive a FREE command from the host, and wherein the FREE command specifies a location of the storage device which should be identified as unused.
2 Assignments
0 Petitions
Accused Products
Abstract
A storage device controller configured for coupling to a storage device (e.g., a hard disk drive) having a multiple locations for storing data. The controller is coupled to receive a WRITE ANYWHERE command including write data. Unlike a conventional write command, the WRITE ANYWHERE command does not specify a location of the storage device where the write data is to be stored. The controller responds to the WRITE ANYWHERE command by: (i) selecting one or more unused locations of the storage device, and (ii) writing the write data to the storage device, wherein the writing of the write data includes directing the storage device to store the write data in the one or more unused locations of the storage device. At least a portion of the write data in stored in each of the one or more unused locations. The controller may be coupled to receive the WRITE ANYWHERE command from a host configured to track usage of the locations of the storage device. After writing the write data to the storage device, the controller may report the one or more locations of the storage device where the write data is stored to the host. The host may also issue FREE commands to the controller specifying locations of the storage device which should be identified as unused. In response to a received FREE command, the controller may store information in a memory indicating that the location of the storage device specified by the FREE command is unused.
347 Citations
28 Claims
-
1. A storage device controller configured for coupling to a storage device having a plurality of locations for storing data, wherein the controller is coupled to receive a write command including write data, and wherein the write command does not specify a location of the storage device where the write data is to be stored, and wherein the controller is configured to respond to the write command by:
- (i) selecting an unused location of the storage device, and (ii) writing the write data to the storage device, wherein the writing of the write data includes directing the storage device to store at least a portion of the write data in the unused location, wherein the controller is coupled to receive the write command from a host, and wherein the host is configured to track usage of the locations of the storage device, wherein the controller is coupled to receive a FREE command from the host, and wherein the FREE command specifies a location of the storage device which should be identified as unused.
-
2. An apparatus, comprising:
-
a storage device having a plurality of locations for storing data;
a controller coupled to the storage device;
wherein the controller is coupled to receive a write command including write data, wherein the write command does not specify a location of the storage device where the write data is to be stored; and
wherein the controller is configured to respond to the write command by;
(i) selecting an unused location of the storage device, and (ii) writing the write data to the storage device, wherein the writing of the write data includes directing the storage device to store at least a portion of the write data in the unused locationa host coupled to the controller and configured to produce the write command, wherein the host tracks usage of the locations for storing data of the storage device, wherein the host is configured to issue a FREE command to the controller indicating a location of the storage device which should be identified as unused.
-
-
3. An apparatus, comprising:
-
a disk drive including a disk-shaped platter having a surface configured to store data, wherein the surface is divided into a plurality of different regions;
a controller coupled to the disk drive and comprising a memory for storing data indicating unused regions of the surface of the platter;
wherein the controller is configured to store a map on the disk-shaped platter, wherein the map indicates unused portions of the plurality of different regions, wherein said memory caches part or all of said map;
wherein the controller is coupled to receive a write command including write data, wherein the write command does not specify a region of the surface of the platter where the write data is to be stored; and
wherein the controller is configured to respond to the write command by;
(i) selecting an unused region of the surface of the platter from the data indicating unused regions of the surface of the platter, and (ii) writing the write data to the disk drive, wherein the writing of the write data includes directing the disk drive to store at least a portion of the write data in the selected unused region of the surface of the platter.- View Dependent Claims (4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
a central processing unit coupled to a memory and configured to execute instructions stored within the memory; and
file system software within the memory comprising instructions for tracking usage of the regions for storing data of the disk drive.
-
-
22. The apparatus as recited in claim 20, wherein after issuing the writing of the write data to the disk drive, the controller is configured to report the region of the surface of the platter where the portion of the write data is stored to the host.
-
23. The apparatus as recited in claim 20, wherein the host is configured to issue a FREE command to the controller indicating a region of the surface of the platter which should be identified as unused.
-
24. A method for writing data to a disk drive, the method comprising:
-
a drive controller receiving a file system command specifying data to be written to the disk drive but not specifying a location to write the data;
the drive controller determining a current head position of the disk drive and selecting a free location of the disk drive to write the specified data depending on the current head position;
the drive controller writing the specified data to the selected location;
the drive controller updating a map of free locations to indicate that the selected location is no longer free; and
the drive controller reporting to the file system the selected location at which the specified data was written;
wherein said map of free locations indicates which locations on said disk drive are free for storing data, and wherein said map of free locations is distributed into map portions residing on a plurality of tracks of the disk drive, and wherein each map portion corresponds to a data region residing on the same track, and wherein each map portion is offset from the corresponding data region so that the map portion can be written in the same disk rotation as the corresponding data region, and wherein said updating comprises updating the map portion for the data region in which the selected location is located.
-
-
25. A method for writing data to a disk drive, the method comprising:
-
a drive controller receiving a file system command specifying data to be written to the disk drive but not specifying a location to write the data;
the drive controller determining a current head position of the disk drive and selecting a free location of the disk drive to write the specified data depending on the current head position;
the drive controller writing the specified data to the selected location;
the drive controller updating a map of free locations to indicate that the selected location is no longer free; and
the drive controller reporting to the file system the selected location at which the specified data was written;
wherein said map of free locations indicates which locations on said disk drive are free for storing data, wherein said updating comprises the drive controller updating a portion of said map of free locations in a non-volatile memory. - View Dependent Claims (26, 27, 28)
-
Specification