Consistent entity tagging with multi-protocol data access
By combining the object storage protocol stack and the file system protocol in the file system and object storage system, and using the entity tag-aware file system driver to manage ETag, the problem of inconsistent ETag values after file modification is solved, and the consistency and integrity of entity tags in data access are achieved.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- EMC IP HLDG CO LLC
- Filing Date
- 2021-04-23
- Publication Date
- 2026-07-03
AI Technical Summary
When accessing data between file systems and object storage systems, existing technologies struggle to maintain consistent entity tag (ETag) values, especially when dealing with the issue of returning outdated ETag values after a file has been modified.
By combining the object storage protocol stack and file system protocol in the computer system, an entity tag-aware file system driver is used to manage entity tags (ETag), store or clear the md5_valid flag during PUT operations, and return the appropriate ETag value during GET operations, ensuring consistency.
It ensures consistency of entity tags during data access between the file system and the object storage system, preventing outdated ETag values from being returned after file modifications, thus guaranteeing data consistency and integrity.
Smart Images

Figure CN115812198B_ABST
Abstract
Description
[0001] Cross-reference to related applications
[0002] This application claims priority to U.S. nonprovisional application No. 17 / 010,353, filed September 2, 2020, entitled “CONSISTENT ENTITY TAGS WITH MULTIPLE PROTOCOL DATA ACCESS”, the entire contents of which are incorporated herein by reference. Technical Field
[0003] This application as a whole relates to using multiple computer storage protocols to perform computer storage operations on a computer file system. Background Technology
[0004] A computer file system can perform operations on the data it stores, such as opening new or existing files, writing data to open files, reading data from open files, and closing open files. In a file system, different pieces of data (and metadata about the stored data) can be stored as files, and files can be stored in a hierarchical structure of directories. Another type of computer storage system can be object storage.
[0005] In object storage systems, data can be stored as objects. An object includes the stored data, metadata about the stored data, and a unique identifier relative to other objects in the object storage system. In other words, the difference between file system storage and object system storage is that with file system storage, data can be stored in hierarchical layers, while with object system storage, data can be stored in a flat address space. Attached Figure Description
[0006] Various aspects, embodiments, objects, and advantages of this embodiment will become apparent from the following detailed description taken in conjunction with the accompanying drawings, wherein like reference numerals denote like parts throughout the drawings, and wherein:
[0007] Figure 1 The illustration shows an example system architecture that can leverage multi-protocol data access to facilitate the maintenance of consistent entity tagging according to certain embodiments of the present disclosure;
[0008] Figure 2 The illustration shows another example system architecture that can leverage multi-protocol data access to facilitate the maintenance of consistent entity tagging according to certain embodiments of the present disclosure;
[0009] Figure 3 The illustration shows an example processing flow for maintaining consistent entity tagging using multi-protocol data access according to certain embodiments of the present disclosure;
[0010] Figure 4The illustration shows another example processing flow for maintaining consistent entity tagging using multi-protocol data access according to certain embodiments of the present disclosure;
[0011] Figure 5 The illustration shows another example processing flow for maintaining consistent entity tagging using multi-protocol data access according to certain embodiments of the present disclosure;
[0012] Figure 6 The illustration shows an example processing flow of maintaining consistent entity tagging by utilizing multi-protocol data access when processing a PUT object storage operation including a hash value, according to certain embodiments of the present disclosure.
[0013] Figure 7 The illustration shows an example processing flow of maintaining consistent entity tagging by utilizing multi-protocol data access when processing a PUT object storage operation with omitted hash values, according to certain embodiments of the present disclosure.
[0014] Figure 8 The illustration shows an example processing flow of maintaining consistent entity tagging by utilizing multi-protocol data access when processing GET object storage operations according to certain embodiments of the present disclosure;
[0015] Figure 9 The illustration shows another example processing flow for maintaining consistent entity tagging by utilizing multi-protocol data access when processing GET object storage operations, according to certain embodiments of the present disclosure.
[0016] Figure 10 The illustration shows an example processing flow for maintaining consistent entity tagging by utilizing multi-protocol data access when determining a new hash value for an object, according to certain embodiments of the present disclosure;
[0017] Figure 11 The illustration shows an example processing flow of maintaining consistent entity tagging by utilizing multi-protocol data access when updating metadata indicating whether the hash value of an object is valid, according to certain embodiments of the present disclosure.
[0018] Figure 12 An example block diagram of a computer operable to perform certain embodiments of the present disclosure is illustrated. Detailed Implementation
[0019] Overview
[0020] Computer systems can implement an object storage protocol stack on top of file system storage (such as ISILON ONEFS file system storage). In such an example, a client computer can send data operations (retrieving object content and metadata), PUT object operations (creating or replacing objects), COPY object operations (copying an existing object to another object), and DELETE object operations (deleting an existing object) to the computer system specifying object storage operations such as GET object operations.
[0021] The protocol stack can receive these object storage operations and translate each of them into one or more corresponding file system operations, such as OPEN (create a new file or access an existing file), READ (read the contents of a file), WRITE (write the contents of a file), CLOSE (close an open file handle to a file), and UNLINK (delete a file). The protocol stack can then send these corresponding file system operations to the computer system's file system driver, which can then implement these file system operations on the computer system's file system.
[0022] In this way, the client can specify object storage operations to the computer system that implements the file system, and these object storage operations can be implemented on the file system.
[0023] Object storage protocols that work in conjunction with file storage protocols can return consistent entity tag (ETag) values for objects, while also maintaining the ability to detect changes made by another protocol (which may affect the ETag value of the corresponding object). When a client provides a value related to a PUT object operation (such as a hash or MD5 value) to an object, an example server implementing both the object storage protocol and the file system protocol can store this value in the file system's user-space extended attributes (and store the object data as a file) and can set a flag indicating that the object has a valid value that can be used as an ETag value (this flag could be the md5_valid bit).
[0024] When the file corresponding to the object is modified by file system operations, the flag can be cleared (such as by setting it to zero) to indicate that the object lacks a valid value that can be used as the ETag value.
[0025] In an example where the client does not provide a value for the object in a PUT object operation, the corresponding flag can be set (or allowed to remain) to False or zero. With the flag corresponding to the object set to False, such an example server can respond to a GET object operation using server-generated values (such as a join of the 64-bit Logical Inode Number (LIN) corresponding to the object's inode) and a 64-bit value identifying the modification time of the file corresponding to the object (such as the mtime value on some system architectures).
[0026] In another example, the client computing device uses the PUT object operation to store an object on the server. The client can provide a message digest (MD5) value for the object in the Content-MD5 field of the Hypertext Transfer Protocol (HTTP) header. When an MD5 is provided for the object, this value can be stored by the server as a user-space extended attribute of the corresponding filesystem file, and the file's internal md5_valid bit can be set to True. Any data modification to the file can clear the md5_valid bit. If no MD5 value is provided in the PUT object operation, or if the md5_valid bit is cleared in response to file manipulation via another protocol (such as the Network File System (NFS) or Server Message Block (SMB) protocol), the server can respond with a server-generated value as the ETag value in response to a client sending a GET object operation. In some examples, the server-generated value can be a combination of a 64-bit LIN value and a 64-bit mtime value.
[0027] Using these techniques, clients can determine whether an object has been changed by another PUT object operation or by a file system operation via the ETag value. That is, consistent behavior in the ETag value can be achieved when the file storage protocol modifies the file, because in response to a GET object operation, file storage modification causes the server to return a new ETag value, indicating that the object has been modified since the previous ETag value was set. In other words, this technique avoids returning outdated ETag values after file modification, partly because the md5_value can be cleared by the file system layer within the file storage transaction.
[0028] Example Architecture
[0029] Figure 1An example system architecture 100 according to certain embodiments of the present disclosure is illustrated, which can utilize multi-protocol data access to facilitate the maintenance of consistent entity tags. As shown, system architecture 100 includes client computer 102a, client computer 102b, communication network 104, and server 106. Furthermore, server 106 may include user space 108a and kernel space 108b. Server 106 may also include an object storage protocol stack 110 and a file storage protocol stack 116 operating in user space 108a. Server 106 may also include an entity tag-aware file system driver 112 and a file system storage 114 operating in kernel space 108b.
[0030] Kernel space 108b typically includes memory regions of server 106 utilized by the operating system kernel and some device drivers for server 106, wherein these device drivers are implemented using computer-readable instructions. User space 108a typically includes memory regions of server 106 utilized by other components of server 106, wherein these other components are implemented using computer-readable instructions.
[0031] Each of client computer 102a, client computer 102b, and server 106 can utilize Figure 12 This is implemented using one or more instances of computer 1202. In some examples, server 106 includes a distributed storage system, which includes... Figure 12 Multiple instances of computer 1202 in the system.
[0032] The communication network 104 may include a computer communication network such as the Internet, or an isolated dedicated computer communication network.
[0033] Each of client computers 102a and 102b may send requests to server 106 to perform object storage operations (e.g., GET object operations and / or PUT object operations) on data, and may send requests to server 106 to perform file system operations (e.g., READ file operations and / or WRITE file operations) on data. Client computers 102a and 102b may send these requests to server 106 via communication network 104.
[0034] Server 106 can be configured to store and manipulate data in a file system storage. Therefore, when object storage operations are involved, server 106 can receive these object storage operations from client computers 102a and 102b and implement the corresponding file system operations. Server 106 can receive these object storage operations from client computers 102a and 102b at object storage protocol stack 110.
[0035] The object storage protocol stack 110 can receive object storage operations and convert them into one or more file storage operations. The object storage protocol stack 110 can then send these file storage operations in a single input / output (I / O) request packet (IRP), which is directed to the entity tag-aware file system driver 112 (which can provide access to the file system storage 114).
[0036] When the entity tag-aware file system driver 112 processes a PUT object operation that includes an entity tag, the entity tag-aware file system driver 112 may store the entity tag in the extended attributes of the file corresponding to the object identified by the PUT operation. Furthermore, the entity tag-aware file system driver 112 may set the md5_valid flag to True.
[0037] When the entity tag-aware file system driver 112 processes a PUT object operation that does not include an entity tag, the entity tag-aware file system driver 112 may set the corresponding md5_valid flag to False, or leave it unchanged if the md5_valid flag exists and is set to False.
[0038] When the entity tag-aware file system driver 112 processes file storage protocol operations, the entity tag-aware file system driver 112 may set the corresponding md5_valid flag to False, or remain unchanged if the md5_valid flag exists and is set to False.
[0039] When the entity tag-aware file system driver 112 processes a GET object operation, it can determine whether the corresponding md5_valid flag is True. If the corresponding md5_valid flag is True, the entity tag-aware file system driver 112 can include the corresponding entity tag as part of the response to the GET object operation. If the corresponding md5_valid flag is False, the entity tag-aware file system driver 112 can generate a new entity tag value and return the new entity tag value as part of the response to the GET object operation.
[0040] Similar to the object storage protocol stack 110, the file storage protocol stack 116 can receive file storage operations and send them in an IRP that is directed to the entity tag-aware file system driver 112 (which can provide access to the file system storage 114).
[0041] Figure 2 The illustration shows another example system architecture 200 that can leverage multi-protocol data access to facilitate the maintenance of consistent entity tagging according to certain embodiments of the present disclosure.
[0042] As shown in the figure, system architecture 200 includes an object storage protocol stack 210, an entity tag-aware file system driver 212, file system storage 214, and a file storage protocol stack 216. In some examples, the object storage protocol stack 210 may be similar to... Figure 1 The object storage protocol stack 110 and entity tag-aware file system driver 212 in the middle can be similar to Figure 1 The entity marker-aware file system driver 112; the file system storage 214 can be similar to Figure 1 The file system storage 214 and the file storage protocol stack 216 in the middle can be similar to Figure 1 File storage protocol stack 116.
[0043] The example of system architecture 200 can demonstrate how system architecture 200 handles object storage operations and file storage operations on the same file, and how system architecture 200 maintains consistent entity tagging behavior when handling object storage operations and file storage operations on a given file.
[0044] exist Figure 2 In the example, communication 218-1 includes a request to perform an object storage operation, which is made by object storage protocol stack 210 from a client computer and across a communication network (such as...). Figure 1 The client computer 102a and the communication network 104 receive the request. In response, the object storage protocol stack 208 sends an IRP 218-2, which indicates the corresponding file storage operation directed to the file system driver 212. The file system driver 212 can then instruct the file system storage 214 to perform the file system operation indicated by IRP 218-2 and receive an acknowledgment, which the file system driver 212 then relays to the object storage protocol stack 210.
[0045] Regarding file storage operations, communication 220-1 includes a request to perform a file storage operation, which is made by the file storage protocol stack 216 from the client computer across a communication network (such as...). Figure 1The client computer 102a and the communication network 104 receive the information. In response, the file storage protocol stack 216 sends an IRP 220-2, which indicates the corresponding file storage operation directed to the file system driver 212. The file system driver 212 can then instruct the file system storage 214 220-3 to perform the file system operation indicated by IRP 220-2 and receive an acknowledgment, which the file system driver 212 then relays to the file storage protocol stack 216.
[0046] Both object storage operations and file storage operations can be implemented on file system storage 214, and they can both be implemented on the same file in file system storage 214. For example, the PUT object storage operation can be performed on the first file, and when processing this operation, the DELETE file storage operation can be performed on the first file.
[0047] Example processing flow
[0048] Figure 3 An example processing flow 300 for maintaining consistent entity tagging using multi-protocol data access, according to certain embodiments of the present disclosure, is illustrated. In some examples, aspects of flow 300 may be provided by... Figure 1 Server 106 is implemented or is provided by Figure 12 The computing environment is implemented in 1200.
[0049] It is understood that the operating procedure of process flow 300 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, process 300 may be related to... Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 The process is achieved by combining one or more aspects of the processing flow 1100.
[0050] Processing flow 300 begins at 302 and moves to operation 304. Operation 304 describes receiving a first request from the device to perform a first object storage operation to read from an object, which corresponds to a first file in the file storage system, the first file having been created or modified via a file storage operation. That is, the system can support both object storage protocols and file storage protocols, and stores data from both protocols in the file system. The client device can send a GET object operation to the system, where the GET object operation identifies the object, and the data in the object is stored as a file in the system's file system.
[0051] The file may have been previously created or modified via file system operations, causing the system to set the md5_valid flag to False (or, if the default value is False, it is not set to True initially). That is, in some examples, operation 304 may include receiving a second request to perform a file system operation to modify the first file before receiving the first request, modifying the first file according to the second request, and, in response to receiving the second request, storing a first value in a first data structure, the first value indicating that the first file is not associated with a valid entity tag. In other words, the file can be modified according to file system operations and therefore does not have a valid entity tag.
[0052] In some examples, operation 304 may further include receiving a second request to perform a file system operation to create a first file before receiving the first request, creating the first file according to the second request, and, in response to receiving the second request, storing a first value in a first data structure, the first value indicating that the first file is not associated with a valid entity tag. That is, the file can be created according to the file system operation and therefore does not have a valid entity tag.
[0053] In some examples, the first request can be made based on an HTTP request. That is, object storage operations between the client device and the system can be sent via HTTP communication. In some examples, the first entity tag is specified as a header in the HTTP request. This could be the Content-MD5 header of the HTTP request.
[0054] In some examples, operation 304 includes receiving a second request from the system to perform a second object storage operation to write an object, prior to receiving the first request, wherein the second request indicates a second entity tag corresponding to the first file. That is, the first file may have already been created as part of a PUT object operation.
[0055] In some examples, operation 304 includes, in response to a second request indicating a second entity tag, storing a first indication that the first file has a valid entity tag. That is, in the case where the file is created as part of a PUT object operation, the PUT object operation may have identified an entity tag value, which is subsequently stored, and the corresponding md5_valid bit is set to True.
[0056] In some examples, operation 304 includes a second indication that the first file lacks a valid entity tag, in response to a third request to perform a file system operation that modifies the first file. That is, in the case of performing a file system operation on the file, the md5_valid bit can be set to False.
[0057] In some examples, file system operations correspond to the Network File System (NFS) protocol or the Server Message Block (SMB) protocol. The NFS and SMB protocols can be examples of file system protocols used to modify files.
[0058] In some examples, the first object storage operation is received based on a representative RESTful web service. That is, the REST architecture can be used to send object operations between the client and the server.
[0059] Operation 306 describes generating a first entity tag for an object in response to a first request and upon determining that a first file is not associated with a valid entity tag. That is, a first file may lack a valid entity tag due to reasons such as the file being modified by a file system operation after being created by a PUT object operation, the file being created using a file system operation, or the file being created using a PUT object operation that did not specify an entity tag for the object. In these cases, the system can respond to a GET object operation by creating an entity tag for the object. For example, the system can combine the LIN value corresponding to the object and the mtime value corresponding to the object.
[0060] That is, in some examples, operation 306 may include determining a first entity tag based on the logical inode number of the system corresponding to the first file and the file modification time of the first file. Furthermore, in some examples, the first identifier value includes a concatenation of a first 64-bit value for the logical inode number and a second 64-bit value for the file modification time.
[0061] In some examples, operation 306 includes storing the first entity value of the object in the user-space extended attributes of the first file. That is, once the first entity value is determined by the system, it can be stored by the system in the association with that file (while setting the md5_valid value to True), so that the first entity value is returned in response to subsequent GET object operations (provided that the corresponding file has not been modified after the first entity value was stored).
[0062] Operation 308 describes sending an object and a first entity tag to the device in response to receiving a third request. That is, the system can respond to a GET object operation using the object and the newly created entity tag value from operation 306. In some examples, operation 308 includes sending the object via HTTP communication.
[0063] In some examples, operation 308 includes processing a second object storage operation to write the object after processing the first object storage operation, and associating a second identifier value with the object based on the second object storage operation. That is, as a result of the PUT object operation that processes the specified entity identifier value, the entity identifier value for the object (and stored in the corresponding file) can be updated.
[0064] In some examples, operation 308 includes: in response to processing a second object storage operation to read an object before processing a file storage operation on the first file, determining that the first file is associated with a valid identity value, determining that the stored second identity value is associated with the first file, and responding to the second object storage operation with the second identity value. That is, a GET object operation is performed on an unmodified file because a PUT object operation returns the original entity tag value from a PUT operation, indicating that the object has not been modified by subsequent PUT object operations or file system operations.
[0065] In some examples, the second identifier value indicates that the object has not been changed by file system operations since it was created or last modified by a third object storage operation. That is, when the client receives the same identifier value (the second identifier value) as initially specified in the PUT object operation, it can indicate that the object has not been changed since the PUT object operation.
[0066] In some examples, the first identifier value indicates that the object has been changed by a file system operation since it was created or last modified by a second object storage operation. That is, in the case where a client device sending a GET object operation receives the first identifier value and a PUT object operation creates a file including the second identifier value, this different identifier value (the first identifier value) can indicate that the object has been changed since the original PUT object operation.
[0067] It is understood that the operating procedure of processing flow 300 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 300 may be... Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0068] Figure 4 The illustration shows another example processing flow 400 for maintaining consistent entity tagging using multi-protocol data access, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 400 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is implemented in 1200.
[0069] It is understood that the operating procedure of process flow 400 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, process 400 may be related to... Figure 3 Processing flow 300 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0070] Processing flow 400 begins at 402 and moves to operation 404. Operation 404 describes receiving a first request from the device to perform a first object storage operation for reading from an object, which corresponds to a first file in the file storage system. In some examples, operation 404 can be... Figure 3 This is implemented in a similar way to operation 304 in the previous example.
[0071] Operation 406 describes generating a first entity tag for the object in response to the first request and upon determining that the first file is not associated with a valid entity tag. In some examples, operation 406 can be used in conjunction with... Figure 3 This is implemented in a similar manner to operation 306. If a valid entity tag is missing from the file corresponding to the object, it can be indicated that the file has been modified or created according to the file system protocol (or that a valid entity tag is not provided as part of the PUT object operation). In this case, it can be determined that a new entity tag value should be returned along with the object. A system implementing operation 406 can generate an entity tag value in response to receiving a GET object operation from a client device and return the newly generated entity tag value to the client device as part of the response to the GET object operation.
[0072] Operation 408 describes sending an object and a first entity tag to the device in response to receiving a third request. In some examples, operation 408 can be in conjunction with... Figure 3 It is implemented in a similar way to operation 308 in the code.
[0073] Figure 5 The illustration shows another example processing flow 500 for maintaining consistent entity tagging using multi-protocol data access, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 500 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is 1200 to achieve this.
[0074] It is understood that the operating procedure of processing flow 500 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 500 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0075] Processing flow 500 begins at 502 and moves to operation 504. Operation 504 describes receiving a first request from the device to perform a first object storage operation for reading from an object, which corresponds to a first file in the file storage system. In some examples, operation 504 can be... Figure 3 This is implemented in a similar way to operation 304 in the previous example.
[0076] Operation 506 describes generating a first identifier value for an object in response to a first request and upon determining that a first file is not associated with a valid entity tag. In some examples, operation 506 can be used in conjunction with... Figure 3 It is implemented in a similar way to operation 306 in the previous example.
[0077] Operation 508 describes sending an object and a first identifier value to a device in response to receiving a first request. In some examples, operation 508 can be coupled with... Figure 3 It is implemented in a similar way to operation 308 in the code.
[0078] Figure 6 The illustration depicts an example processing flow 600 for maintaining consistent entity tagging using multi-protocol data access when processing a PUT object storage operation including a hash value, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 600 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is 1200 to achieve this.
[0079] It is understood that the operating procedure of processing flow 600 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 600 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0080] Processing flow 600 begins at 602 and moves to 604. 604 describes receiving a request to perform a PUT object storage operation. This can be achieved by... Figure 1 Server 106 and client 102a receive a request to perform a PUT object storage operation, with client 102a transmitting the request via communication network 104. After 604, the processing flow 600 moves to 606.
[0081] Operation 606 describes determining that the PUT object storage operation has a corresponding hash value. In some examples, the PUT object storage operation is sent as part of an HTTP message, and the corresponding hash value is included in the Content-MD5 header. In these examples, operation 606 may include determining that the Content-MD5 header exists and that it has a corresponding value. After 606, the process flow 600 moves to 608.
[0082] Operation 608 describes storing the hash value. In some examples, Figure 1 The entity tag-aware file system driver 112 can store hash values in the extended attributes of the file it stores, corresponding to the object operated on by the PUT object. After 608, process flow 600 moves to 610.
[0083] Operation 610 describes an indication that the stored hash value is valid. This may include... Figure 1 The entity tag-aware file system driver 112 sets the md5_valid bit to True as an extended attribute of the file it stores corresponding to the object operated on by the PUT object. After 610, process flow 600 moves to 612.
[0084] Operation 612 describes storing the object as a file in the file system. This can include... Figure 1 The entity tag-aware file system driver 112 stores the object data as objects in file system storage 114. After 612, processing flow 600 moves to 614, where processing flow 600 ends.
[0085] Figure 7 The illustration depicts an example processing flow 700 that utilizes multi-protocol data access to maintain consistent entity tagging when processing a PUT object storage operation with an omitted hash value, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 700 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is implemented in 1200.
[0086] It is understood that the operating procedure of processing flow 600 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 600 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0087] Processing flow 700 begins at 702 and moves to operation 704. Operation 704 describes receiving a request to perform a PUT object storage operation. In some examples, operation 704 can be combined with... Figure 6 This is implemented in a similar way to operation 604. After operation 704, the processing flow 700 moves to operation 706.
[0088] Operation 706 describes determining that a PUT object storage lacks a corresponding hash value. In some examples, Operation 706 can be used in conjunction with... Figure 6 This is implemented in a similar manner to operation 606, where operation 706 includes determining whether a Content-MD5 header exists or whether the Content-MD5 header does not have a specified value. After operation 706, the processing flow 700 moves to operation 708.
[0089] Operation 708 describes an indication that a valid hash value does not exist. In some examples, operation 708 may include... Figure 1 The entity tag-aware file system driver 112 sets the md5_valid flag of the file corresponding to the object operated on by the PUT object to False. After operation 708, the process flow 700 moves to operation 710.
[0090] Operation 710 describes storing the object as a file in the file system. In some examples, operation 710 can be used in conjunction with... Figure 6 This is implemented in a similar way to operation 612. After operation 710, the processing flow 700 moves to 712, where the processing flow 700 ends.
[0091] Figure 8 The illustration depicts an example processing flow that utilizes multi-protocol data access to maintain consistent entity tagging during GET object storage operations, according to certain embodiments of the present disclosure. In some examples, aspects of the processing flow 800 can be handled by… Figure 1 Server 106 or Figure 12 The computing environment is implemented in 1200.
[0092] It is understood that the operating procedure of processing flow 800 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 800 may be... Figure 3 Processing flow 300 Figure 4Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 9 Processing flow 900 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0093] Processing flow 800 begins at 802 and moves to operation 804. Operation 804 describes receiving a request to perform a GET object storage operation. In some examples, operation 804 can be combined with... Figure 6 The operation 604 is implemented in a similar way, but using a GET object operation instead of a PUT object operation. After operation 804, the processing flow 800 moves to operation 806.
[0094] Operation 806 describes how to determine if a hash value for a GET object store operation is valid. In some examples, operation 806 may include... Figure 1 The entity tag-aware file system driver 112 determines that the md5_valid flag corresponding to the file associated with the object of the GET object operation is True. After operation 806, the process flow 800 moves to operation 808.
[0095] Operation 808 describes responding to a GET object store operation using an object and a hash value. In some examples, this may include... Figure 1 The entity tag-aware file system driver 112 sends an HTTP response to the client 102a. The HTTP response includes an object and specifies a hash value in the Content-MD5 header. After operation 808, processing flow 800 moves to 810, where processing flow 800 ends.
[0096] Figure 9 The illustration shows another example processing flow 900 that utilizes multi-protocol data access to maintain consistent entity tagging when processing a GET object storage operation, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 900 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is 1200 to achieve this.
[0097] It is understood that the operating procedure of processing flow 900 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 900 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 10 Processing flow 1000 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0098] Processing flow 900 begins at 902 and moves to operation 904. Operation 904 describes receiving a request to perform a GET object storage operation. In some examples, operation 904 can be combined with... Figure 8 This is implemented in a similar way to operation 804. After operation 904, the processing flow 900 moves to operation 906.
[0099] Operation 906 describes determining that the hash value for a GET object store operation is invalid. In some examples, operation 806 may include... Figure 1 The entity tag-aware file system driver 112 determines that the md5_valid tag corresponding to the file associated with the object of the GET object operation is False. After operation 906, the process flow 900 moves to operation 908.
[0100] Operation 908 describes creating a new identity value for an object. In some examples, this can be achieved by... Figure 10 Processing flow 1000 creates a new identifier value for the object. After operation 908, processing flow 900 moves to operation 910.
[0101] Operation 910 describes responding to a GET object storage operation using an object and a new identifier value. In some examples, Operation 910 can be used with... Figure 8 This is implemented in a similar way to operation 808. After operation 910, the processing flow 900 moves to 912, where flow 900 ends.
[0102] Figure 10 The illustration depicts an example processing flow 1000 that utilizes multi-protocol data access to maintain consistent entity tagging when determining a new hash value for an object, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 1000 may be provided by... Figure 1 Server 106 or Figure 12 The computing environment is implemented in 1200.
[0103] It is understood that the operating procedure of processing flow 1000 is an example operating procedure, and there may be embodiments that implement more or fewer operating procedures than described, or embodiments that implement the described operating procedures in a different order than described. In some examples, processing flow 1000 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 11 It is achieved by combining one or more aspects of the processing flow 1100.
[0104] Processing flow 1000 begins at 1002 and moves to operation 1004. Operation 1004 describes determining the logical inode values for a file. In some examples, Figure 1 The file storage system 114 can store files in inodes (inodes can include data structures in the file system, including file data attributes and locations within disk blocks). In these examples, inodes can be identified by inode number or value, and the entity tag-aware file system driver 112 can access the value of the logical inode of the file corresponding to the object. After operation 1004, the process flow 1000 moves to operation 1006.
[0105] Operation 1006 describes determining the modification time for a file. The modification time (sometimes referred to as mtime) can be stored as... Figure 1 The file attributes in the file storage system 114 are accessed by the entity tag-aware file system driver 112. After operation 1006, the process flow 1000 moves to operation 1008.
[0106] Operation 1008 describes combining logical inode values and modification times. In some examples, each of these values is stored as a 64-bit value, and they can be concatenated to generate a 128-bit value. After operation 1008, process flow 1000 moves to 1010, where process flow 1000 ends.
[0107] Figure 11 The illustration depicts an example processing flow 1100 that utilizes multi-protocol data access to maintain consistent entity tagging when updating metadata indicating whether the hash value of an object is valid, according to certain embodiments of the present disclosure. In some examples, aspects of processing flow 1100 may be provided by... Figure 1 Server 106 or Figure 12The computing environment is implemented in 1200.
[0108] It is understood that the operating procedure of processing flow 1100 is an example operating procedure, and there may be implementations with more or fewer operating procedures than described, or implementations of the described operating procedures in a different order than described. In some examples, processing flow 1100 may be... Figure 3 Processing flow 300 Figure 4 Processing flow 400 Figure 5 Processing flow 500 Figure 6 Processing flow 600 Figure 7 Processing flow 700 Figure 8 Processing flow 800 Figure 9 Processing flow 900 Figure 10 It is achieved by combining one or more aspects of the processing flow 1000.
[0109] Processing flow 1100 begins at 1102 and moves to operation 1104. Operation 1104 describes receiving a request to perform a PUT object storage operation along with the hash value of the object. In some examples, operation 1104 can be coupled with... Figure 6 Operations 604 and 606 are implemented in a similar way. After operation 1104, the processing flow 1100 moves to operation 1106.
[0110] Operation 1106 describes an instruction valid for storing the hash value of an object. In some examples, operation 1106 can be used in conjunction with... Figure 6 This is implemented in a similar way to operation 610. After operation 1106, the processing flow 1100 moves to operation 1108.
[0111] Operation 1108 describes receiving a request to perform a second PUT object storage operation without a hash value for the object, or a request to perform file system modifications on a file. In some examples, operation 1108 can be combined with... Figure 7 Operations 704 and 706 (for PUT object storage operations) are implemented in a similar way. In other examples, Figure 1 Server 106 can receive file system modification operations from client computer 102a via communication network 104. After operation 1108, the process flow 1100 moves to operation 1110.
[0112] Operation 1110 describes an indication that the stored hash value for an object is invalid. In some examples, operation 1110 can be used in conjunction with... Figure 7 This is implemented in a similar way to operation 708. After operation 1110, the processing flow 1102 moves to 1112, where the processing flow 1100 ends.
[0113] Example operating environment
[0114] To provide additional context for the various embodiments described herein Figure 12 The following discussion is intended to provide a brief overall description of a suitable computing environment 1200 in which various embodiments of the embodiments described herein can be implemented.
[0115] For example, various aspects of the computing environment 1200 can be used to implement... Figure 1 Various aspects of client computer 102a, client computer 102b, and / or server 106. In some examples, computing environment 1200 can implement... Figures 3 to 11 All aspects of the processing flow are designed to facilitate consistent access to file storage objects with other file protocols.
[0116] Although the above embodiments have been described in the general context of computer-executable instructions that can run on one or more computers, those skilled in the art will recognize that the embodiments may also be implemented in combination with other program modules and / or as hardware and software.
[0117] Typically, a program module includes routines, programs, components, data structures, etc., that perform specific tasks or implement specific abstract data types. Furthermore, those skilled in the art will understand that various methods can be used in other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframes, Internet of Things (IoT) devices, distributed computing systems, and personal computers, handheld computing devices, microprocessor-based or programmable consumer electronics, each of which can be operatively coupled to one or more associated devices.
[0118] The embodiments illustrated in this document can also be practiced in a distributed computing environment, where some tasks are performed by remote processing devices connected via a communication network. In a distributed computing environment, program modules can reside in both local and remote memory storage devices.
[0119] Computing devices typically include a wide variety of media, which can include computer-readable storage media, machine-readable storage media, and / or communication media; the two terms used herein are distinct from each other. A computer-readable storage medium or a machine-readable storage medium can be any available storage medium accessible to a computer and includes volatile and non-volatile media, removable and non-removable media. As an example, but not a limitation, a computer-readable storage medium or a machine-readable storage medium can be combined with any method or technology for storing information, such as computer-readable or machine-readable instructions, program modules, structured data, or unstructured data.
[0120] Computer-readable storage media may include, but are not limited to: random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory or other memory technologies, optical disc read-only memory (CDROM), digital versatile disk (DVD), Blu-ray disc (BD) or other optical disc storage devices, magnetic tape, magnetic tape storage devices or other magnetic storage devices, solid-state drives or other solid-state storage devices, or other tangible and / or non-transitory media that can be used to store desired information. In this regard, the terms “tangible” or “non-transitory” used herein, when applied to storage devices, memory, or computer-readable media, should be understood to exclude only the propagation of transient signals themselves as a modifier, without waiving the rights to all standard storage, memory, or computer-readable media that do not merely propagate transient signals themselves.
[0121] Computer-readable storage media can be accessed by one or more local or remote computing devices, for example via access requests, queries or other data retrieval protocols, to perform various operations on the information stored in the media.
[0122] Communication media typically embody computer-readable instructions, data structures, program modules, or other structured or unstructured data signals such as modulated data signals (e.g., carrier waves or other transmission mechanisms), and include any information transmission or delivery medium. The term "modulated data signal" refers to a signal whose one or more characteristics are set or altered to encode information in one or more signals. For example, but not limited to, communication media include wired media (such as wired networks or direct wired connections) and wireless media (such as acoustic waves, radio frequency, infrared, and other wireless media).
[0123] Refer again Figure 12 An example environment 1200 for implementing various embodiments of the aspects described herein includes a computer 1202, which includes a processing unit 1204, a system memory 1206, and a system bus 1208. The system bus 1208 couples system components (including, but not limited to, the system memory 1206) to the processing unit 1204. The processing unit 1204 can be any of a variety of commercially available processors. Dual microprocessors and other multiprocessor architectures can also be used as the processing unit 1204.
[0124] System bus 1208 can be any of a variety of bus architectures, which can be further interconnected to memory buses (with or without memory controllers), peripheral buses, and local buses using various commercially available bus architectures. System memory 1206 includes ROM 1210 and RAM 1212. The Basic Input / Output System (BIOS) can be stored in non-volatile memory such as ROM, erasable programmable read-only memory (EPROM), or EEPROM, where the BIOS includes basic routines such as those that help transfer information between components within computer 1202 during startup. RAM 1212 may also include high-speed RAM, such as static RAM for caching data.
[0125] Computer 1202 also includes an internal hard disk drive (HDD) 1214 (e.g., EIDE, SATA), one or more external storage devices 1216 (e.g., floppy disk drive (FDD) 1216, memory stick or flash memory card reader, memory card reader, etc.), and an optical disc drive 1220 (e.g., capable of reading and writing from CD-ROM disks, DVDs, BDs, etc.). Although the internal HDD 1214 is illustrated as being located within computer 1202, the internal HDD 1214 may also be configured for use outside a suitable chassis (not shown). Additionally, although not shown in environment 1200, a solid-state drive (SSD) may be used as an addition to or replacement for HDD 1214. HDD 1214, external storage devices(s) 1216, and optical disc drive 1220 may be connected to system bus 1208 via HDD interface 1224, external storage interface 1226, and optical drive interface 1228, respectively. The interface 1224 for the external driver implementation may include at least one or two Universal Serial Bus (USB) and Institute of Electrical and Electronics Engineers (IEEE) 1294 interface technologies. Other external driver connection technologies are within the scope of consideration in the embodiments described herein.
[0126] The drive device and its associated computer-readable storage medium provide non-volatile storage of data, data structures, computer-executable instructions, etc. For computer 1202, the drive device and storage medium are adapted to store any data in a suitable digital format. Although the above description of computer-readable storage media refers to a corresponding type of storage device, those skilled in the art will understand that other types of computer-readable storage media, whether currently existing or developed in the future, may also be used in the example operating environment, and any such storage medium may include computer-executable instructions for performing the methods described herein.
[0127] Multiple program modules can be stored in the drive and RAM 1212, including an operating system 1230, one or more application programs 1232, other program modules 1234, and program data 1236. All or part of the operating system, application programs, modules, and / or data can also be cached in RAM 1212. The systems and methods described herein can be implemented using various commercially available operating systems or combinations of operating systems.
[0128] Computer 1202 may optionally include emulation technology. For example, a hypervisor (not shown) or other intermediary may emulate the hardware environment of operating system 1230, and the emulated hardware may optionally be different from that of the operating system 1230. Figure 12 The hardware is shown. In such an embodiment, the operating system 1230 may include one of a plurality of virtual machines (VMs) hosted on the computer 1202. Furthermore, the operating system 1230 may provide a runtime environment for the application 1232, such as the Java Runtime Environment or the .NET Framework. A runtime environment is a consistent execution environment that allows the application 1232 to run on any operating system that includes a runtime environment. Similarly, the operating system 1230 may support containers, and the application 1232 may take the form of a container, which is a lightweight, standalone, executable software package that includes, for example, code, runtime, system tools, system libraries, and application settings.
[0129] Furthermore, computer 1202 can enable security modules, such as Trusted Processing Modules (TPMs). For example, using a TPM, the startup component hashes the next startup component and waits for the result to match a security value before loading the next startup component. This process can occur at any layer of the computer 1202's code execution stack, such as at the application execution level or the operating system (OS) kernel level, thereby achieving security at any level of code execution.
[0130] Users can input commands and information to computer 1202 through one or more wired / wireless input devices, such as keyboard 1238, touchscreen 1240, and pointing devices (such as mouse 1242). Other input devices (not shown) may include microphones, infrared (IR) remote controls, radio frequency (RF) remote controls or other remote controls, joysticks, virtual reality controllers and / or virtual reality headsets, gamepads, styluses, image input devices (such as cameras), gesture sensor input devices, visual motion sensor input devices, emotion or face detection devices, biometric input devices (such as fingerprint or iris scanners), etc. These and other input devices are typically connected to processing unit 1204 via input device interface 1244, which can be coupled to system bus 1208, but may also be connected via other interfaces, such as parallel ports, IEEE 1394 serial ports, game ports, USB ports, IR interfaces, etc. Interfaces, etc.
[0131] Monitor 1246 or other types of display devices can also be connected to system bus 1208 via an interface (such as video adapter 1248). In addition to monitor 1246, the computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.
[0132] Computer 1202 can operate in a networked environment using logical connections via wired and / or wireless communications to one or more remote computers (such as multiple remote computers 1250). The multiple remote computers 1250 can be workstations, server computers, routers, personal computers, laptops, microprocessor-based entertainment devices, peer-to-peer devices, or other public network nodes, typically including multiple or all of the elements described in relation to computer 1202, but for simplicity, only memory / storage device 1252 is illustrated. The described logical connections include wired / wireless connections to a local area network (LAN) 1254 and / or a larger network (e.g., a wide area network (WAN) 1256). Such LAN and WAN networking environments are common in offices and companies and facilitate enterprise-wide computer networks, such as intranets, all of which can connect to global communication networks, such as the Internet.
[0133] When used in a LAN networking environment, computer 1202 can connect to local network 1254 via wired and / or wireless communication network interface or adapter 1258. Adapter 1258 can facilitate wired or wireless communication to LAN 1254, and LAN 1254 may also include a wireless access point (AP) configured thereon to communicate with adapter 1258 wirelessly.
[0134] When used in a WAN networking environment, computer 1202 may include modem 1260 or may be connected to a communication server on WAN 1256 via other means of establishing communication over WAN 1256 (such as via the Internet). Modem 1260 may be internal or external, and may be a wired or wireless device, which may be connected to system bus 1208 via input device interface 1244. In a networking environment, program modules described relative to computer 1202 or parts thereof may be stored in remote memory / storage device 1252. It will be understood that the network connection shown is an example, and other means may be used to establish communication links between computers.
[0135] When used in a LAN or WAN networking environment, computer 1202 can access cloud storage systems or other network-based storage systems (as an addition to or replacement of the external storage device 1216 described above). Generally, the connection between computer 1202 and the cloud storage system can be established via LAN 1254 or WAN 1256, for example, via adapter 1258 or modem 1260, respectively. After connecting computer 1202 to the associated cloud storage system, external storage interface 1226 can manage the storage provided by the cloud storage system via adapter 1258 and / or modem 1260, just like managing other types of external storage. For example, external storage interface 1226 can be configured to provide access to cloud storage sources as if these sources were physically connected to computer 1202.
[0136] Computer 1202 is operable to communicate with any wireless device or entity operating in wireless communication, such as a printer, scanner, desktop and / or portable computer, portable data assistant, communications satellite, any device or location associated with a wirelessly detectable tag (e.g., newsstand, newsstand, shelf, etc.), and telephone. This can include Wi-Fi and Wireless technology. Therefore, communication can be a predefined structure like a conventional network, or it can be self-organizing communication between at least two devices.
[0137] in conclusion
[0138] As used in the subject matter specification, the term "processor" can essentially refer to any computing processing unit or device, including but not limited to a single-core processor; a single processor with software multithreading capabilities; a multi-core processor; a multi-core processor with software multithreading capabilities; a multi-core processor utilizing hardware multithreading technology; a parallel platform; and a parallel platform with distributed shared memory in one or more machines. Additionally, a processor can refer to an integrated circuit, state machine, application-specific integrated circuit (ASIC), digital signal processor (DSP), programmable gate array (PGA) (including field-programmable gate array (FPGA)), programmable logic controller (PLC), complex programmable logic device (CPLD), discrete gate or transistor logic, discrete hardware components, or any combination designed to perform the functions described herein. Processors can utilize nanoscale architectures, such as, but not limited to, molecular and quantum dot transistors, switches, and gates, to optimize space usage or enhance the performance of user devices. Processors can also be implemented as a combination of computing processing units. One or more processors can be used to support virtualized computing environments. Virtualized computing environments can support one or more virtual machines representing computers, servers, or other computing devices. In such virtualized virtual machines, components such as processors and storage devices can be virtualized or logically represented. In one aspect, when a processor executes instructions for performing an "operation," this may include the processor performing the operation directly and / or facilitating, guiding, or cooperating with another device or component to perform the operation.
[0139] In this subject matter specification, terms such as “data repository,” “data storage device,” “database,” “cache,” and virtually any other information storage component relating to the operation and function of a component refer to a “memory component,” or an entity embodied in “memory” or a component that includes memory. It will be understood that the memory component or computer-readable storage medium described herein can be volatile or non-volatile memory, or may include both. For example, non-volatile memory may include ROM, programmable ROM (PROM), EPROM, EEPROM, or flash memory. Volatile memory may include RAM that acts as an external cache memory. By way of illustration and not limitation, RAM can take many forms, such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), dual data rate SDRAM (DDRSDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), and direct Rambus RAM (DRRAM). Additionally, the memory components of the systems or methods disclosed herein are intended to include, but are not limited to, these and any other suitable types of memory.
[0140] The aspects illustrated in this disclosure can be implemented in a distributed computing environment, where some tasks are performed by remote processing devices connected via a communication network. In a distributed computing environment, program modules can reside in both local and remote memory storage devices.
[0141] The aforementioned systems and processes can be embodied in hardware, such as a single integrated circuit (IC) chip, multiple ICs, an ASIC, etc. Furthermore, the order in which some or all processing blocks appear in each process should not be considered a limitation. Rather, it should be understood that some processing blocks may be executed in a different order, which may not all be explicitly illustrated herein.
[0142] As used in this application, the terms “component,” “module,” “system,” “interface,” “cluster,” “server,” “node,” etc., are generally intended to refer to computer-related entities, namely, hardware, a combination of hardware and software, software or software in execution, or an entity associated with an operating machine having one or more specific functions. For example, a component can be (but is not limited to) a process running on a processor, a processor, an object, an executable file, an execution thread, (multiple) computer-executable instructions, a program, and / or a computer. For example, an application running on a controller and the controller itself can both be components. One or more components may reside within a process and / or execution thread, and components may reside on a single computer or be distributed across two or more computers. As another example, an interface may include input / output (I / O) components and associated processors, applications, and / or API components.
[0143] Furthermore, various embodiments can be implemented using standard programming and / or engineering techniques to produce software, firmware, hardware, or methods, apparatus, or articles of article for controlling a computer to implement one or more aspects of the disclosed subject matter. Articles of article can encompass computer programs accessed from any computer-readable device or computer-readable storage / communication medium. For example, computer-readable storage media can include, but are not limited to, magnetic storage devices (e.g., hard disks, floppy disks, magnetic stripes, etc.), optical disks (e.g., CDs, DVDs, etc.), smart cards, and flash memory devices (e.g., cards, magnetic sticks, key drives, etc.). Of course, those skilled in the art will recognize that various modifications can be made to this configuration without departing from the scope or spirit of the various embodiments.
[0144] Additionally, the terms “example” or “exemplary” are used herein to mean as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or superior to other aspects or designs. Rather, the use of the term “exemplary” is intended to present the concept in a concrete manner. As used in this application, the term “or” is intended to be inclusive rather than exclusive. That is, unless otherwise stated or clear from the context, “X adopts A or B” means any naturally included permutation. That is, “X adopts A or B” satisfies any of the foregoing if X adopts A; X adopts B; or X adopts both A and B. Additionally, unless otherwise stated or clearly indicated from the context as a single form, the articles “a” and “an” used in this application and the appended claims are generally interpreted as “one or more”.
[0145] The foregoing description includes examples from this specification. Of course, for the purposes of describing the present embodiments, it is impossible to describe every conceivable combination of components or methods; however, those skilled in the art will recognize that many further combinations and arrangements of this specification are possible. Therefore, this specification is intended to include all such changes, modifications, and variations that fall within the spirit and scope of the appended claims. Furthermore, where the term "comprising" is used in the detailed description or claims, it is intended to be included in a manner similar to "including," as "comprising" is interpreted as a transitional term in the claims.
Claims
1. A system comprising: processor; as well as A memory storing executable instructions that, when executed by the processor, facilitate the execution of operations, including: The device receives a first request to perform a first object storage operation to read from an object according to an object storage protocol configured to read and modify data objects, the object corresponding to a first file in a file storage system, the first file having been created or modified via a file storage operation; In response to the first request, and in response to the determination that the first file is not associated with a valid entity tag as a result of the first file being created or modified via the file storage operation, a first entity tag for the object is generated, wherein determining that the first file is not associated with the valid entity tag includes: determining that the extended attributes of the first file indicate that the corresponding entity tag is invalid; and In response to the receipt of the first request, the object and the first entity tag are sent to the device.
2. The system according to claim 1, wherein the operation further includes: Before receiving the first request, a second request is received to perform a file system operation to modify the first file. Modify the first file according to the second request; as well as In response to the receipt of the second request, a first value is stored in a first data structure, the first value indicating that the first file is not associated with another valid entity tag, the other valid entity tag including the first valid entity tag or a second valid entity tag.
3. The system according to claim 1, wherein the operation further includes: Before receiving the first request, a second request is received to perform a file system operation to create the first file. Create the first file according to the second request; as well as In response to the receipt of the second request, a first value is stored in a first data structure, the first value indicating that the first file is not associated with another valid entity tag, the other valid entity tag including the first valid entity tag or a second valid entity tag.
4. The system of claim 1, wherein the first request includes a Hypertext Transfer Protocol (HTTP) request.
5. The system of claim 4, wherein the first entity tag is designated as a header of the HTTP request.
6. The system according to claim 1, wherein the operation further comprises: The first entity tag for the object is stored in the user-space extended attributes of the first file.
7. The system of claim 1, wherein the sending of the object includes sending Hypertext Transfer Protocol communication.
8. A method comprising: A system slave device, including a processor, receives a first request to perform a first object storage operation to read from an object corresponding to a first file in a file storage system, according to an object storage protocol configured to read and modify data objects. In response to the first request, and in response to the determination that the first file is not associated with a valid entity tag as a result of the first file being created or modified via a file storage operation, the system generates a first entity tag for the object, wherein determining that the first file is not associated with the valid entity tag includes: determining that the extended attributes of the first file indicate that the corresponding entity tag is invalid; as well as In response to the receipt of the first request, the system sends the object and the first entity tag to the device.
9. The method according to claim 8, further comprising: Before the receipt of the first request is executed, the system receives a second request to perform a second object storage operation to write to the object, wherein the second request indicates a second entity tag corresponding to the first file.
10. The method of claim 9, further comprising: In response to the second request indicating the second entity tag, a first indication is stored that the first file has another valid entity tag, the other valid entity tag including the first valid entity tag or the second valid entity tag.
11. The method of claim 10, further comprising: In response to a third request to modify the first file based on a file system operation to modify the first file, a second indication is stored indicating that the first file is missing another valid entity tag, the other valid entity tag including the first valid entity tag or the second valid entity tag.
12. The method of claim 11, wherein the file system operation corresponds to a network file system protocol or a server message block protocol.
13. The method of claim 9, further comprising: The system determines the first entity tag based on the logical index node number of the system corresponding to the first file and the file modification time of the first file.
14. The method of claim 13, wherein the first identifier value comprises a concatenation of a first 64-bit value for the logical inode number and a second 64-bit value for the file modification time.
15. A non-transitory computer-readable medium including instructions that, in response to execution, cause a system including a processor to perform operations, the operations including: The device receives a first request to perform a first object storage operation to read from an object corresponding to a first file in a file storage system, according to an object storage protocol configured to read and modify data objects. In response to the first request and in response to the determination that the first file is not associated with a valid entity tag as a result of the first file being created or modified via a file storage operation, a first identifier value for the object is generated, wherein determining that the first file is not associated with the valid entity tag includes: determining that the extended attribute of the first file indicates that the corresponding entity tag is invalid; as well as In response to the receipt of the first request, the object and the first identification value are sent to the device.
16. The non-transitory computer-readable medium of claim 15, wherein the operation further comprises: After processing the first object storage operation, process the second object storage operation that writes to the object; as well as The second identifier value is associated with the object based on the second object storage operation.
17. The non-transitory computer-readable medium of claim 16, wherein the operation further comprises: In response to processing a second object storage operation that reads the object before processing a file storage operation on the first file, it is determined that the first file is associated with a valid identifier value; as well as Determine that the stored second identifier value is associated with the first file; as well as The stored second identifier value is used to respond to the second object storage operation.
18. The non-transitory computer-readable medium of claim 17, wherein the second identifier value indicates that the object has not been changed by a file system operation since it was created or last modified by a third object storage operation.
19. The non-transitory computer-readable medium of claim 15, wherein the first identifier value indicates that the object has been changed by a file system operation since it was created or last modified by a second object storage operation.
20. The non-transitory computer-readable medium of claim 15, wherein the first object storage operation is received based on a representative state transmission web service.