IP Library Granted Patent US 11,126,353
Granted Patent B2
US 11,126,353 · App. 16/704,748 · Granted Sep 21, 2021

Method and apparatus for data copy

Inventors: Changyu Feng (Beijing, CN); Jian Gao (Beijing, CN); Xinlei Xu (Beijing, CN); Lifeng Yang (Beijing, CN); Liam Xiongcheng Li (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F3/0607G06F3/065G06F3/0619G06F3/0679G06F12/0238G06F12/0868G06F12/0871G06F2212/1024G06F2212/263G06F2212/284G06F2212/312
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 11,126,353
App. No.
16/704,748
Granted
Sep 21, 2021
Kind
B2
Abstract

Embodiments of the present disclosure relate to methods and apparatuses for data copy. A method comprises receiving, from a client module in a first processing unit, a read request for reading data from a first storage region. The method further comprises, in response to determining from the read request that the data is to be copied, obtaining, from a cache, a first bitmap associated with the first storage region, the first bitmap indicating if the first storage region is filled with zero. The method further comprises, in response to determining from the first bitmap that the first storage region is filled with zero, sending, to the client module, an indication that the data is zero.

Claims (61)

1. A method performed by a cache module of a data storage system for fulfilling a data copy request, the method comprising:

receiving, from a client module operating on processing circuitry of the data storage system, a read request for reading data from a source storage region, the read request being part of a data copy operation initiated by the client module in response to the data copy request;

looking up the first storage region in a first zero-fill bitmap of the cache module to determine whether the source storage region is entirely empty;

in response to determining that the source storage region is entirely empty, sending a zero-fill indication to the client module indicating that the source storage region has been determined to be entirely empty;

in response to sending the zero-fill indication to the client module, receiving a write request for filling a destination storage region with all zeroes; and

in response to receiving the write request, updating a second zero-fill bitmap of the cache module to indicate that the destination storage region is entirely empty.

2. The method of claim 1 wherein:

the read request includes a flag indicating that the data is to be copied; and

the method further comprises determining from the read request that the data is to be copied by:

obtaining the flag from the read request; and

determining, based on the flag, if the data is to be copied.

3. The method of claim 1 wherein the cache module includes a plurality of zero-fill bitmaps, each zero-fill bitmap of the cache module representing a respective logical storage disk.

4. The method of claim 3 wherein:

the source storage region is on a first logical storage disk, the first zero-fill bitmap representing the first logical storage disk;

the destination storage region is on a second logical storage disk distinct from the first logical storage disk, the second zero-fill bitmap representing the second logical storage disk; and

the first zero-fill bitmap is distinct from the second zero-fill bitmap.

5. The method of claim 3 wherein:

the source storage region and the destination storage region are both on a single logical storage disk;

the first zero-fill bitmap is the second zero-fill bitmap;

the source storage region is represented by a first portion of the first zero-fill bitmap; and

the destination storage region is represented by a second portion of the first zero-fill bitmap distinct from the first portion.

6. The method of claim 1 wherein sending the zero-fill indication to the client module includes refraining from preparing a buffer representing the source storage region in the cache module full of zeroes.

7. The method of claim 6 wherein sending the zero-fill indication to the client module further includes embedding the indication within a scatter-gather list that points to an address that does not include a prepared buffer full of zeroes.

8. The method of claim 1 wherein determining that the source storage region is entirely empty includes refraining from reading data from the source storage region.

9. The method of claim 1 wherein the method further comprises, after updating the second zero-fill bitmap, writing zeroes to a persistent storage disk of the data storage system based on the second zero-fill bitmap.

10. The method of claim 1 wherein the client module and the cache module are both implemented on a same storage processing unit of the data storage system.

11. The method of claim 1 wherein:

the client module is implemented on a first storage processing unit of the data storage system;

the cache module is implemented on a second storage processing unit of the data storage system distinct from the first storage processing unit; and

the first storage processing unit is communicatively coupled to the second storage processing unit via a communication management interface.

12. An apparatus comprising:

persistent storage; and

processing circuitry coupled to memory configured to operate as a client module and a cache module, the cache module being configured to fulfill a data copy request by:

receiving, from the client module, a read request for reading data from a source storage region, the read request being part of a data copy operation initiated by the client module in response to the data copy request;

looking up the first storage region in a first zero-fill bitmap of the cache module to determine whether the source storage region is entirely empty;

in response to determining that the source storage region is entirely empty, sending a zero-fill indication to the client module indicating that the source storage region has been determined to be entirely empty;

in response to sending the zero-fill indication to the client module, receiving a write request for filling a destination storage region with all zeroes; and

in response to receiving the write request, updating a second zero-fill bitmap of the cache module to indicate that the destination storage region is entirely empty.

13. The apparatus of claim 12 wherein:

the read request includes a flag indicating that the data is to be copied; and

the cache module is further configured to fulfill the data copy request by determining from the read request that the data is to be copied by:

obtaining the flag from the read request; and

determining, based on the flag, if the data is to be copied.

14. The apparatus of claim 12 wherein the cache module includes a plurality of zero-fill bitmaps, each zero-fill bitmap of the cache module representing a respective logical storage disk backed by the persistent storage.

15. The apparatus of claim 12 wherein sending the zero-fill indication to the client module includes refraining from preparing a buffer representing the source storage region in the cache module full of zeroes.

16. The apparatus of claim 12 wherein determining that the source storage region is entirely empty includes refraining from reading data from the source storage region.

17. The apparatus of claim 12 wherein the cache module is further configured to fulfill the data copy request by, after updating the second zero-fill bitmap, writing zeroes to the persistent storage based on the second zero-fill bitmap.

18. The apparatus of claim 12 wherein:

the apparatus further includes a plurality of storage processing units including a first storage processing unit and a second storage processing unit; and

the client module and the cache module are both implemented on the first storage processing unit of the data storage system.

19. The apparatus of claim 12 wherein:

the apparatus further includes a plurality of storage processing units including a first storage processing unit and a second storage processing unit distinct from the first storage processing unit; and

the client module is implemented on the first storage processing unit;

the cache module is implemented on the second storage processing unit; and

the first storage processing unit is communicatively coupled to the second storage processing unit via a communication management interface.

20. A computer program product comprising a non-transient computer-readable storage medium that tangibly stores a set of machine-executable instructions, which, when executed by a computing device, cause the computing device to operate a client module and a cache module, the cache module being configured to fulfill a data copy request by:

receiving, from the client module, a read request for reading data from a source storage region, the read request being part of a data copy operation initiated by the client module in response to the data copy request;

looking up the first storage region in a first zero-fill bitmap of the cache module to determine whether the source storage region is entirely empty;

in response to determining that the source storage region is entirely empty, sending a zero-fill indication to the client module indicating that the source storage region has been determined to be entirely empty;

in response to sending the zero-fill indication to the client module, receiving a write request for filling a destination storage region with all zeroes; and

in response to receiving the write request, updating a second zero-fill bitmap of the cache module to indicate that the destination storage region is entirely empty.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052216/0758) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0680 →
RELEASE OF SECURITY INTEREST AF REEL 052243 FRAME 0773 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0152 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 26, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052243/0773 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Mar 24, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052216/0758 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2020
From: FENG, CHANGYU; GAO, JIAN; XU, XINLEI; YANG, LIFENG; LI, LIAM XIONGCHENG
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051593/0413 →