1. A system having a processor for dynamically assigning data storage requests to data storage resources, the system comprising: a means for receiving an initial request plan specifying how an alternate data path is to be chosen when preferred data storage resources are not available; a means for building a grid allocation table by grouping data storage resources in columns or rows of the grid allocation table according to common characteristics of the data storage resources; a means for assigning, when preferred resources are available, a row or column, respectively, of the grid allocation table to a data allocation request using preferred data storage resources; a means for assigning, when preferred data storage resources are not available, an alternate set of data storage resources to the data storage request; wherein each column or row of the grid allocation table operates independently on separate data storage requests; a means for determining whether requested resources from a failed request comprise common or unique resources; and a means for selectively adding the failed request to the blacklist table when the failed request corresponded to a common resource, and not adding the failed request to the blacklist table when the failed request corresponded to a unique requested resource.