Patent ID: 7698115

Claim:
A computer program product embodied on a computer-readable storage medium and comprising code stored on the computer-readable storage medium, the code such that, when executed by a processor, causes a computing device to perform the following: receiving information from a client computing device at a server component on a server computing device, the server computing device configured for dynamic allocation of buffer memory on the server, the buffer memory on the server to be allocated to clients for file system transactions, wherein the information indicates the client needs additional resources to perform a transaction and the information received from the client includes a number of transactions that are currently pending on the client but have not been processed that exceed a maximum number of transactions available limit that was previously negotiated; determining by the server component if allocating to the client the additional buffer memory on the server puts the server component in a resource constrained situation, wherein the server component is determined to be in a resource constrained situation by comparing a total number of transactions currently in use for all connections to the server and a total number of transactions that are currently pending on the clients for all connections to the server with a maximum number of transactions available on the server; in response to determining that allocating to the client the additional resources puts the server component in the resource constrained situation: determining resources currently allocated to a plurality of existing clients; wherein the server component stores server-side information related to each client connection with each of the clients, the server storing server-side information for each connection, the server-side information including: a current number of outstanding transaction requests from the client; the maximum number of transactions available limit for the client; the number of transactions that are currently pending on the client that exceed the maximum number of transactions available limit for the client, wherein the maximum number of transactions available limit for the client is initially determined when each of the clients connects to the server at which point a negotiation is performed between the client and the server to establish the maximum number of transactions; wherein the maximum number of transactions specifies a number of transaction requests to be accepted by the server from the client; issuing rebalancing messages configured for distributed file systems to any affected clients to either reduce or increase their maximum transaction available limit, wherein the rebalancing messages to the affected clients comprise deltas, each delta specifying a change in the maximum number of transactions available to the corresponding affected client; wherein the delta is a positive change or a negative change.