Method and system for hybrid direct input/output (I/O) with a storage device
AssigneeDSSD, Inc.
InventorMichael W. Shapiro
Life of this patent
Estimating the term…
Abstract
A method including intercepting a OFR for a file issued by an application to a FS, forwarding the OFR to the FS, receiving from the FS a FD for the file, issuing a SR for the file to the FS. The further method includes receiving from the FS status information for a target device on which the file is located, where the status information includes an OID for the file, storing a mapping of FD to the OID, intercepting a first FOR for the file, making a determination the that the first FOR is one of a read request and a write request, based on the determination, making another determination that the target device supports the direct I/O protocol, and issuing a DI request to the target device using the OID for the file, where the DI request is not processed by the FS.
Claims14
A non-transitory computer readable medium comprising instructions, which when executed by a processor perform a method, the method comprising:
- intercepting, in a user-level of a host, an open file request (OFR) for a file issued by an application to a file system (FS);
- forwarding the OFR to the FS, wherein the FS is located in the user-level and the OFR is forwarded to the FS via a kernel module in a kernel-level of the host;
- receiving from the FS, in response to the OFR, a file descriptor (FD) for the file;
- issuing a status request (SR) for the file to the FS, wherein the SR comprises the file descriptor;
- receiving from the FS, in response to the SR, status information for a target device on which the file is located, wherein the status information comprises an object identified (OID) for the file, wherein the target device is external to the host;
- storing a mapping of FD to the OID;
- after storing the mapping of the FD to the OID:
- intercepting, by a direct I/O library, a first file operation request (FOR) for the file, wherein the request comprises the FD;
- making a first determination that the first FOR is one selected from a group consisting of a read request and a write request;
- based on the first determination, making a second determination that the target device on which the file is located supports the direct I/O protocol;
- issuing a direct I/O request to the target device using the OID for the file, wherein the direct I/O request is not processed by the FS;
- intercepting, by the direct I/O library, a second FOR for the file, wherein the second FOR comprises the FD;
- making a third determination that the second FOR is not one selected from a group consisting of the read request and the write request;
- and
- based on the third determination, forwarding the second FOR to the FS via the kernel module in the kernel-level of the host.
A system, comprising:
- a processor;
- a user-level comprising an application, a direct I/O library, and a file system (FS);
- a virtual file system (VFS) in the kernel-level, wherein the VFS is interposed between the direct I/O library and the kernel module;
- a kernel-level, executing on the processor, comprising a kernel module;
- and
- wherein the application is configured to issue an open file request (OFR) for a file;
- wherein the direct I/O library is configured to intercept the OFR and forward the OFR to the VFS;
- wherein the VFS is configured to forward to the OFR to the kernel module;
- wherein the kernel module is configured to forward the OFR to the FS;
- wherein the FS is configured to obtain a file descriptor (FD) for the file and send the FD to the direct I/O library via the kernel module;
- wherein the direct I/O library is further configured to issue a status request (SR) for the file to the FS, wherein the SR comprises the file descriptor;
- wherein the FS is configured to receive, via the kernel module, the SR and generate status information for a target device on which the file is located, wherein the status information comprises an object identified (OID) for the file and specifies that the target device supports a direct I/O protocol, and send the status information to the direct I/O library via the kernel module;
- wherein the direct I/O library is further configured to receive the status information and store a mapping of FD to the OID;
- wherein the target device is operatively connected to the system;
- and
- wherein the kernel module is a File system in USEr space (FUSE) module.
Dependencies are inferred from the claim text.