Patents by Inventor Jeffrey S. Bonwick

Jeffrey S. Bonwick 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: 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
  • Patent number: 7526622
    Abstract: A method for storing a data block, including storing the data block in a storage pool, storing a copy of the data block in the storage pool, obtaining a data block location, calculating a data block checksum for the data block, storing a first indirect block in the storage pool, wherein the first indirect block comprises the data block location and the data block checksum, and storing a copy of the first indirect block in the storage pool, wherein the copy of the first indirect block comprises a copy of the data block location and a copy of the data block checksum.
    Type: Grant
    Filed: May 26, 2004
    Date of Patent: April 28, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7496586
    Abstract: A method for storing a data block, comprising compressing the data block using a first compression algorithm to obtain a compressed data block, generating a data block compression header, combining the compressed data and the data compression header to obtain a compressed data block package, storing the compressed data block package in a storage pool, obtaining a compressed data block package location, calculating a data block checksum for the compressed data block, and storing a first indirect block in the storage pool, wherein the first indirect block comprises the compressed data block package location, the data block checksum, and a compression flag.
    Type: Grant
    Filed: May 26, 2004
    Date of Patent: February 24, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7490096
    Abstract: A method for testing an intent log for a file system that includes creating a first file system, issuing a command to freeze the first file system, performing a plurality of commands on the first file system to obtain a plurality of deltas, wherein each of the plurality of deltas is stored in the intent log and is not committed to the first file system, copying the first file system to obtain a second file system, committing each of the plurality of deltas in the intent log to the second file system, unfreezing the first file system and committing each of the deltas in the intent log to the first file system, and comparing the first file system, after committing each of the deltas in the intent log, to the second file system to determine whether the intent log is valid.
    Type: Grant
    Filed: May 10, 2006
    Date of Patent: February 10, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Neil V. Perrin, Jeffrey S. Bonwick
  • 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: 7424574
    Abstract: A method for dynamic striping, involving receiving a request to write a data block into a storage pool, determining a physical disk location in the storage pool to store the data block using a dynamic striping policy, storing the data block at the physical disk location, and storing a first indirect block in the storage pool, wherein the first indirect block comprises the data block location and the data block checksum.
    Type: Grant
    Filed: April 21, 2004
    Date of Patent: September 9, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Matthew A. Ahrens, Jeffrey S. Bonwick
  • Patent number: 7415653
    Abstract: A method for storing a data block, involving storing the data block in a storage pool, obtaining a data block location, determining a checksum function for the data block, calculating a data block checksum using the checksum function for the data block, and storing a first indirect block in the storage pool, wherein the first indirect block comprises the data block location, the data block checksum, and a checksum function ID corresponding to the checksum function for the data block.
    Type: Grant
    Filed: April 21, 2004
    Date of Patent: August 19, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7412450
    Abstract: A method for storing a data block, including storing the data block in a storage pool, obtaining a data block location, calculating a secure data block checksum for the data block, and storing a first indirect block in the storage pool, wherein the first indirect block comprises the data block location and the secure data block checksum.
    Type: Grant
    Filed: May 26, 2004
    Date of Patent: August 12, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: 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
  • 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: 20080104150
    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: Application
    Filed: October 31, 2006
    Publication date: May 1, 2008
    Applicant: Sun Microsystems, Inc.
    Inventors: William H. Moore, Darrin P. Johnson, Jeffrey S. Bonwick, Tabriz I. Holtz
  • Publication number: 20080104355
    Abstract: A method for reallocating blocks in a storage pool involves copying multiple source blocks to multiple replacement blocks, where the source blocks are stored on a source disk in the storage pool, and where the replacement blocks are stored on one or more replacement disks in the storage pool, and generating an indirection object, where the indirection object includes a mapping of locations of the source blocks to locations of the replacement blocks.
    Type: Application
    Filed: October 31, 2006
    Publication date: May 1, 2008
    Applicant: Sun Microsystems, Inc.
    Inventors: William H. Moore, Darrin P. Johnson, Jeffrey S. Bonwick, Tabriz I. Holtz
  • Patent number: 7305537
    Abstract: A method for storing data, that includes receiving a request to store data in a storage pool, queuing the request in an Input/Output (I/O) queue, and issuing the request from the I/O queue upon receipt of a completion interrupt from the storage pool.
    Type: Grant
    Filed: March 1, 2005
    Date of Patent: December 4, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick
  • Patent number: 7281188
    Abstract: A method for correcting an error in a first block including detecting an error in the first block, generating a first permutation of the first block, calculating a first permutation checksum for the first permutation of the first block, and replacing the first block with the first permutation of the first block, if a first block checksum matches the first permutation checksum.
    Type: Grant
    Filed: May 26, 2004
    Date of Patent: October 9, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, Matthew A. Ahrens
  • Patent number: 7260703
    Abstract: In general, in one aspect, 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, placing a copy of the request in a logical block address (LBA) data structure using a LBA corresponding to the copy of the request, issuing the request to the storage pool using the I/O queue, and issuing an adjacent request to the storage pool using the LBA data structure, wherein the adjacent request is determined using the LBA of the copy of the request.
    Type: Grant
    Filed: August 20, 2004
    Date of Patent: August 21, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: William H. Moore, Jeffrey S. Bonwick, George R. Cameron
  • Patent number: 7225314
    Abstract: A method for storing a first data block, including evaluating the first data block comprising a first plurality of data, if the first plurality of data includes only zeros storing a first block pointer indicating that the first data block includes only zeros in a first indirect block, and if the first plurality of data does not include only zeros storing the first calculating a first data block checksum for the first data block, and storing the first block pointer comprising the first data block location and the first data block checksum in the first indirect block.
    Type: Grant
    Filed: May 26, 2004
    Date of Patent: May 29, 2007
    Assignee: Sun Microsystems, Inc.
    Inventors: Jeffrey S. Bonwick, Matthew A. Ahrens