Patents by Inventor Jeffrey Bonwick

Jeffrey 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: 7549035
    Abstract: A method for propagating reference and modification bit values into a translation table. The method includes issuing a write instruction including a virtual address, translating the virtual address to a corresponding physical address in a corresponding entry in a TLB, writing data to the corresponding physical address, setting at least one of a reference bit value or a modification bit value in the corresponding entry in the TLB, analyzing the TLB to identify any set reference bit values and set modification bit values, updating a corresponding entry in a translation table for each one of the identified set reference bit values and the identified set modification bit values and resetting the identified set reference bit values and the identified set modification bit values in the TLB.
    Type: Grant
    Filed: September 22, 2006
    Date of Patent: June 16, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: George Cameron, Blake Jones, Jeffrey Bonwick
  • Patent number: 7546439
    Abstract: A method of identifying a shared main memory page containing a physical address corresponding to a virtual address included in an issued write instruction. The method includes determining the selected virtual address is not within a reach of a TLB entry that is currently loaded in the TLB. If one of the BBR entries includes the selected virtual address, then identifying one of the BBR entries that includes the selected virtual address, calculating a new TLB entry that includes the selected virtual address and loading the new TLB entry in the TLB.
    Type: Grant
    Filed: September 22, 2006
    Date of Patent: June 9, 2009
    Assignee: Sun Microsystems, Inc.
    Inventors: George Cameron, Blake Jones, Jeffrey Bonwick
  • Patent number: 7472253
    Abstract: A computer system comprising a main memory and a processor die coupled to the main memory by a first bus. The processor die includes a processor core coupled to a first cache memory and multiple base and bounds registers (BBRS). Each of BBRs have a base virtual address field, an ending virtual address field and a base physical address field. The first cache memory has a table lookaside buffer (TLB) entry stored therein.
    Type: Grant
    Filed: September 22, 2006
    Date of Patent: December 30, 2008
    Assignee: Sun Microsystems, Inc.
    Inventors: George Cameron, Blake Jones, Jeffrey Bonwick
  • Publication number: 20070198889
    Abstract: A method for reconstructing a logical block, wherein the logical block comprises a first set of sectors. The method including obtaining a copy of the logical block comprising a second set of sectors, determining which of the sectors in the first set of sectors are identical to sectors in the second set of sectors to obtain identical sectors, selecting a first combination of non-identical sectors from the first set of sectors and the second set of sectors, combining a copy of each of the identical sectors with the first combination of non-identical sectors to obtain a first reconstructed logical block, calculating a first checksum for the first reconstructed logical block, and determining whether the first calculated checksum is equal to the stored checksum associated with the first logical block.
    Type: Application
    Filed: April 19, 2006
    Publication date: August 23, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • Publication number: 20070174494
    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: Application
    Filed: April 20, 2006
    Publication date: July 26, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore
  • 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: 20070150624
    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: Application
    Filed: April 20, 2006
    Publication date: June 28, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • Publication number: 20070130387
    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: Application
    Filed: May 12, 2006
    Publication date: June 7, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • 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
  • 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: 20070112884
    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: Application
    Filed: May 10, 2006
    Publication date: May 17, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Neil Perrin, Jeffrey Bonwick
  • Publication number: 20070106869
    Abstract: A method for storing a block in a file system includes attempting to store the block at a location on a disk, where the block is associated with a birth time and is selected from a group consisting of a data block and an indirect block, and updating a dirty time log (DTL) with the birth time if the block is not stored successfully on the disk.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • Publication number: 20070106677
    Abstract: A computer readable medium includes executable instructions for resilvering a hierarchical block tree in a storage pool by traversing a branch of the hierarchical block tree only if a birth time of a parent block of the branch is greater than or equal to a lowest birth time on a dirty time log (DTL), and resilvering a child block in the branch only if the DTL comprises a birth time of the child block.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick, Matthew Ahrens
  • Publication number: 20070106870
    Abstract: A system includes a storage pool including a first disk and a second disk, a data management unit (DMU), and a storage pool allocator (SPA). The SPA is configured to receive a request from the DMU to write a logical block, allocate a first physical block on the first disk, attempt to write the logical block to the first physical block, and allocate a second physical block on the second disk, if the attempt to write the logical block to the first physical block fails.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore, Matthew Ahrens
  • Publication number: 20070106867
    Abstract: A method for resilvering a storage pool includes identifying a live block in the storage pool, determining whether a birth time associated with the live block is on a dirty time log (DTL), and resilvering the live block, if the birth time is on the DTL.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore
  • Publication number: 20070106632
    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: Application
    Filed: April 20, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore, Matthew Ahrens
  • Publication number: 20070106865
    Abstract: A method for writing a logical block into a storage pool includes receiving a request to write the logical block, selecting a block allocation policy, by a file system associated with the storage pool, from a set of allocation policies, obtaining a list of free physical blocks in the storage pool, allocating a physical block from the list of free physical blocks, based on the block allocation policy, and writing the logical block to the physical block.
    Type: Application
    Filed: April 20, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • Publication number: 20070106925
    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, checksumming 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: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: William Moore, Jeffrey Bonwick
  • Publication number: 20070106846
    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: Application
    Filed: May 3, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore, Mark Maybee, Matthew Ahrens
  • Publication number: 20070106862
    Abstract: A method for storing a data block in a storage pool, including receiving a write operation for the data block, writing the data block into the storage pool, determining a first indirect block to store in the storage pool, wherein the first indirect block references the data block, writing the first indirect block to a first location in the storage pool, creating a copy of the first indirect block, and writing the copy of first indirect block to a second location in the storage pool.
    Type: Application
    Filed: April 19, 2006
    Publication date: May 10, 2007
    Applicant: Sun Microsystems, Inc.
    Inventors: Jeffrey Bonwick, William Moore, Matthew Ahrens