US 7,539,892 B2
Enhanced resynchronization in a storage-based mirroring system having different storage geometries
Pierre-Fortin Jean-Denis, Tucson, Ariz. (US); Gail A Spear, Tucson, Ariz. (US); Robert F Bartfai, Tucson, Ariz. (US); and Warren K Stanley, Loveland, Colo. (US)
Assigned to International Business Machines Corporation, Armonk, N.Y. (US)
Filed on Oct. 14, 2005, as Appl. No. 11/251,339.
Prior Publication US 2007/0088924 A1, Apr. 19, 2007
Int. Cl. G06F 11/00 (2006.01)
U.S. Cl. 714—6 12 Claims
OG exemplary drawing
 
1. A method for resynchronizing data during a recovery operation in a mirrored storage computing system in which the track size of data stored at a production site is different from the track size of data stored at an associated recovery site, the method comprising:
reading a first out-of-sync (OOS) bitmap from the production site, the first OOS bitmap identifying tracks stored at the production site which were written to during a failure at the production site;
storing the first OOS bitmap in a buffer having a predetermined size;
determining the track size of data stored at the production site relative to the track size of data stored at the recovery site;
converting the first OOS bitmap into a modified first OOS bitmap in which track identities correspond to track identities of tracks stored at the recovery site;
merging the modified first OOS bitmap into a second OOS bitmap identifying tracks stored at the recovery site which were written to during the failure at the production site, whereby a modified second OOS bitmap is generated identifying all tracks to be restored at the production site; and
transferring from the recovery site to the production site those tracks identified by the modified second OOS bitmap;
wherein:
if the track size of data stored at the production site is twice as large as the track size of data stored at the recovery site and the predetermined size of the buffer is double a size of a first portion of the first OOS bitmap, the method further comprises:
a) reading the first OOS bitmap from the production site comprises reading the first portion of the first OOS bitmap;
b) storing the first portion of the first OOS bitmap comprises storing the first portion in the buffer;
c) converting the first OOS bitmap comprises expanding the first portion of the first OOS bitmap into the entire buffer to create a first modified OOS bitmap portion;
d) merging the first modified OOS bitmap comprises merging the first modified OOS bitmap portion into a corresponding portion of the second OOS bitmap; and
e) the foregoing steps a) through d) are repeated for remaining unmodified portions of the first OOS bitmap;
if the track size of data stored at the production site is twice as large as the track size of data stored at the recovery site and the predetermined size of the buffer is equal to a size of a first portion of the first OOS bitmap, the method further comprises:
f) reading the first OOS bitmap from the production site comprises reading a first portion of the first OOS bitmap;
g) storing the first portion of the first OOS bitmap comprises storing the first portion in the buffer;
h) converting the first OOS bitmap comprises:
discarding a first half of the first portion of the first OOS bitmap, whereby a first half of the buffer is empty; and
expanding the remaining half of the first portion of the first OOS bitmap into the entire buffer to create a modified first half OOS bitmap portion;
i) merging the first modified OOS bitmap comprises merging the modified first half OOS bitmap portion into a corresponding portion of the second OOS bitmap;
j) the foregoing steps f) through i) are repeated for a second half of the first portion of the first OOS bitmap; and
k) the foregoing steps f) through j) are repeated for remaining unmodified portions of the first OOS bitmap; and
if the track size of data stored at the production site is half as large as the track size of data stored at the recovery site, the method further comprises:
l) reading the first OOS bitmap from the production site comprises reading a first portion of the first OOS bitmap, the first portion having a predetermined size;
m) storing the first portion of the first OOS bitmap comprises storing the first portion in a buffer having the predetermined size;
n) converting the first OOS bitmap comprises:
scanning the first portion of the first OOS bitmap to identify any two consecutive set bits; and
setting a corresponding bit in a first modified OOS bitmap portion;
o) merging the first modified OOS bitmap comprises merging the first modified OOS bitmap portion into a corresponding portion of the second OOS bitmap; and
p) the foregoing steps l) through o) are repeated for remaining unmodified portions of the first OOS bitmap.