Patent ID: 8230068

Claim:
A method for dynamically allocating a plurality of command processing resources in a storage device, comprising the steps of: (A) allocating a plurality of operations to a first pool in response to a plurality of transport layer sessions being initially established between said storage device and at least one host, wherein: (i) said first pool is accessible only by the plurality of sessions of same transport, (ii) each of said operations utilizes at least some of said command processing resources, and (iii) said command processing resources are configured to process the plurality of operations received by said storage device from said at least one host; (B) opening a plurality of sessions between said at least one host and said storage device; (C) allocating an initial amount of said operations from said first pool to a plurality of second pools, wherein each of said plurality of sessions is associated with a corresponding second pool of the plurality of second pools; (D) closing one of said plurality of sessions; (E) in response to said closing of said one of said sessions, releasing operations allocated to the closed session from the corresponding second pool back to said first pool; and (F) dynamically adjusting the allocation of said command processing resources between said sessions that are still open by re-allocating said released operations from said first pool to a plurality of second pools corresponding to said sessions that are still open up to a maximum value for each said open session.