Patent ID: 6983355

Claim:
A method for managing physical storage space in a storage subsystem, the physical storage space including at least one physical storage device attached to a storage controller in communication with at least one host system, the method comprising: dividing the physical storage device into a plurality of segments (S); assigning an identifier to each segment, the identifier having a first portion identifying a physical device in which the segment is located and a second portion identifying a location within the physical device; establishing a plurality of emulated devices (D) within the storage controller for access by the at least one host system; establishing a plurality of tables within the storage controller, each table subdivided into a plurality of pages, each page having a plurality of entry spaces, the tables comprising: a first segment table having D pages, each page having a first plurality of entry spaces (i 1 ) or storing segment identifiers, each segment identifier having a first plurality of bits identifying a segment number within a physical storage device and a second plurality of bits identifying a physical storage device; and a second segment table having a plurality of pages equal to S/(2i 1 ), each page having a second plurality of entry spaces (i 2 ) for storing pointers to entries in the first segment table; and an emulated device table having a plurality of entry spaces equal to D, each entry space for storing an identifier of a segment table and an identifier of a segment table page; selecting the number of second entry spaces i 2 such that: memory space required by the segment tables in the storage controller is optimized; and the segments may be allocated among any of the emulated devices in any proportion, including allocating all of the segments to a single emulated device; during operation of the storage subsystem, dynamically allocating the segments to the emulated devices; and during operation of the storage subsystem, using the device and logical address provided through a host I/O operation to access a logical block of an emulated device on the physical storage device associated with the emulated device by: using a provided device address to select an entry in the emulated device table; using information in the emulated device table entry to find a highest segment table and a segment table page within the highest segment table associated with the emulated device; using a logical block address (LBA) to navigate through the segment tables by considering the LBA as: a first plurality of bits identifying an entry within a second segment table page that contains a pointer to a first segment table page; a second plurality of bits identifying an entry within the first segment table page which contains the segment identifier; and a third plurality of bits identifying a logical block within the physical segment identified by the segment identifier; whereby a logical address on the emulated device is mappable to a logical block on a segment within the physical storage space.