IP Library › Granted Patent US 7,617,365
Granted Patent B2
US 7,617,365 · App. 10/931,325 · Granted Nov 10, 2009

Systems and methods to avoid deadlock and guarantee mirror consistency during online mirror synchronization and verification

Assignee: EMC Corporation
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 7,617,365
App. No.
10/931,325
Filed
Aug 31, 2004
Granted
Nov 10, 2009
Kind
B2
Examiner
DOAN, DUC T
Art Unit
2185
USPC
711/141
Abstract

Systems and methods can provide mirrored virtual targets and online synchronization and verification of the targets while avoiding deadlock, inconsistencies between members of the target, and false verification failures. A lock within the storage switch can limit the number of outstanding commands for a physical target to one during synchronization and verification operations. In one embodiment, a lock can be implemented as one or more resource tables maintaining an indication of the number of transfer ready signals available from physical targets. During typical write operations, deadlock can be avoided by determining whether each physical target for the mirrored operation can issue a transfer ready signal prior to issuing a command to the physical target. When a synchronization or verification operation begins, the maximum available number of transfer ready signals for each target can be decremented to one in order to limit the total number of outstanding commands for each target to one.

Claims (88)

1. A method of synchronizing data storage, comprising:

determining whether at least one read or write command is pending for at least one destination physical target provisioned as at least one member of a mirrored virtual target; and

avoiding deadlock by providing a synchronization command to write data from a source physical target to said at least one physical destination target only if no read or write command is pending at said at least one destination physical target;

wherein said step of determining includes determining whether at least one read or write command is pending for said at least one destination physical target by providing a first request to a first egress port in communication with said source physical target and at least one second request to at least one second egress port in communication with said at least one destination physical target;

receiving a first success response if no read or write commands are pending at said source physical target and a first failure response if a read or write command is pending at said source physical target;

receiving a second success response if no read or write commands are pending at said at least one destination physical target and a second failure response if a read or write command is pending at said at least one destination physical target;

updating a resource table to indicate that a read or write command is pending for said source physical target if said first success response is provided, and

updating said resource table to indicate that a read or write command is pending for said at least one destination target if said second success response is provided; and further comprising:

providing a first abort command to said first egress port if said first success response is received and said second failure response is received;

updating said resource table to indicate that no read or write commands are pending for said source physical target in response to said first abort command;

providing a second abort command to said at least one second egress port if said first failure response is received and said second success response is received; and

updating said resource table to indicate that no read or write commands are pending for said at least one physical destination target in response to said second abort command.

2. The method of claim 1 , further comprising:

providing an indication associated with said at least one destination physical target, said indication includes a first value to indicate that at least one read or write command is pending for said at least one destination physical target and a second value to indicate that no read or write commands are pending for said at least one destination physical target.

3. The method of claim 2 , wherein:

said step of determining includes accessing said indication to determine whether at least one read or write command is pending for said at least one destination physical target based on said indication.

4. The method of claim 2 , wherein:

said step of providing an indication includes providing said indication in said resource table, and making said resource table accessible to said first egress port in communication with said source physical target.

5. The method of claim 1 , wherein:

said first egress port is in communication with a first processing unit, said first processing unit provides said first success response and said first failure response.

6. The method of claim 5 , wherein:

said step of determining includes accessing said resource table with said first processing unit to determine whether at least one read or write command is pending for said at least one destination physical target.

7. The method of claim 1 , further comprising:

repeating said step of providing said at least one second request if said second failure response is received.

8. The method of claim 1 , wherein said resource table comprises:

a first table associated with said source physical target, said first table maintains a first value to indicate that at least one read or write command is pending for said source physical target a second value to indicate that no read or write commands are pending for said source physical target; and

at least one second table associated with said at least one destination physical target, said at least one second table maintains a third value to indicate that at least one read or write command is pending for said at least one destination physical target and a fourth value to indicate that no read or write commands are pending for said at least one destination physical target.

9. The method of claim 1 , wherein:

said step of providing a synchronization command comprises providing said synchronization command to said at least one destination physical target only if no read or write command is pending at said source physical target and said at least one destination physical target.

10. The method of claim 1 ,

wherein said resource table maintains a value indicative of a number of transfer ready signals available from said at least one destination physical target, said value having a maximum value indicative of a maximum number of transfer ready signals available from said at least one destination physical target;

decrementing said maximum value to one prior to said step of determining whether at least one read or write command is pending for said at least one destination physical target; and

wherein said step of determining whether at least one read or write command is pending for said at least one destination physical target includes determining from said resource table whether a transfer ready signal is available from said at least one destination physical target.

11. The method of claim 10 , wherein:

said number of transfer ready signals is at least one of a number of XFER—RDY information units and a number of R2T packet data units.

12. The method of claim 1 , further comprising:

locking said at least one destination physical target when a read or write command is pending for said at least one destination physical target;

wherein said step of determining whether at least one read or write command is pending for said at least one destination physical target includes determining whether said at least one destination physical target is locked.

13. The method of claim 1 , further comprising:

queuing said synchronization command if it is determined that at least one read or write command is pending for said at least one destination physical target.

14. The method of claim 1 , wherein:

said mirrored virtual target includes a mirrored virtual logical unit.

15. The method of claim 1 , wherein:

said at least one destination physical target is a physical logical unit.

16. The method of claim 1 , wherein:

said at least one destination physical target is at least one storage subsystem.

17. The method of claim 16 , wherein:

said at least one destination physical target is at least one physical device; and

said step of determining whether at least one read or write command is pending for said at least one destination physical target includes determining whether a read or write command is pending for a logical unit of said at least one physical device.

18. The method of claim 1 , wherein:

said at least one destination physical target is at least one physical device; and

said step of determining whether at least one read or write command is pending for said at least one destination physical target includes determining whether a read or write command is pending for a logical unit of said at least one physical device.

19. The method of claim 1 , wherein:

said synchronization command includes at least one of a synchronization write command, a synchronization read command, and a synchronization verify command.

20. A storage switch, comprising:

a memory for maintaining an indication of whether at least one read or write command is pending for at least one physical target provisioned as a member of a mirrored virtual target; and

at least one processing unit in communication with said memory that determines from said memory whether at least one read or write command is pending for said at least one physical target and the storage switch and provides a synchronization command to write data from a source target to said at least one physical target only if no read or write command is pending to avoid deadlock;

wherein said at least one physical target includes a source physical target provisioned as a first member of said mirrored virtual target, said source physical target comprising said source target, and at least one destination physical target provisioned as at least one second member of said mirrored virtual target;

said memory maintains an indication of whether at least one read or write command is pending for said source physical target and for said at least one destination physical target;

said storage switch provides said synchronization command to said at least one destination physical target only if no read or write commands are pending for said source physical target and said at least one destination physical target;

said at least one processing unit includes a first processing unit in communication with said source physical target and at least one second processing unit in communication with said at least one destination physical target, said first processing unit updates said memory to indicate that a read or write command is pending for said source physical target if a first success response is provided, and said at least one second processing unit updates said memory to indicate that a read or write command is pending for said at least one destination physical target if a second success response is provided;

an internal initiator that provides a first request to said first processing unit to determine whether at least one read or write command is pending for said source physical target and at least one second request to said at least one second processing unit to determine whether at least one read or write command is pending for said at least one destination physical target;

said first processing unit returns said first success response to said internal initiator if no read or write commands are pending for said source physical target and returns a first failure response to said internal initiator if at least one read or write command is pending for said source physical target;

said at least one second processing unit returns at least one second success response to said internal initiator if no read or write commands are pending for said at least one destination target and returns at least one second failure response to said internal initiator if at least one read or write command is pending for said at least one destination physical target; and

wherein said internal initiator sends a first abort command to said first processing unit if said first success response is provided and said at least one second failure response is provided, and sends a second abort command to said at least one second processing unit if said at least one second success response is provided and said first failure response is provided.

21. The storage switch of claim 20 , wherein:

said storage switch provides said synchronization command to said at least one physical target only if said at least one processing unit determines that no commands are pending for said at least one physical target.

22. The storage switch of claim 20 , wherein:

said at least one processing unit updates said memory to indicate that a read or write command is pending for said at least one destination physical target if one of said first or second success responses is provided.

23. The storage switch of claim 20 , wherein:

said internal initiator again provides said request to said at least one processing unit if one of said first or second failure responses is received.

24. The storage switch of claim 20 , wherein:

said internal initiator includes a central processing unit.

25. The storage switch of claim 24 , wherein:

said central processing unit includes at least one of a copy service manager and a verification service manager.

26. The storage switch of claim 20 , wherein:

said memory includes a first memory in communication with said first processing unit and a second memory in communication with said at least one second processing unit;

said first memory maintains an indication of whether at least one read or write command is pending for said source physical target; and

said second memory maintains an indication of whether at least one read or write command is pending for said at least one destination physical target.

27. The storage switch of claim 20 , wherein:

said first processing unit updates said memory to indicate that no read or write commands are pending for said source physical target if said first abort command is received; and

said at least one second processing unit updates said memory to indicate that no read or write commands are pending for said at least one destination physical target if said second abort command is received.

28. The storage switch of claim 20 , wherein:

said memory maintains a table including said indication of whether at least one read or write command is pending for said at least one destination physical target, said indication includes a value indicative of a number of transfer ready signals available from said at least one destination physical target, said value having a maximum value indicative of a maximum number of transfer ready signals available from said at least one destination physical target;

said internal initiator sends a command to said at least one processing unit to decrement said maximum value to one prior to providing said request; and

said at least one processing unit determines whether at least one read or write command is pending for said at least one destination physical target by determining from said table whether said at least one destination physical target has an available transfer ready signal.

29. The storage switch of claim 20 , wherein:

said synchronization command includes at least one of a synchronization write command, a synchronization read command, and a synchronization verify command.

Assignments (11)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 21, 2019
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 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2005
From: MARANTI NETWORKS, INC.
To: EMC CORPORATION
Reel/Frame 016327/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 23, 2004
From: ZHANG, CHAO; FREY, ROBERT T.
To: MARANTI NETWORKS, INC.
Reel/Frame 016007/0294 →
Continuity (3)
Continuation In Part 1083724800 · Apr 30, 2004
Continuation In Part 1083343800 · Apr 28, 2004
Related Publication 20060010299A1 · Jan 12, 2006