1. A method for error simulation in a data storage subsystem providing abstractions of one or more storage devices, the method comprising: dividing the data storage subsystem into two or more hierarchically organized subsystems, wherein the subsystems interact using IO Request Packets (IORPs), such that relatively higher level subsystems create and populate IORPs and pass them to relatively lower level subsystems for corresponding processing; and defining an IORP modifier configured to attach to a matching IORP based on one or more attributes of the IORP modifier and to modify at least one of the processing and one or more attributes of the IORP in order to simulate errors in the data storage subsystem; maintaining the defined IORP modifier in a searchable red-black tree data structure maintaining a plurality of IORP modifiers, wherein a key for each node in the tree is a data block address range over which an IORP modifier is operative.