Patent ID: 8347010
Filing Date: 2013-01-01
Classification: G06F

Abstract:
1. A data processing system comprising: one or more host Central Processing Units (CPUs), the host CPUs running a host operating system and having a host system bus for interconnecting other data processing system components to the host CPUs; at least one Front End SAN controller (FE_SAN), including a data memory, physically co-located with each of the one or more host CPUs and interconnected via the host system bus to the co-located host CPU; a front-end network-interface coupled to each of the at least one FE_SAN; at least one remotely located Back End SAN controller (BE_SAN) interconnected via a back-end system bus to one or more disk drive interfaces that each control a plurality of storage devices remotely located apart from at least one of the one or more host CPUs; a back-end network-interface coupled to each of the at least one BE_SAN via the back-end system bus; a network fabric interconnecting the front-end network-interface of the FE_SAN controllers with the back-end network-interface of the remotely located BE SAN controllers; and SAN virtualization software executing on the FE_SAN controllers and the BE_SAN controllers; wherein the SAN virtualization software of the FE_SAN controllers is configured to request data from the BE_SAN when data is required by a host CPU so that data may be transferred to a host CPU of the at least one host CPU from at least one storage device of the plurality of storage devices; and wherein the SAN virtualization software of the FE_SAN requests a write lock from the at least one ˜BE_SAN controllers on receiving a write command from the host, upon grant of write lock by the BE SAN the FE SAN writes data to the BE SAN for writing to an appropriate storage device, and releases the write lock on completing writing of data to the BE SAN so that data may be transferred from a host CPU to an appropriate storage device; wherein the Back End software includes access control software that is configured to restrict read or write access to a specific logical block addresses (LBAs) during writes to prevent data corruption while allowing concurrent unrestricted access other unlocked logical blocks; wherein there are at least two FE_SANs, and wherein if a first FE_SAN and a second FE_SAN request write lock to a same logical block address, the BE_SAN grants a lock request to the first FE_SAN upon when its buffer has sufficient space for the indicated amount of data of the first FE_SAN's write lock request or when the appropriate storage device is available for writing; and when the BE_SAN grants write lock to the second FE_SAN when it has sufficient buffer space available both for the indicated amount of data of the first FE_SAN's write lock request and for an indicated amount of data of the second FE_SAN's write lock request.