IP Library Granted Patent US 10,831,719
Granted Patent B2
US 10,831,719 · App. 15/689,427 · Granted Nov 10, 2020

File consistency in shared storage using partial-edit files

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,831,719
App. No.
15/689,427
Granted
Nov 10, 2020
Kind
B2
Abstract

Systems and methods are disclosed for managing partial-edit files for shared storage applications. A network-attached storage device (NAS) includes a non-volatile memory module, a network interface, and control circuitry configured to connect to a first client over a network connection using the network interface, receive, from the first client, a request to access a first portion of an existing file stored in the non-volatile memory module, create a first partial-edit file based on the existing file, receive modifications associated with the first portion of the existing file from the first client, modify the first partial-edit file according to the received modifications, and at least partially overwrite the existing file with at least a portion of the first partial-edit file.

Claims (68)

1. A network-attached storage device (NAS) configured to enable concurrent modification of a stored file without using distributed locks, the NAS comprising:

a non-volatile memory module;

a network interface; and

control circuitry coupled to the non-volatile memory module and to the network interface and configured to:

connect to a first client over a network connection using the network interface;

receive, from the first client, a request to access a first portion of an existing file stored in the non-volatile memory module;

create, in the non-volatile memory module of the NAS, a first partial-edit file based on at least the first portion of the existing file;

receive, from the first client, modifications associated with the first portion of the existing file;

modify the first partial-edit file according to the received modifications; and

at least partially overwrite the existing file with at least a portion of the first partial-edit file.

2. The NAS of claim 1 , wherein:

the control circuitry is further configured to receive, from the first client, a request to create the first partial-edit file; and

said creating the first partial-edit file is performed in response to the request to create the first partial-edit file.

3. The NAS of claim 1 , wherein the control circuitry is further configured to provide, to the first client, partial-edit file identifier information associated with the first partial-edit file.

4. The NAS of claim 3 , wherein the first partial-edit file is not accessible to clients communicatively coupled to the NAS without the partial-edit file identifier information.

5. The NAS of claim 1 , wherein the first partial-edit file is not referenced in a file allocation table maintained by the control circuitry.

6. The NAS of claim 1 , wherein:

the control circuitry is further configured to determine that a version of the existing file associated with the first partial-edit file matches a current version of the existing file; and

said at least partially overwriting the existing file is based on the determination.

7. The NAS of claim 1 , wherein the control circuitry is further configured to delete the first partial-edit file after said at least partially overwriting the existing file.

8. The NAS of claim 1 , wherein the control circuitry is further configured to:

connect to a second client using the network interface;

receive, from the second client, a request to access a second portion of the existing file;

create a second partial-edit file based on the existing file in the non-volatile memory module of the NAS prior to said at least partially overwriting the existing file with the at least a portion of the first partial-edit file;

receive, from the second client, modifications associated with the second portion of the existing file; and

modify the second partial-edit file according to the modifications associated with the second portion of the existing file.

9. The NAS of claim 8 , wherein the control circuitry is further configured to:

in response to said at least partially overwriting the existing file, update version information associated with the existing file to indicate an updated version; and

determine that a version of the existing file associated with the second partial-edit file differs from the updated version.

10. The NAS of claim 9 , wherein the control circuitry is further configured to, in response to the determination that the version of the existing file associated with the second partial-edit file differs from the updated version, send a notification to the second client indicating that the existing file has changed.

11. The NAS of claim 1 , wherein:

the request, from the first client, to access the first portion of the existing file comprises a target location in the existing file; and

the first partial-edit file created in the non-volatile memory module of the NAS comprises a partial portion of the existing file that includes the target location.

12. A computing device comprising:

a data storage module;

a network interface; and

control circuitry coupled to the data storage module and to the network interface and configured to:

connect to a data storage server over a network connection using the network interface, the data storage server configured to enable concurrent modification of a stored file without using distributed locks;

send, to the data storage server, a request for a portion of a file stored at the data storage server;

send a request to the data storage server to create, at a non-volatile memory of the data storage server, a partial-edit file based on at least the portion of the file;

receive, from the data storage server, the portion of the file;

store the portion of the file in the data storage module;

generate modifications to the portion of the file stored in the data storage module;

send, to the data storage server, the modifications to modify the partial-edit file at the data storage server; and

send, to the data storage server, a request to commit the partial-edit file.

13. The computing device of claim 12 , wherein the control circuitry is further configured to receive, from the data storage server, partial-edit file identifier information identifying the partial-edit file.

14. The computing device of claim 13 , wherein said sending the modifications to the data storage server comprises sending a command to the data storage server including the modifications and the partial-edit file identifier information.

15. The computing device of claim 14 , wherein the command is a representational state transfer (REST) application programming interface (API) command.

16. The computing device of claim 12 , wherein the control circuitry is further configured to receive, from the data storage server, a response indicating that a version of the file that is associated with the partial-edit file is different than a current version of the file maintained at the data storage server.

17. The computing device of claim 16 , wherein the control circuitry is further configured to, in response to the response from the data storage server, force a commitment of the partial-edit file.

18. The computing device of claim 16 , wherein the control circuitry is further configured to, in response to the response from the data storage server, save the partial-edit file as a new file.

19. The computing device of claim 12 , wherein the control circuitry is further configured to, in response to the response from the data storage server, save the partial-edit file as a new version of the file.

20. The computing device of claim 12 , wherein the control circuitry is further configured to, after sending the request to commit the partial-edit file, send a request to delete the partial-edit file.

21. A data storage server configured to enable concurrent modification of a stored file without using distributed locks, the data storage server comprising:

means for non-volatile storage comprising a user data space and a partial-edit file space separate from the user data space;

means for network communication; and

control circuitry coupled to the means for non-volatile storage and to the means for network communication, the control circuitry configured to:

maintain a client-viewable file system that references files stored in the user data space;

connect to a client over a network connection using the means for network communication;

receive, from the client, a new file not previously stored in the means for non-volatile storage;

create a partial-edit file in the partial-edit file space based on the new file in the means for non-volatile storage of the data storage server;

receive, from the client, modifications associated with the new file;

modify the partial-edit file in the partial-edit file space according to the received modifications;

copy the modified partial-edit file to the user data space as part of a new file system file; and

add, to the file system, a reference to the new file system file.

22. The data storage server of claim 21 , wherein the control circuitry is further configured to receive, from the client, a request to create the partial-edit file, wherein said creating the partial-edit file is performed in response to the request to create the partial-edit file.

23. The data storage server of claim 21 , wherein the control circuitry is further configured to provide, to the client, partial-edit file identifier information associated with the partial-edit file.

24. The data storage server of claim 21 , wherein the control circuitry is further configured to delete the partial-edit file after said copying the modified partial-edit file to the user data space.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 19, 2017
From: RIBEIRO, GABRIEL; GAILLARD, JONATHAN; RACHABATHUNI, SAILESH
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043631/0112 →