Patents by Inventor Jeremy E. Elson
Jeremy E. Elson 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: 11422907Abstract: While connected to cloud storage, a computing device writes data and metadata to the cloud storage, indicates success of the write to an application of the computing device, and, after indicating success to the application, writes the data and metadata to local storage of the computing device. The data and metadata may be written to different areas of the local storage. The computing device may also determine that it has recovered from a crash or has connected to the cloud storage after operating disconnected and reconcile the local storage with the cloud storage. The reconciliation may be based at least on a comparison of the metadata stored in the area of the local storage with metadata received from the cloud storage. The cloud storage may store each item of data contiguously with its metadata as an expanded block.Type: GrantFiled: August 19, 2013Date of Patent: August 23, 2022Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventors: James W. Mickens, Jeremy E. Elson, Edmund B. Nightingale, Bin Fan, Asim Kadav, Osama Khan
-
Patent number: 10824716Abstract: Techniques for leveraging legacy code to deploy native-code desktop applications over a network (e.g., the Web) are described herein. These techniques include executing an application written in native code within a memory region that hardware of a computing device enforces. For instance, page-protection hardware (e.g., a memory management unit) or segmentation hardware may protect this region of memory in which the application executes. The techniques may also provide a narrow system call interface out of this memory region by dynamically enforcing system calls made by the application. Furthermore, these techniques may enable a browser of the computing device to function as an operating system for the native-code application. These techniques thus allow for execution of native-code applications on a browser of a computing device and, hence, over the Web in a resource-efficient manner and without sacrificing security of the computing device.Type: GrantFiled: February 23, 2017Date of Patent: November 3, 2020Assignee: Microsoft Technology Licensing, LLCInventors: Jonathan R. Howell, Jacob R. Lorch, Jeremy E. Elson, John R. Douceur
-
Patent number: 9813529Abstract: The creation of an effective circuit between a sender device and a receiver device over the packet-switched network is described herein. To establish the effective circuit, the sender device sends a request to the receiver device through the packet-switched network. The request is associated with a bandwidth reservation from the receiver device for reception of a message from the sender device. The receiver device receives multiple requests from multiple sender devices and reserves bandwidth for at least one of the sender devices. The receiver device then sends a response to the at least one sender device providing clearance to send the message to the receiver device using the reserved bandwidth, the request and response establishing the effective circuit. The receiver device may also decline the requests of the other sender devices, causing the other sender devices to send other requests to other receiver devices.Type: GrantFiled: April 28, 2011Date of Patent: November 7, 2017Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventors: Jeremy E. Elson, Edmund B. Nightingale
-
Patent number: 9778856Abstract: The subject disclosure is directed towards one or more parallel storage components for parallelizing block-level input/output associated with remote file data. Based upon a mapping scheme, the file data is partitioned into a plurality of blocks in which each may be equal in size. A translator component of the parallel storage may determine a mapping between the plurality of blocks and a plurality of storage nodes such that at least a portion of the plurality of blocks is accessible in parallel. Such a mapping, for example, may place each block in a different storage node allowing the plurality of blocks to be retrieved simultaneously and in its entirety.Type: GrantFiled: August 30, 2012Date of Patent: October 3, 2017Assignee: MICROSOFT TECHNOLOGY LICENSING, LLCInventors: Bin Fan, Asim Kadav, Edmund Bernard Nightingale, Jeremy E. Elson, Richard F. Rashid, James W. Mickens
-
Publication number: 20170161493Abstract: Techniques for leveraging legacy code to deploy native-code desktop applications over a network (e.g., the Web) are described herein. These techniques include executing an application written in native code within a memory region that hardware of a computing device enforces. For instance, page-protection hardware (e.g., a memory management unit) or segmentation hardware may protect this region of memory in which the application executes. The techniques may also provide a narrow system call interface out of this memory region by dynamically enforcing system calls made by the application. Furthermore, these techniques may enable a browser of the computing device to function as an operating system for the native-code application. These techniques thus allow for execution of native-code applications on a browser of a computing device and, hence, over the Web in a resource-efficient manner and without sacrificing security of the computing device.Type: ApplicationFiled: February 23, 2017Publication date: June 8, 2017Inventors: Jonathan R. Howell, Jacob R. Lorch, Jeremy E. Elson, John R. Douceur
-
Patent number: 9588803Abstract: Techniques for leveraging legacy code to deploy native-code desktop applications over a network (e.g., the Web) are described herein. These techniques include executing an application written in native code within a memory region that hardware of a computing device enforces. For instance, page-protection hardware (e.g., a memory management unit) or segmentation hardware may protect this region of memory in which the application executes. The techniques may also provide a narrow system call interface out of this memory region by dynamically enforcing system calls made by the application. Furthermore, these techniques may enable a browser of the computing device to function as an operating system for the native-code application. These techniques thus allow for execution of native-code applications on a browser of a computing device and, hence, over the Web in a resource-efficient manner and without sacrificing security of the computing device.Type: GrantFiled: May 11, 2009Date of Patent: March 7, 2017Assignee: Microsoft Technology Licensing, LLCInventors: Jonathan R. Howell, Jacob R. Lorch, Jeremy E. Elson, John R. Douceur
-
Patent number: 9454441Abstract: A Metadata server described herein is configured to generate a metadata table optimized for data durability and recovery. In generating the metadata table, the metadata server associates each possible combination of servers with one of the indices of the table, thereby ensuring that each server participates in recovery in the event of a server failure. In addition, the metadata server may also associate one or more additional servers with each index to provide added data durability. Upon generating the metadata table, the metadata server provides the metadata table to clients or servers. Alternatively, the metadata server may provide rules and parameters to clients to enable those clients to identify servers storing data items. The clients may use these parameters and an index as inputs to the rules to determine the identities of servers storing or designated to store data items corresponding to the index.Type: GrantFiled: May 20, 2011Date of Patent: September 27, 2016Assignee: Microsoft Technology Licensing, LLCInventors: Jeremy E. Elson, Edmund B. Nightingale, John R. Douceur, Stuart Schechter, Peter L. Montgomery
-
Patent number: 9170892Abstract: A metadata server configured to maintain storage assignment mappings in non-persistent storage is described herein. The tract storage assignment mappings associate servers with storage assignments, the storage assignments representing the data stored on the servers. Responsive to a failure, the metadata server receives the storage assignments from the servers and rebuilds the storage assignment mappings from the storage assignments. The metadata server is also configured to enable clients to operate during a recovery process for a failed server by providing the storage assignment mappings to the clients during the recovery process. Also during the recovery process, the replacement server for the failed server conditionally overwrites stored data with other data received from other servers as part of the recovery process.Type: GrantFiled: May 26, 2011Date of Patent: October 27, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Edmund B. Nightingale, Jeremy E. Elson
-
Patent number: 8996611Abstract: A plurality of servers configured to receive a plurality of requests associated with a plurality of byte sequences are described herein. The requests for each byte sequence are received by a single one of the servers. Each server is further configured to serially process the requests it receives while the other servers also perform serial processing of requests in parallel with the server. Also, the requests for each byte sequence are transmitted to the single one of the servers by a plurality of clients, each client independently identifying the single one of the servers for the byte sequence based on system metadata.Type: GrantFiled: January 31, 2011Date of Patent: March 31, 2015Assignee: Microsoft Technology Licensing, LLCInventors: Edmund B. Nightingale, Jeremy E. Elson
-
Publication number: 20150052392Abstract: While connected to cloud storage, a computing device writes data and metadata to the cloud storage, indicates success of the write to an application of the computing device, and, after indicating success to the application, writes the data and metadata to local storage of the computing device. The data and metadata may be written to different areas of the local storage. The computing device may also determine that it has recovered from a crash or has connected to the cloud storage after operating disconnected and reconcile the local storage with the cloud storage. The reconciliation may be based at least on a comparison of the metadata stored in the area of the local storage with metadata received from the cloud storage. The cloud storage may store each item of data contiguously with its metadata as an expanded block.Type: ApplicationFiled: August 19, 2013Publication date: February 19, 2015Applicant: Microsoft CorporationInventors: James W. Mickens, Jeremy E. Elson, Edmund B. Nightingale, Bin Fan, Asim Kadav, Osama Khan
-
Publication number: 20140068224Abstract: The subject disclosure is directed towards one or more parallel storage components for parallelizing block-level input/output associated with remote file data. Based upon a mapping scheme, the file data is partitioned into a plurality of blocks in which each may be equal in size. A translator component of the parallel storage may determine a mapping between the plurality of blocks and a plurality of storage nodes such that at least a portion of the plurality of blocks is accessible in parallel. Such a mapping, for example, may place each block in a different storage node allowing the plurality of blocks to be retrieved simultaneously and in its entirety.Type: ApplicationFiled: August 30, 2012Publication date: March 6, 2014Applicant: MICROSOFT CORPORATIONInventors: Bin Fan, Asim Kadav, Edmund Bernard Nightingale, Jeremy E. Elson, Richard F. Rashid, James W. Mickens
-
Patent number: 8549106Abstract: Techniques for enabling client computing devices to leverage remote server pools for increasing the effectiveness of applications stored on the client computing device are described herein. In some instances, the server pools comprise a “cloud”, “cluster” or “data center” that comprises hundreds or thousands of servers connected together by a network that has an extremely low latency and high bandwidth relative to the network through which the client computing device connects to the server pool. The client computing device may request that the server pool perform a certain task for an application whose canonical state resides on the client. After computation of a result of the task, a server of the server pool then provides the result to the client. By doing so, the techniques dramatically increase the amount of resources working on the request of the client and, hence, dramatically increase the speed and effectiveness of the client-side application.Type: GrantFiled: June 15, 2009Date of Patent: October 1, 2013Assignee: Microsoft CorporationInventors: Jonathan R. Howell, Jeremy E. Elson, John R. Douceur, Jacob R. Lorch
-
Patent number: 8533299Abstract: A system including a plurality of servers, a client, and a metadata server is described herein. The servers each store tracts of data, a plurality of the tracts comprising a byte sequence and being distributed among the plurality of servers. To locate the tracts, the metadata server generates a table that is used by the client to identify servers associated with the tracts, enabling the client to provide requests to the servers. The metadata server also enables recovery in the event of a server failure. Further, the servers construct tables of tract identifiers and locations to use in responding to the client requests.Type: GrantFiled: April 19, 2010Date of Patent: September 10, 2013Assignee: Microsoft CorporationInventors: Edmund B. Nightingale, Jeremy E. Elson, Jonathan R. Howell, Galen C. Hunt
-
Patent number: 8447833Abstract: A client device configured to write to both a growth server and a live server replica that the growth server is replacing during a growth phase is described herein. The client device first determines the growth server designated to replace a corresponding live server replica of a set of server replicas associated with a storage index. The client device then transmits a write request associated with the storage index to the set of server replicas and to the growth server. The client device may perform the determining based on storage assignment mappings. The storage assignment mappings are provided to the client device by a metadata server while the growth server retrieves data associated with the storage index from the live server replica.Type: GrantFiled: March 6, 2012Date of Patent: May 21, 2013Assignee: Microsoft CorporationInventors: Edmund B. Nightingale, Jeremy E. Elson, Jonathan R. Howell
-
Patent number: 8438244Abstract: A system including at least one storage node and at least one computation node connected by a switch is described herein. Each storage node has one or more storage units and one or more network interface components, the collective bandwidths of the storage units and the network interface components being proportioned to one another to enable communication to and from other nodes at the collective bandwidth of the storage units. Each computation node has logic configured to make requests of storage nodes, an input/output bus, and one or more network interface components, the bandwidth of the bus and the collective bandwidths of the network interface components being proportioned to one another to enable communication to and from other nodes at the bandwidth of the input/output bus.Type: GrantFiled: April 23, 2010Date of Patent: May 7, 2013Assignee: Microsoft CorporationInventors: Edmund B. Nightingale, Jeremy E. Elson, Jonathan R. Howell, Galen C. Hunt, David A. Maltz
-
Patent number: 8368695Abstract: A system is disclosed that transforms offline maps into interactive online maps. In the system, geo-coordinate relationships are determined between geo-coordinates on a source map and geo-coordinates on an online reference map. An image of the source map is transformed to form an image of a modified source map having geo-coordinates that substantially align with corresponding geo-coordinates on the reference map. Modified source tiles are formed with the image of the modified source map and displayed on a portion of the reference map.Type: GrantFiled: February 8, 2007Date of Patent: February 5, 2013Assignee: Microsoft CorporationInventors: Jonathan R. Howell, Jeremy E. Elson, John R. Douceur
-
Publication number: 20120278400Abstract: The creation of an effective circuit between a sender device and a receiver device over the packet-switched network is described herein. To establish the effective circuit, the sender device sends a request to the receiver device through the packet-switched network. The request is associated with a bandwidth reservation from the receiver device for reception of a message from the sender device. The receiver device receives multiple requests from multiple sender devices and reserves bandwidth for at least one of the sender devices. The receiver device then sends a response to the at least one sender device providing clearance to send the message to the receiver device using the reserved bandwidth, the request and response establishing the effective circuit. The receiver device may also decline the requests of the other sender devices, causing the other sender devices to send other requests to other receiver devices.Type: ApplicationFiled: April 28, 2011Publication date: November 1, 2012Applicant: MICROSOFT CORPORATIONInventors: Jeremy E. Elson, Edmund B. Nightingale
-
Publication number: 20120197958Abstract: A plurality of servers configured to receive a plurality of requests associated with a plurality of byte sequences are described herein. The requests for each byte sequence are received by a single one of the servers. Each server is further configured to serially process the requests it receives while the other servers also perform serial processing of requests in parallel with the server. Also, the requests for each byte sequence are transmitted to the single one of the servers by a plurality of clients, each client independently identifying the single one of the servers for the byte sequence based on system metadata.Type: ApplicationFiled: January 31, 2011Publication date: August 2, 2012Applicant: MICROSOFT CORPORATIONInventors: Edmund B. Nightingale, Jeremy E. Elson
-
Publication number: 20120166590Abstract: A client device configured to write to both a growth server and a live server replica that the growth server is replacing during a growth phase is described herein. The client device first determines the growth server designated to replace a corresponding live server replica of a set of server replicas associated with a storage index. The client device then transmits a write request associated with the storage index to the set of server replicas and to the growth server. The client device may perform the determining based on storage assignment mappings. The storage assignment mappings are provided to the client device by a metadata server while the growth server retrieves data associated with the storage index from the live server replica.Type: ApplicationFiled: March 6, 2012Publication date: June 28, 2012Applicant: MICROSOFT CORPORATIONInventors: Edmund B. Nightingale, Jeremy E. Elson, Jonathan R. Howell
-
Patent number: 8181061Abstract: A system including a plurality of servers, a client, and a metadata server is described herein. The servers each store tracts of data, a plurality of the tracts comprising a byte sequence and being distributed among the plurality of servers. To locate the tracts, the metadata server generates a table that is used by the client to identify servers associated with the tracts, enabling the client to provide requests to the servers. The metadata server also enables recovery in the event of a server failure. Further, the servers construct tables of tract identifiers and locations to use in responding to the client requests.Type: GrantFiled: April 19, 2010Date of Patent: May 15, 2012Assignee: Microsoft CorporationInventors: Edmund B. Nightingale, Jeremy E. Elson, Jonathan R. Howell, Galen C. Hunt