Patents by Inventor Garret Buban

Garret Buban 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: 12645508
    Abstract: According to examples, an apparatus includes processing units that execute threads using a hybrid locking/queuing operation for efficient processing of work units with mutual exclusion of the work units. Under the hybrid locking/queuing operation, a processing unit determines that a first thread is to process a first work unit, in which the first work unit is under protection of a hybrid exclusion object (HEO), and in which the HEO includes an HEO queue. In addition, the processing unit places a lock on the HEO, determines whether the HEO is owned by a thread, and based on a determination that the HEO is owned by a second thread, adds the first work unit to the HEO queue, and releases the lock on the HEO. The second thread assigns ownership of the HEO to the first work unit when the first work unit reaches a top of the HEO queue.
    Type: Grant
    Filed: August 8, 2024
    Date of Patent: June 2, 2026
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Garret Buban
  • Publication number: 20260119300
    Abstract: Methods, apparatuses, and products for efficient error chain logging in a multi-core, asynchronous execution environment, including: generating, in response to detecting an error at an error originating function in a chain of functions, a chain of error records that includes an error record for the error originating function and error records for each function at a higher-level than the error originating function, including: storing, in each error record other than the error record for the error originating function, error information that includes an identification of an error record for an immediately-lower level function; and storing each error record in a data structure for a core that is executing at least a portion of the chain of functions, wherein each core maintains a distinct data structure for storing error records.
    Type: Application
    Filed: October 25, 2024
    Publication date: April 30, 2026
    Inventor: Garret BUBAN
  • Publication number: 20260044391
    Abstract: According to examples, an apparatus includes processing units that execute threads using a hybrid locking/queuing operation for efficient processing of work units with mutual exclusion of the work units. Under the hybrid locking/queuing operation, a processing unit determines that a first thread is to process a first work unit, in which the first work unit is under protection of a hybrid exclusion object (HEO), and in which the HEO includes an HEO queue. In addition, the processing unit places a lock on the HEO, determines whether the HEO is owned by a thread, and based on a determination that the HEO is owned by a second thread, adds the first work unit to the HEO queue, and releases the lock on the HEO. The second thread assigns ownership of the HEO to the first work unit when the first work unit reaches a top of the HEO queue.
    Type: Application
    Filed: August 8, 2024
    Publication date: February 12, 2026
    Applicant: Microsoft Technology Licensing, LLC
    Inventor: Garret BUBAN
  • Publication number: 20250355652
    Abstract: Systems, methods, apparatuses, and computer program products are disclosed for generating, from platform-agnostic source code, platform-specific code to efficiently implement mutual exclusion. Platform-agnostic source code includes a first block of code associated with a first implementation-agnostic context that is structured to cause instances of the first block of code to execute in isolation from other instances of code associated with the first implementation-agnostic context. A mutual exclusion implementation is determined for efficient implementation of mutual exclusion on a target platform. Platform-specific code is generated for the target platform to execute instances of the first block of code in isolation from other instances of code associated with the first implementation-agnostic context based on the determined mutual exclusion implementation.
    Type: Application
    Filed: May 14, 2024
    Publication date: November 20, 2025
    Inventors: Garret BUBAN, Madhav Himanshubhai PANDYA, David Marion HATTAWAY
  • Publication number: 20250306793
    Abstract: System, methods, apparatuses, and computer program products are disclosed for hybrid data replication. Initially, data replication is achieved by storing at least one full copy of the data on one or more first nodes, and storing a second copy of the data as data fragments across a plurality of second nodes. Upon determining that a code generation condition is satisfied, one or more code fragments are generated based on the data. The full copies of the data stored on the first nodes may be deleted after storing the code fragments.
    Type: Application
    Filed: March 29, 2024
    Publication date: October 2, 2025
    Inventor: Garret BUBAN
  • Patent number: 12321612
    Abstract: Space efficient data integrity checks are disclosed herein. During a write operation of a first data to a location, a combined integrity value is calculated based on a first data integrity value of the first data and the location. The first data is stored at the location along with the combined integrity value. During a read operation of the first data, the first data is read from the location along with the combined integrity value, and a second data integrity value is calculated for the read first data. Data corruption and/or location errors can be determined based on the second data integrity value, the location, and the combined integrity value.
    Type: Grant
    Filed: May 19, 2023
    Date of Patent: June 3, 2025
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventor: Garret Buban
  • Publication number: 20250061234
    Abstract: Timestamps are used to prevent data tampering. A trusted data generator generates a concatenated data object including a data object and metadata, which includes a location indication, a timestamp, and, depending on the type of encryption, an integrity value. The trusted timestamp generator encrypts the concatenated data object, stores the encrypted concatenated data object (e.g., in untrusted storage) in accordance with a location indicated by the location indication, and protects the timestamp in trusted storage (e.g., by protecting at least the root timestamp). A trusted data validator extracts the data object and metadata from the decrypted concatenated data object and validates the data object by comparing the storage location to the extracted location indication, the protected timestamp to the extracted timestamp, and a calculated integrity value to the extracted integrity value.
    Type: Application
    Filed: August 16, 2023
    Publication date: February 20, 2025
    Inventor: Garret BUBAN
  • Publication number: 20240385932
    Abstract: System, methods, apparatuses, and computer program products are disclosed for indexing snapshots for hybrid two-level snapshot indirection. A first snapshot is stored for a dataset. The first snapshot includes a plurality of pointers that each point to a corresponding first data block associated with the dataset. Data blocks created after a latest existing snapshot and data blocks of the dataset are modified after the latest existing snapshot are stored as second data blocks. Second pointers that each point to a corresponding second data block are generated. A current record maintains the second pointers pointing to the second data blocks, and references the first snapshot for first data blocks unmodified since storing the first snapshot.
    Type: Application
    Filed: May 17, 2023
    Publication date: November 21, 2024
    Inventor: Garret BUBAN
  • Publication number: 20240385757
    Abstract: Space efficient data integrity checks are disclosed herein. During a write operation of a first data to a location, a combined integrity value is calculated based on a first data integrity value of the first data and the location. The first data is stored at the location along with the combined integrity value. During a read operation of the first data, the first data is read from the location along with the combined integrity value, and a second data integrity value is calculated for the read first data. Data corruption and/or location errors can be determined based on the second data integrity value, the location, and the combined integrity value.
    Type: Application
    Filed: May 19, 2023
    Publication date: November 21, 2024
    Inventor: Garret BUBAN
  • Patent number: 11281396
    Abstract: Methods, systems, and computer storage media for providing temporary storage for data that has to be durably stored based on a replica set that includes a partial replica and a set of full replicas in a distributed computing environment. The partial replica of the replica set temporarily and durably stores data but does not persist the data when the set of full replicas have communicated a promise response to store the data. In operation, instructions to communicate promise responses are communicated to a replica set comprising a partial replica and a set of full replicas. A promise response indicates that a replica in the replica set will commit the data block of the write request. Promise responses are received from the set of full replicas. Based on receiving promise responses from the set of full replicas, a forget instruction is communicated to the partial replica to forget the data block.
    Type: Grant
    Filed: September 23, 2019
    Date of Patent: March 22, 2022
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Garret Buban
  • Patent number: 11108698
    Abstract: A computing device includes a processor and memory. A throttling application is stored in the memory and is executed by the processor. The throttling application receives a server request from a first application. The throttling application is located in a non-accessible location relative to the first application. The throttling application is configured, in response to the server request, to estimate a completion time when the server request will complete; send the server request with the completion time to a server; receive a response to the server request from the server prior to the completion time; when the completion time for the server request is in the future, wait until the completion time is now; and when the completion time is now, indicate completion to the first application.
    Type: Grant
    Filed: February 3, 2017
    Date of Patent: August 31, 2021
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Garret Buban
  • Publication number: 20210089228
    Abstract: Methods, systems, and computer storage media for providing temporary storage for data that has to be durably stored based on a replica set that includes a partial replica and a set of full replicas in a distributed computing environment. The partial replica of the replica set temporarily and durably stores data but does not persist the data when the set of full replicas have communicated a promise response to store the data. In operation, instructions to communicate promise responses are communicated to a replica set comprising a partial replica and a set of full replicas. A promise response indicates that a replica in the replica set will commit the data block of the write request. Promise responses are received from the set of full replicas. Based on receiving promise responses from the set of full replicas, a forget instruction is communicated to the partial replica to forget the data block.
    Type: Application
    Filed: September 23, 2019
    Publication date: March 25, 2021
    Inventor: Garret BUBAN
  • Patent number: 10754549
    Abstract: An append-only streams capability may be implemented that allows the host (e.g., the file system) to determine an optimal stream size based on the data to be stored in that stream. The storage device may expose to the host one or more characteristics of the available streams on the device, including but not limited to the maximum number of inactive and active streams on the device, the erase block size, the maximum number of erase blocks that can be written in parallel, and an optimal write size of the data. Using this information, the host may determine which particular stream offered by the device is best suited for the data to be stored.
    Type: Grant
    Filed: May 30, 2018
    Date of Patent: August 25, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Bryan S. Matthew, Aaron W. Ogus, Vadim Makhervaks, Laura M. Caulfield, Rajsekhar Das, Scott Chao-Chueh Lee, Omar Carey, Madhav Pandya, Ioan Oltean, Garret Buban, Lee Prewitt
  • Patent number: 10721177
    Abstract: A computing device comprises a processor and memory. A throttling application stored in the memory that is executed by the processor is configured, in response to a new server request from a first application, to determine whether performing the new server request exceeds a predetermined number of requests in progress; if performing the new server request does not exceed a predetermined number of requests in progress, estimate a completion time for the new server request; insert the new server request and the completion time in a request queue; and send the new server request and a time to live field to a server, wherein the time to live field is equal to the completion time minus a current time that the new server request is sent to the server.
    Type: Grant
    Filed: February 22, 2019
    Date of Patent: July 21, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventor: Garret Buban
  • Patent number: 10564665
    Abstract: A first set of replicated state machines includes a first state machine that compares a clock value included in a state update message incremented by a first amount, a clock value for the first state machine incremented by a second amount, and a current local wall clock value for the first state machine to determine a maximum value and assigns the maximum value as the clock value for the first state machine. Additionally, in response to a passage of an amount of time, the first state machine advances the clock value for the first state machine to its current local wall clock value and propagates this clock value to the other state machines in the first set of replicated state machines. The advancement of the clock value for all state machines even in the absence of state updates improves their ability to respond to distributed read requests.
    Type: Grant
    Filed: May 1, 2018
    Date of Patent: February 18, 2020
    Assignee: Microsoft Technology Licensing, LLC
    Inventors: Cheng Huang, Garret Buban, Jacob R. Lorch, Aaron W. Ogus, Mauricio David Zaragoza Ibarra, Jieqing Wang
  • Publication number: 20190339734
    Abstract: A first set of replicated state machines includes a first state machine that compares a clock value included in a state update message incremented by a first amount, a clock value for the first state machine incremented by a second amount, and a current local wall clock value for the first state machine to determine a maximum value and assigns the maximum value as the clock value for the first state machine. Additionally, in response to a passage of an amount of time, the first state machine advances the clock value for the first state machine to its current local wall clock value and propagates this clock value to the other state machines in the first set of replicated state machines. The advancement of the clock value for all state machines even in the absence of state updates improves their ability to respond to distributed read requests.
    Type: Application
    Filed: May 1, 2018
    Publication date: November 7, 2019
    Inventors: Cheng Huang, Garret Buban, Jacob R. Lorch, Aaron W. Ogus, Mauricio David Zaragoza Ibarra, Jieqing Wang
  • Publication number: 20190190842
    Abstract: A computing device comprises a processor and memory. A throttling application stored in the memory that is executed by the processor is configured, in response to a new server request from a first application, to determine whether performing the new server request exceeds a predetermined number of requests in progress; if performing the new server request does not exceed a predetermined number of requests in progress, estimate a completion time for the new server request; insert the new server request and the completion time in a request queue; and send the new server request and a time to live field to a server, wherein the time to live field is equal to the completion time minus a current time that the new server request is sent to the server.
    Type: Application
    Filed: February 22, 2019
    Publication date: June 20, 2019
    Applicant: Microsoft Technology Licensing, LLC
    Inventor: Garret BUBAN
  • Patent number: 10250517
    Abstract: A computing device comprises a processor and memory. A throttling application stored in the memory that is executed by the processor is configured, in response to a new server request from a first application, to determine whether performing the new server request exceeds a predetermined number of requests in progress; if performing the new server request does not exceed a predetermined number of requests in progress, estimate a completion time for the new server request; insert the new server request and the completion time in a request queue; and send the new server request and a time to live field to a server, wherein the time to live field is equal to the completion time minus a current time that the new server request is sent to the server.
    Type: Grant
    Filed: February 3, 2017
    Date of Patent: April 2, 2019
    Assignee: MICROSOFT TECHNOLOGY LICENSING, LLC
    Inventor: Garret Buban
  • Publication number: 20180227238
    Abstract: A computing device comprises a processor and memory. A throttling application stored in the memory that is executed by the processor is configured, in response to a new server request from a first application, to determine whether performing the new server request exceeds a predetermined number of requests in progress; if performing the new server request does not exceed a predetermined number of requests in progress, estimate a completion time for the new server request; insert the new server request and the completion time in a request queue; and send the new server request and a time to live field to a server, wherein the time to live field is equal to the completion time minus a current time that the new server request is sent to the server.
    Type: Application
    Filed: February 3, 2017
    Publication date: August 9, 2018
    Applicant: Microsoft Technology Licensing, LLC
    Inventor: Garret BUBAN
  • Publication number: 20180227237
    Abstract: A computing device includes a processor and memory. A throttling application is stored in the memory and is executed by the processor. The throttling application receives a server request from a first application. The throttling application is located in a non-accessible location relative to the first application. The throttling application is configured, in response to the server request, to estimate a completion time when the server request will complete; send the server request with the completion time to a server; receive a response to the server request from the server prior to the completion time; when the completion time for the server request is in the future, wait until the completion time is now; and when the completion time is now, indicate completion to the first application.
    Type: Application
    Filed: February 3, 2017
    Publication date: August 9, 2018
    Applicant: Microsoft Technology Licensing, LLC
    Inventor: Garret BUBAN