Patents by Inventor William H. Moore

William H. Moore has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Patent number: 7689877
    Abstract: A method for reconstructing corrupted data, which includes determining a number of non-parity disks (n), selecting a first combination of n-1 non-parity disks, obtaining a first set of physical blocks from the first combination of n-1 non-parity disks, obtaining a parity block associated with the first set of physical blocks, reconstructing a first physical block using the first set of physical blocks and the parity block, combining the first physical block and the first set of physical blocks to obtain a first reconstructed logical block, checksuming the first reconstructed logical block to obtain a first calculated checksum, and determining whether the first calculated checksum is equal to a stored checksum associated with the first reconstructed logical block.
    Type: Grant
    Filed: April 19, 2006
    Date of Patent: March 30, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Patent number: 7657671
    Abstract: In general, the invention relates to a method for storing data. The method includes receiving an Input/Output (I/O) request to store data in a storage pool, determining whether the I/O request is a resilvering I/O request, if the I/O request is a resilvering I/O request: associating the I/O request with a first deadline, wherein the first deadline is associated with a low priority, and determining the quantized deadline for the I/O request using the first deadline. If the I/O request is not the resilvering I/O request: associating the I/O request with a second deadline, determining the quantized deadline for the I/O request using the second deadline, placing the I/O request in the I/O queue using the quantized deadline, and issuing the I/O request to the storage pool using the I/O queue.
    Type: Grant
    Filed: April 19, 2006
    Date of Patent: February 2, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore, Matthew A. Ahrens
  • Publication number: 20090327602
    Abstract: A method for wear level-based allocation in a storage pool. The method includes receiving a first request to write a first data item in a storage pool, where the storage pool includes a number of physical locations associated with the storage devices, and where each of the storage devices includes metadata regarding a level of wear of the storage device. The method further includes determining a first target physical location selected from the plurality of physical locations by using a wear-level selection policy and a wear cost for each of the storage devices, where the wear cost is determined based on a type of the storage device. The method further includes allocating a first data block to the first target physical location writing the first data block to the first target physical locations, wherein the first data block comprises a first portion of the first data item.
    Type: Application
    Filed: June 30, 2008
    Publication date: December 31, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: William H. Moore, Darrin P. Johnson, Eric C. Saxe
  • Publication number: 20090313532
    Abstract: A method for writing data to a storage pool includes receiving a write operation to write a logical block of data to the storage pool, determining a number (n?1) of physical blocks required to store the logical block of data, generating a parity block using the logical block of data, allocating n physical blocks in the storage pool, writing the parity block in the first of n allocated physical block, and writing the logical block of data across the remaining n?1 allocated physical blocks, where n is less than a number of disks in the storage pool, and where each of the n allocated physical blocks is located on a different disk in the storage pool.
    Type: Application
    Filed: August 20, 2009
    Publication date: December 17, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • Publication number: 20090265519
    Abstract: A method for retrieving a logical block, including receiving a request to read the logical block, and obtaining metadata associated with the logical block, wherein the metadata includes a replication type used to store the logical block and physical block locations in a storage pool for each physical block associated with the logical block. The method further includes obtaining power state information including a power state for the storage devices specified in the physical block locations, selecting a first set of physical block locations using the metadata, the power state information, and a power-usage selection policy, and generating I/O requests, where each I/O request specifies one of the first set of physical block locations. The method further includes issuing the I/O requests, receiving physical blocks in response to the I/O requests, and constructing the logical block using the physical blocks.
    Type: Application
    Filed: April 18, 2008
    Publication date: October 22, 2009
    Applicant: Sun Microsystems, Inc.
    Inventors: William H. Moore, Darrin P. Johnson, George R. Wilson
  • Patent number: 7596739
    Abstract: A method for writing data to a storage pool includes receiving a write operation to write a logical block of data to the storage pool, determining a number (n?1) of physical blocks required to store the logical block of data, generating a parity block using the logical block of data, allocating n physical blocks in the storage pool, writing the parity block in the first of n allocated physical block, and writing the logical block of data across the remaining n?1 allocated physical blocks, where n is less than a number of disks in the storage pool, and where each of the n allocated physical blocks is located on a different disk in the storage pool.
    Type: Grant
    Filed: May 15, 2006
    Date of Patent: September 29, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7584229
    Abstract: A method for priority-based allocation in a storage pool involves receiving a request to write a data item in the storage pool, where the storage pool includes multiple metaslabs, and where each of the metaslabs includes a contiguous region of data. The method further involves determining a target metaslab selected from the multiple metaslabs by comparing multiple allocation priorities, where each of the allocation priorities is associated with one of the metaslabs, allocating a block to the target metaslab, and writing the block to the target metaslab, where the block includes a portion of the data item.
    Type: Grant
    Filed: October 31, 2006
    Date of Patent: September 1, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Darrin P. Johnson, Jeffrey S. Bonwick, Tabriz I. Holtz
  • Patent number: 7533225
    Abstract: A method for reading a block, involving receiving a request to obtain the block, wherein the request comprises a block pointer, determining a block endianness by reading an endianness bit, obtaining the block using the block pointer, and byte-swapping data in the block to obtain a byte-swapped block, if a host endianness does not match the block endianness.
    Type: Grant
    Filed: August 17, 2004
    Date of Patent: May 12, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore, Matthew A. Ahrens
  • Patent number: 7526615
    Abstract: A method for caching a block of data. The method including receiving a request to store the block and determining whether an active cache is able to expand. If the active cache is able to expand, then expanding the active cache to obtain an expanded active cache, and storing the block in the expanded active cache. If the active cache is not able to expand, then determining whether evictable blocks are present in the victim cache. If evictable blocks are present in the victim cache, then evicting a sufficient number of the evictable blocks from the victim cache to facilitate storing the block in the active cache, where the evictable blocks in the victim cache are compressed.
    Type: Grant
    Filed: August 31, 2006
    Date of Patent: April 28, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore, Mark J. Maybee, Matthew A. Ahrens
  • Publication number: 20090086650
    Abstract: In general, in one aspect, the invention relates to a method for conserving power. The method includes determining a first network connection speed for a network interface card (NIC), configuring the NIC to operate at the first network connection speed, processing, after the configuration, packets received by the NIC, obtaining a bandwidth utilization of the NIC, determining, using a power management policy, a second network connection speed for the NIC based on the bandwidth utilization when the bandwidth utilization is outside a threshold range, and configuring the NIC to operate at the second network connection speed.
    Type: Application
    Filed: September 27, 2007
    Publication date: April 2, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: William H. Moore, Darrin P. Johnson, Randall S. Fishel
  • Publication number: 20090089343
    Abstract: A method for priority-based allocation in a storage pool, involving receiving a first request to write a first data item in the storage pool, wherein the storage pool includes a first hybrid drive including a first plurality of metaslabs associated with a first storage type and a second plurality of metaslabs associated with a second storage type, selecting a first target metaslab from the first and second plurality of metaslabs based on a first plurality of allocation priorities, wherein the first plurality of allocation priorities are determined using a storage and power management policy, a storage characteristic, and a power characteristic associated with the first storage type and the second storage type in the first hybrid drive, allocating a first block to the first target metaslab, and writing the first block to the first target metaslab, wherein the first block includes a first portion of the first data item.
    Type: Application
    Filed: September 27, 2007
    Publication date: April 2, 2009
    Applicant: SUN MICROSYSTEMS, INC.
    Inventors: William H. Moore, Darrin P. Johnson, George R. Wilson
  • Patent number: 7480684
    Abstract: A method for locating a root block in file system metadata, includes traversing the file system metadata to locate a leaf block, wherein the leaf block comprises a plurality of root blocks and at least one of the plurality of root blocks is unallocated, allocating the at least of one the plurality of unallocated root blocks to obtain an allocated root block, wherein the leaf block is associated with a fill count and the fill count is less than a maximum fill count of the leaf block.
    Type: Grant
    Filed: April 20, 2006
    Date of Patent: January 20, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore, Matthew A. Ahrens
  • Patent number: 7478179
    Abstract: A method for executing input/output (I/O) operations based on priority involves receiving a first I/O request for a unit of data, receiving a second I/O request for the same unit of data, determining a priority of the first I/O request and a priority of the second I/O request, and executing the first I/O request based on priority, where the first I/O request is executed based on the higher of the priority of the first I/O request and the priority of the second I/O request.
    Type: Grant
    Filed: May 12, 2006
    Date of Patent: January 13, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Patent number: 7469320
    Abstract: A method for caching a block, which includes receiving a request to store the block in a cache and determining whether the cache is able to expand. If the cache is not able to expand, then determining whether evictable blocks are present in the cache and, if evictable blocks are present in the cache determining whether a total size of the evictable blocks is greater than or equal to a size of the block, evicting a sufficient number of the evictable blocks from the cache and storing the block in the cache, if the total size of the evictable blocks is greater than or equal to the size of the block, and activating a cache throttle, if the total size of the evictable blocks is less than the size of the block.
    Type: Grant
    Filed: May 3, 2006
    Date of Patent: December 23, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore, Mark J. Maybee, Matthew A. Ahrens
  • Patent number: 7437528
    Abstract: A method for allocating space on a disk involving receiving a request to allocate space on the disk having a first size, determining whether contiguous space of the first size exists on the disk. If contiguous space of the first size exists on the disk, allocating the contiguous space on the disk to obtain a contiguous space address, and responding to the request to allocate space on disk with a contiguous space pointer. If no contiguous space of the first size exists on the disk, allocating a gang block header, populating the gang block header, and responding to the request to allocate space on the disk with a gang block header pointer.
    Type: Grant
    Filed: August 17, 2004
    Date of Patent: October 14, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7398329
    Abstract: A method for pipelining execution input/output (I/O) includes obtaining a first I/O operation, determining a first plurality of stages of a pipeline needed to execute the first I/O operation, and executing each of the first plurality of stages to complete the I/O operation, wherein the first plurality of stages is a subset of a plurality of stages associated with pipeline, and wherein each of the first plurality of stages of the pipeline is executed in sequence.
    Type: Grant
    Filed: April 20, 2006
    Date of Patent: July 8, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Patent number: 7386692
    Abstract: A method for storing data, including receiving a request to store data in a storage pool, determining a quantized deadline for the request, placing the request in an Input/Output (I/O) queue using the quantized deadline, and issuing the request to the storage pool using the I/O queue.
    Type: Grant
    Filed: August 20, 2004
    Date of Patent: June 10, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Publication number: 20080126580
    Abstract: A method for processing a first input/output (I/O) request on a network attached storage (NAS) device that includes receiving the first I/O request from a source by the NAS device, placing the first I/O request in an I/O queue associated with the NAS device, wherein the first I/O request is placed in the I/O queue based on a priority of the first I/O request using a remote storage access protocol, and when the first I/O request is associated with the highest priority in the I/O queue, determining whether a bandwidth associated with the source of the first I/O request is exceeded, processing the first I/O request if the bandwidth associated with the source of the first I/O request is not exceeded, and placing the first I/O request in sleep mode if the bandwidth associated with the source of the first I/O request is exceeded.
    Type: Application
    Filed: July 20, 2006
    Publication date: May 29, 2008
    Applicant: Sun Microsystems, Inc.
    Inventors: Sunay Tripathi, William H. Moore, Brian L. Wong
  • Patent number: 7376758
    Abstract: A method for executing a selected input/output (I/O) command from a plurality of I/O commands based on a dependency graph of I/O commands includes building the dependency graph of I/O commands, wherein the dependency graph is built by requiring all children of the selected I/O command to be ready before the selected I/O command is ready, and executing the I/O command based on the dependency graph, wherein execution of the selected I/O command is completed when all of the children of the selected I/O command finish execution.
    Type: Grant
    Filed: April 20, 2006
    Date of Patent: May 20, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, William H. Moore
  • Publication number: 20080104204
    Abstract: A method for power-managing storage devices in a storage pool involves monitoring the storage pool to determine whether a storage management policy is satisfied, where the storage pool comprises a first storage device that is powered up and a second storage device that is powered down, powering up the second storage device after the storage management policy is satisfied, and making the second storage device available for use in the storage pool after the second storage device is powered up.
    Type: Application
    Filed: October 31, 2006
    Publication date: May 1, 2008
    Applicant: Sun Microsystems, Inc.
    Inventors: William H. Moore, Darrin P. Johnson, Tabriz I. Holtz