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: 12645508Abstract: 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: GrantFiled: August 8, 2024Date of Patent: June 2, 2026Assignee: Microsoft Technology Licensing, LLCInventor: Garret Buban
-
Publication number: 20260119300Abstract: 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: ApplicationFiled: October 25, 2024Publication date: April 30, 2026Inventor: Garret BUBAN
-
Publication number: 20260044391Abstract: 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: ApplicationFiled: August 8, 2024Publication date: February 12, 2026Applicant: Microsoft Technology Licensing, LLCInventor: Garret BUBAN
-
Publication number: 20250355652Abstract: 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: ApplicationFiled: May 14, 2024Publication date: November 20, 2025Inventors: Garret BUBAN, Madhav Himanshubhai PANDYA, David Marion HATTAWAY
-
Publication number: 20250306793Abstract: 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: ApplicationFiled: March 29, 2024Publication date: October 2, 2025Inventor: Garret BUBAN
-
Patent number: 12321612Abstract: 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: GrantFiled: May 19, 2023Date of Patent: June 3, 2025Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventor: Garret Buban
-
Publication number: 20250061234Abstract: 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: ApplicationFiled: August 16, 2023Publication date: February 20, 2025Inventor: Garret BUBAN
-
Publication number: 20240385932Abstract: 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: ApplicationFiled: May 17, 2023Publication date: November 21, 2024Inventor: Garret BUBAN
-
Publication number: 20240385757Abstract: 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: ApplicationFiled: May 19, 2023Publication date: November 21, 2024Inventor: Garret BUBAN
-
Patent number: 11281396Abstract: 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: GrantFiled: September 23, 2019Date of Patent: March 22, 2022Assignee: Microsoft Technology Licensing, LLCInventor: Garret Buban
-
Patent number: 11108698Abstract: 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: GrantFiled: February 3, 2017Date of Patent: August 31, 2021Assignee: Microsoft Technology Licensing, LLCInventor: Garret Buban
-
Publication number: 20210089228Abstract: 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: ApplicationFiled: September 23, 2019Publication date: March 25, 2021Inventor: Garret BUBAN
-
Patent number: 10754549Abstract: 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: GrantFiled: May 30, 2018Date of Patent: August 25, 2020Assignee: Microsoft Technology Licensing, LLCInventors: 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: 10721177Abstract: 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: GrantFiled: February 22, 2019Date of Patent: July 21, 2020Assignee: Microsoft Technology Licensing, LLCInventor: Garret Buban
-
Patent number: 10564665Abstract: 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: GrantFiled: May 1, 2018Date of Patent: February 18, 2020Assignee: Microsoft Technology Licensing, LLCInventors: Cheng Huang, Garret Buban, Jacob R. Lorch, Aaron W. Ogus, Mauricio David Zaragoza Ibarra, Jieqing Wang
-
Publication number: 20190339734Abstract: 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: ApplicationFiled: May 1, 2018Publication date: November 7, 2019Inventors: Cheng Huang, Garret Buban, Jacob R. Lorch, Aaron W. Ogus, Mauricio David Zaragoza Ibarra, Jieqing Wang
-
Publication number: 20190190842Abstract: 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: ApplicationFiled: February 22, 2019Publication date: June 20, 2019Applicant: Microsoft Technology Licensing, LLCInventor: Garret BUBAN
-
Patent number: 10250517Abstract: 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: GrantFiled: February 3, 2017Date of Patent: April 2, 2019Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventor: Garret Buban
-
Publication number: 20180227238Abstract: 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: ApplicationFiled: February 3, 2017Publication date: August 9, 2018Applicant: Microsoft Technology Licensing, LLCInventor: Garret BUBAN
-
Publication number: 20180227237Abstract: 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: ApplicationFiled: February 3, 2017Publication date: August 9, 2018Applicant: Microsoft Technology Licensing, LLCInventor: Garret BUBAN