System and method for filtering information in a data storage system
First Claim
1. A filter system for a data storage system having a storage device being accessible to a client interface, the filter system comprising:
- a filter controller interposed between the client interface and the storage device and operable to receive an incoming request having protocol information from the client interface and provide an outgoing request to the storage device, the filter controller being further operable to receive an incoming response from the storage device and provide an outgoing response having protocol information to the client interface;
a plurality of filters coupled to the filter controller and being responsive to the incoming request and the outgoing response to modify information related to the incoming request and the outgoing response, under control of the filter controller; and
the filter controller being operative to select a filter of the plurality of filters based on the protocol information and to pass the protocol information to the filter, whereby the filter is further responsive to the protocol information, and wherein the filter is further selected by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters.
1 Assignment
0 Petitions
Accused Products
Abstract
A storage system filter provides protocol aware filter operations that avoid I/O blocking or calling thread holding. A filter framework includes a filter controller that handles request and response calls to filters that are registered with the filter framework. Filters may be loaded and unloaded in a consistent state, and the filter framework provides services for the filters for common functions. Filters may operate in a user mode or a kernel mode and may be invoked in a synchronous, an asynchronous, or an asynchronous release mode. Filter registration may include registration for I/O resources, and may include tagging of I/O requests and responses to contribute to preventing conflicts.
55 Citations
38 Claims
-
1. A filter system for a data storage system having a storage device being accessible to a client interface, the filter system comprising:
-
a filter controller interposed between the client interface and the storage device and operable to receive an incoming request having protocol information from the client interface and provide an outgoing request to the storage device, the filter controller being further operable to receive an incoming response from the storage device and provide an outgoing response having protocol information to the client interface; a plurality of filters coupled to the filter controller and being responsive to the incoming request and the outgoing response to modify information related to the incoming request and the outgoing response, under control of the filter controller; and the filter controller being operative to select a filter of the plurality of filters based on the protocol information and to pass the protocol information to the filter, whereby the filter is further responsive to the protocol information, and wherein the filter is further selected by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method for filtering information in a data storage system having a storage device being accessible to a client interface, the method comprising:
-
capturing, by a storage server, a request from the client interface and a response from the storage device; providing protocol information from the captured request and response to a plurality of filters; selecting a filter of the plurality of filters by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters performing filtering operations with the filter of the plurality of filters selected based on the protocol information and by evaluating the logical expression, in response to the captured request and response to selectively modify information related to the captured request and response; and selectively forwarding the captured request and response to the storage device and client interface, respectively, depending upon a result of the filtering operations. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A filter system for a data storage system having an input/output (I/O) interface and a storage media, comprising:
-
a filter controller interposed between the I/O interface and the storage media for processing requests and responses to and from the I/O interface and the storage media; a plurality of filters coupled to the filter controller and being responsive to a request and response to modify information related to the request and response, under control of the filter controller; and a filter invocation mechanism for invoking a filter of the plurality of filters under control of the filter controller based on protocol information in the request and response and being operable to permit the filter controller to invoke the filter and continue processing other requests and responses while the filter responds to the request and response, and wherein the filter is further invoked by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters.
-
-
36. A filter system for a file storage operating system having an input/output (I/O) interface and a storage media, the filter system comprising:
-
a filter controller interposed between the I/O interface and the storage media for processing requests and responses between the I/O interface and the storage media; a plurality of filters coupled to the filter controller and being responsive to a request and response to modify information related to the request and response, under control of the filter controller, the filter controller to select a filter of the plurality of filters based on protocol information in the request and response, and wherein the filter is further selected by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters; a filter loader for loading and unloading the plurality of filters in the filter system; and an I/O buffer coupled to the filter controller for storing I/O operations to permit filter I/O operations to be suspended during filter loading and unloading.
-
-
37. A file operating system having a filter system for a storage device being accessible to a client interface, the file operating system comprising:
-
filter invocation means for performing a call to a filter of a plurality of filters based on protocol information being transferred between the client interface and the storage device; filtering means for filtering the information under control of the filter invocation means to permit or prevent processing of the information transferred between the client interface and the storage device during filtering processing, wherein the filtering means is selected from a plurality of filters by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters; and block processing means responsive to the filtering means for processing blocks of data in the file operating system to filter blocks transferred between the client interface and the storage device.
-
-
38. A computer-program product comprising:
-
a computer-readable medium having computer program code embodied thereon for filtering information in a data storage system having a storage device being accessible to a client interface, the computer program code adapted to; capture a request from the client interface and a response from the storage device; provide protocol information from the captured request and response to a plurality of filters; perform filtering operations with a filter of the plurality of filters selected based on the protocol information, in response to the captured request and response to selectively modify information related to the captured request and response, and wherein the filter is further selected by evaluating a logical expression created from data in an I/O map and an event map, wherein the I/O map is configured to hold identifiers for the plurality of filters and I/O operations for which the plurality of filters are registered, and wherein the event map is configured to hold the identifiers for the plurality of filters and characteristics of the plurality of filters; and selectively forward the captured request and response to the storage device and client interface, respectively, depending upon a result of the filtering operations.
-
Specification