Remote file updates through remote protocol
First Claim
1. A computer implemented method of updating a file, the method comprising:
- storing a copy of a source file at a computer system;
making changes to the copy of the source file;
instructing, by the computer system, a remote server to open the source file on the remote server;
instructing, by the computer system, the remote server to open a destination file on the remote server;
based on the changes made to the copy of the source file at the computer system, the computer system building an array of file regions that defines how bytes of source data are to be copied from the source file on the remote server and stored in the destination file on the remote server;
determining, by the computer system, for each file region in the array a source offset, a destination offset, and a length;
the source offset identifying a beginning location within the source file from which the bytes of the source data will be copied;
the destination offset identifying a beginning location within the destination file into which the bytes of the source data will be copied;
the length defining a number of bytes of source data to be copied; and
sending, by the computer system, to the remote server the array of the file regions in a gather-copy file system control (fsctl) command, wherein the gather-copy fsctl command instructs the remote server to copy the bytes of the source data from the source file on the remote server and store the bytes of the source data in the destination file on the remote server wherein the destination file reflects the changes made to the copy of the source file, wherein the copying occurs without transferring the bytes of the source data from the computer system to the remote server.
2 Assignments
0 Petitions
Accused Products
Abstract
An improved remote protocol enables efficient and reliable updating of files on a remote server. A gather-copy extension to a remote protocol enables a client to instruct a server to gather portions of data from an existing source file on the server and to copy those portions of data to appropriate offsets within a new destination file on the server. The gather-copy extension thus enables the client to leave blank locations in the destination file into which the client can write new data during a file update. The gather-copy extension also enables the client to effectively delete portions of the source file by not copying them from the source file to the destination file. File updates can therefore be made without having to transfer the entire file from the client to the server.
100 Citations
27 Claims
-
1. A computer implemented method of updating a file, the method comprising:
-
storing a copy of a source file at a computer system; making changes to the copy of the source file; instructing, by the computer system, a remote server to open the source file on the remote server; instructing, by the computer system, the remote server to open a destination file on the remote server; based on the changes made to the copy of the source file at the computer system, the computer system building an array of file regions that defines how bytes of source data are to be copied from the source file on the remote server and stored in the destination file on the remote server; determining, by the computer system, for each file region in the array a source offset, a destination offset, and a length; the source offset identifying a beginning location within the source file from which the bytes of the source data will be copied; the destination offset identifying a beginning location within the destination file into which the bytes of the source data will be copied; the length defining a number of bytes of source data to be copied; and sending, by the computer system, to the remote server the array of the file regions in a gather-copy file system control (fsctl) command, wherein the gather-copy fsctl command instructs the remote server to copy the bytes of the source data from the source file on the remote server and store the bytes of the source data in the destination file on the remote server wherein the destination file reflects the changes made to the copy of the source file, wherein the copying occurs without transferring the bytes of the source data from the computer system to the remote server. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A computer implemented method comprising:
-
opening at a remote server a source file in response to a first open request from a client, the client storing a copy of the source file; opening at the remote server a destination file in response to a second open request from the client; copying source data from the source file on the remote server and storing the source data in the destination file on the remote server, wherein the destination file at the remote server reflects changes made to the copy of the source file on the remote server, wherein the copying is in response to receiving a gather-copy file system control (fsctl) command from the client and occurs without transferring the source data from the client, the gather-copy fsctl command including sending an array of file regions that defines how the source data is to be copied from the source file on the remote server and stored in the destination file on the remote server, wherein for each file region in the array of the file regions a source offset, a destination offset, and a length is identified; the source offset identifying a beginning location within the source file from which the source data will be copied; the destination offset identifying a beginning location within the destination file into which the source data will be copied; and the length defining a number of bytes of the source data. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A computer storage medium comprising processor-executable instructions configured for:
-
storing a copy of a source file at a computer system; making changes to the copy of the source file at the computer system; instructing, by the computer system, a remote server to open the source file on the remote server and provide at least read data access to the source file on the remote server; requesting, by the computer system, an identifier of the source file on the remote server from the remote server; instructing, by the computer system, the remote server to open a destination file on the remote server and provide at least write access to the destination file on the remote server; based on the changes made to the copy of the source file, the computer system building an array of file regions that identify data blocks to be copied from the source file on the remote server to the destination file on the remote server; determining, by the computer system, for each file region a source offset that identifies a beginning location within the source file on the remote server from which a number of bytes of source data will be copied; determining, by the computer system, for each file region a destination offset that identifies a beginning location within the destination file on the remote server to which the number of bytes of the source data will be copied; determining, by the computer system, the number of bytes of the source data that will be copied; and instructing, by the computer system, the remote server to copy the identified data blocks in the array of the file regions from the source file on the remote server into the destination file on the remote server so that the destination file on the remote server reflects the changes made to the copy of the source file on the computer system, wherein the copy occurs without transferring the source data from the computer system to the remote server. - View Dependent Claims (23, 24, 25, 26)
-
-
27. A system for transferring data from a source file on a remote server computer system into a destination file on the remote server computer system, the system comprising:
-
a client computer system configured to; store a copy of the source file; make changes to the copy of the source file; based on the changes, build an array of file regions that identify data blocks to be copied from the source file on the remote server computer system to the destination file on the remote server computer system; determine for each file region a source offset that identifies a beginning location within the source file on the remote server computer system from which a number of bytes of source data will be copied; determine for each file region a destination offset that identifies a beginning location within the destination file on the remote server computer system to which the number of bytes of the source data will be copied; determine for each file region the number of bytes of the source data that will be copied; and the remote server computer system connected to the client computer system through a network, the remote server computer system configured to; open a source file on the remote server computer system in response to receiving a file open request from the client computer system; open the destination file on the remote server computer system in response to receiving a second open request from the client computer system; and copy source data from the source file on the remote server computer system and store the source data in the destination file on the remote server computer system so that the destination file on the remote server computer system reflects the changes made to the copy of the source file, wherein the copying is in response to receiving a gather-copy file system control (fsctl) command and the array of the file regions from the client computer system and occurs without transferring the source data from the client computer system to the remote server computer system.
-
Specification