BACKGROUND

Storing and safeguarding electronic content may be beneficial in modern business and elsewhere. Accordingly, various methodologies may be employed to protect and distribute such electronic content.

Conventional storage systems may utilize many central processing units (CPUs) to concurrently process IO commands or operations on a configuration object. In such systems, there is usually a request for a barrier mechanism to suspend command processing and to release command processing. A common implementation for such a barrier mechanism is to use a command counter per configuration object. One problem with this approach is that the counter needs to be protected from concurrent updates. While this could be done by using atomic operations or locks, this approach imposes a performance impact that can be too high (e.g., due to lock contention, cache line contention, etc.). Another conventional approach is to split the command counter to a counter per thread, thus eliminating the concurrent update problem. However, this approach imposes another problem, higher memory consumption. In addition, this approach may request arithmetic operations for each command (e.g., a counter increment and decrement) even if there is no suspend request.

SUMMARY OF DISCLOSURE

In one example implementation, a computer-implemented method executed on a computing device may include, but is not limited to, receiving a plurality of input/output (IO) commands for a plurality of configuration objects of a storage system. A modification command for a configuration object of the plurality of configuration objects may be received. The configuration object may be suspended in response to receiving the modification command. One or more IO commands directed to the suspended configuration object from the plurality of IO commands may be processed before the configuration object is modified.

One or more of the following example features may be included. Suspending the configuration object may include generating a bitmap based upon, at least in part, whether each of the plurality of IO commands are directed to the suspended configuration object. One or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object may be suspended. One or more IO commands directed to the suspended configuration object received prior to suspending the configuration object may be processed based upon, at least in part, the bitmap. The configuration object may be modified based on the modification request in response to processing the one or more IO commands directed to the suspended configuration object received prior to suspending the configuration object and suspending the one or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object based upon, at least in part, the bitmap. The suspension of the configuration object may be released. The suspended one or more IO commands directed to the configuration object received subsequent to suspending the configuration object may be processed. The configuration object may include a storage volume within the storage system.

In another example implementation, a computer program product resides on a computer readable medium that has a plurality of instructions stored on it. When executed by a processor, the instructions cause the processor to perform operations that may include, but are not limited to, receiving a plurality of input/output (IO) commands for a plurality of configuration objects of a storage system. A modification command for a configuration object of the plurality of configuration objects may be received. The configuration object may be suspended in response to receiving the modification command. One or more IO commands directed to the suspended configuration object from the plurality of IO commands may be processed before the configuration object is modified.

One or more of the following example features may be included. Suspending the configuration object may include generating a bitmap based upon, at least in part, whether each of the plurality of IO commands are directed to the suspended configuration object. One or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object may be suspended. One or more IO commands directed to the suspended configuration object received prior to suspending the configuration object may be processed based upon, at least in part, the bitmap. The configuration object may be modified based on the modification request in response to processing the one or more IO commands directed to the suspended configuration object received prior to suspending the configuration object and suspending the one or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object based upon, at least in part, the bitmap. The suspension of the configuration object may be released. The suspended one or more IO commands directed to the configuration object received subsequent to suspending the configuration object may be processed. The configuration object may include a storage volume within the storage system.

In another example implementation, a computing system includes at least one processor and at least one memory architecture coupled with the at least one processor, wherein the at least one processor may be configured to receive a plurality of input/output (IO) commands for a plurality of configuration objects of a storage system. The at least one processor may be further configured to receive a modification command for a configuration object of the plurality of configuration objects. The at least one processor may be further configured to suspend the configuration object in response to receiving the modification command. The at least one processor may be further configured to process one or more IO commands directed to the suspended configuration object from the plurality of IO commands before the configuration object is modified.

One or more of the following example features may be included. Suspending the configuration object may include generating a bitmap based upon, at least in part, whether each of the plurality of IO commands are directed to the suspended configuration object. One or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object may be suspended. One or more IO commands directed to the suspended configuration object received prior to suspending the configuration object may be processed based upon, at least in part, the bitmap. The configuration object may be modified based on the modification request in response to processing the one or more IO commands directed to the suspended configuration object received prior to suspending the configuration object and suspending the one or more IO commands directed to the suspended configuration object received subsequent to suspending the configuration object based upon, at least in part, the bitmap. The suspension of the configuration object may be released. The suspended one or more IO commands directed to the configuration object received subsequent to suspending the configuration object may be processed. The configuration object may include a storage volume within the storage system.

The details of one or more example implementations are set forth in the accompanying drawings and the description below. Other possible example features and/or possible example advantages will become apparent from the description, the drawings, and the claims. Some implementations may not have those possible example features and/or possible example advantages, and such possible example features and/or possible example advantages may not necessarily be required of some implementations.

