The present invention implements an I/O task architecture in which an I/O
task requested by the storage manager, for example a stripe write, is
decomposed into a number of lower-level asynchronous I/O tasks that can
be scheduled independently. Resources needed by these lower-level I/O
tasks are dynamically assigned, on an as-needed basis, to balance the
load and use resources efficiently, achieving higher scalability. A
hierarchical order is assigned to the I/O tasks to ensure that there is a
forward progression of the higher-level I/O task and to ensure that
resources do not become deadlocked.