Patents by Inventor Matthew A. Ahrens

Matthew A. Ahrens 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: 7603568
    Abstract: A method for storing a data block, involving storing the data block in a storage pool, obtaining a data block location, calculating a 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 data block checksum.
    Type: Grant
    Filed: April 21, 2004
    Date of Patent: October 13, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: Matthew A. Ahrens, Jeffrey S. Bonwick
  • 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: 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: 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: 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: 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: 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: 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: 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
  • Publication number: 20070168569
    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: Application
    Filed: April 19, 2006
    Publication date: July 19, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore, Matthew Ahrens
  • Publication number: 20070124659
    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: May 15, 2006
    Publication date: May 31, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick, Matthew Ahrens
  • 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
  • Publication number: 20070118576
    Abstract: A method for writing a data block to a storage pool. The method including receiving a write operation for a block, determining whether the block comprises metadata, and if the block comprises metadata: determining a first replication type for the block, and writing the block to the storage pool in accordance with the first replication type. If the block does not comprise metadata: determining a second replication type for the block and writing the block to the storage pool in accordance with the second replication type.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 24, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick, Matthew Ahrens
  • Publication number: 20070118578
    Abstract: In general, embodiments of the invention relate to a disk, which includes a plurality of files and rectory associated with the plurality of files comprising a plurality of directory entries. Further, each of the plurality of directory entries is associated one of the plurality of files and each of the plurality of directory entries is associated with a collision differentiator (CD). In one aspect of the invention, a hash value calculated for each of the plurality of directory entries is used to determine the CD associated with each of the plurality of directory entries.
    Type: Application
    Filed: May 11, 2006
    Publication date: May 24, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Matthew Ahrens, Mark Maybee
  • Publication number: 20070112771
    Abstract: A method for modifying a directory entry, which includes receiving a request to modify the directory entry, determining whether a directory entry lock associated with the directory entry is present, instantiating the directory entry lock, if the directory entry lock associated with the directory entry is not present, waiting until the directory entry lock is released, if the directory entry lock is present, providing the directory entry lock to a caller of the request, placing an entry corresponding to the directory entry lock on a dynamic lock list associated with the directory, processing the request by the caller, releasing the directory entry lock once the request has been processed, and removing the entry corresponding to the directory entry lock from the dynamic lock list.
    Type: Application
    Filed: May 11, 2006
    Publication date: May 17, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Mark Maybee, Matthew Ahrens
  • Publication number: 20070112895
    Abstract: A method for backing up a file system, including obtaining a first indirect block comprising a first block pointer, obtaining a first birth time from the first block pointer, determining whether the first birth time is subsequent to a time of a last backup, and backing up a first block referenced by the first block pointer, if the first birth time is subsequent to the time of the last backup.
    Type: Application
    Filed: May 11, 2006
    Publication date: May 17, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Matthew Ahrens, Mark Maybee