Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
DETAILED ACTION
Response to Arguments
Applicant’s arguments with respect to independent claim(s) have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Claim Rejections - 35 USC §103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claim/s 1-4, 6, 8, 10, 13-20 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough (Pub. No. US 2022/0391266) in view Sun (Pub. No. US 2023/0026369) in view of Marchand (Pub. No. US 2025/0036490).
Claim 1, 13, 17 Eatough teaches “a method for data management, comprising: allocating, using a virtual machine associated with a first programming language ([0022] The application host 120 may utilize a first programming language, such as TypeScript, JavaScript, ECMAScript, or other suitable language… he application host 120 generally provides an operating or “runtime” environment, script host, or virtual machine in which the user application 122 (and other applications, libraries, etc., implemented using the first programming language of the application host 120) may be executed. ), at least one memory buffer within system memory ([0032] The external interface 262 is configured to generate a common data structure 272 (e.g., using JSON) from data received from the application bridge interface 224 and provide the common data structure 272 to a conversion module 264.), wherein the at least one memory buffer is associated with a second programming language, and wherein the at least one memory buffer is accessible based at least in part on a library that is associated with the second programming language and that supports communication with a file system server ([0023] Examples of the native application code 132 may include portions of the Windows API, in some embodiments. In some embodiments, the native application code 132 is only a portion of a library or other module, such as an individual function. [0036] The bridge module 260 includes an external interface 268 for the second programming language (“bridge.cpp”) and is itself implemented in the second programming language. The external interface 268 is configured to parse the common data structure received from the conversion module 264 for identification of the native bridge interface 234 (or a function therein) and provide the common data structure 278 to the native bridge interface 234. [0021] The host bridge 110 is an application, executable, service, or other suitable module that is configured to marshal and demarshal software objects, data, or other information for transfer between the application host 120 and the native host 130.); generating an interface for accessing, via the virtual machine, the at least one memory buffer, the interface associated with the first programming language that is also associated with the virtual machine ([0030] In the embodiment of FIG. 2, the host bridge 210 includes application bridge interface 224 and native bridge interface 234, which are shown as “[generated].ts” and “[generated].cpp/h” for the TypeScript/C++ embodiment. In other words, the application bridge interface 224 is i) implemented in TypeScript, and ii) executed within the application host 220,); and performing, using the interface and the first programming language that is associated with the virtual machine, a … read of data from or a … write of data to the file system server that is associated with the second programming language ([0030] In the embodiment of FIG. 2, the host bridge 210 includes application bridge interface 224 and native bridge interface 234, which are shown as “[generated].ts” and “[generated].cpp/h” for the TypeScript/C++ embodiment. In other words, the application bridge interface 224 is i) implemented in TypeScript, and ii) executed within the application host 220, and the native bridge interface 234 is i) implemented in C++, and ii) executed within the native host 230. The application bridge interface 224 and the native bridge interface 234 generally correspond to the application bridge interface 124 and the native bridge interface 134, respectively. The application bridge interface 224 includes a first function to be called by the user application 222 to request execution of the native application code 232. The application bridge interface 224 may also include a second function to be called to process a received common data structure, for example, to extract a return value or return structure from the received common data structure, as described herein.)”.
However, Eatough may not explicitly the new limitations of the claim.
Sun teaches “wherein the at least one memory buffer is accessible by a library that is associated with the second programming language ([0041] A WebAssembly component model defines how modules may be composed within an application or library. [Fig. 5] library as modules A, B; memory buffer as 564) and that is configured for … communication with a file system server that is associated with the second programming language ([Fig. 5] 540 as file system server associated with modules A, B); … a … read of data from or a … write of data to the file system server via the at least one memory buffer based at least in part on access to the at least one memory buffer by the library ([0070] The access permissions for linear memory space 540 in this example includes memory A region 562 to which only module A 510 has read/write access, memory B region 552 to which only module B 520 has read/write access, and shared memory region 564 to which module A 510 has read/write access and module B 520 has read access. In addition, module B 520 may also be given write permission to shared memory region 564 if module B 520 returns data (e.g., return value, return parameter) to module A 510 after being called by module A 510. [0019] Transformations of data from a native type to an interface type can be achieved by interface adapters. Consider a caller module compiled into WASM target code from a first software language that calls a second module compiled into WASM target code from a second software language.)”.
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Sun with the teachings of Eatough in order to provide a system that teaches shared memory buffers. The motivation for applying Sun teaching with Eatough teaching is to provide a system that allows for shared memory for the purposes of improving resource utilization. Together Eatough, Sun teaches every limitation of the claimed invention. Since the teachings were analogous art known at the filing time of invention, one of ordinary skill could have applied the teachings of Sun with the teachings of Eatough by known methods and gained expected results.
However, the combination may not explicitly teach zero-copy.
Marchand teaches “zero-copy ([0058] FIG. 6 illustrates a diagram of an exemplary implementation of an exemplary embodiment of the present disclosure, in which the sender process and the receiver process overlay the same part of the shared memory address space—the part containing the communication buffer—over their respective “send” and “recv” buffers to perform a zero-copy exchange)”.
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Marchand with the teachings of Eatough, Sun in order to provide a system that teaches zero-copy. The motivation for applying Marchand teaching with Eatough, Sun teaching is to provide evidence the shared memory system of Eatough and Sun is zero-copy. Together Eatough, Sun, Marchand teach every limitation of the claimed invention. Since the teachings were analogous art known at the filing time of invention, one of ordinary skill could have applied the teachings of Marchand with the teachings of Eatough, Sun by known methods and gained expected results.
Claim 2, 14, 18 the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein performing the zero-copy read or the zero-copy (i.e. as taught by Marchand) write comprises: reading, in accordance with the zero-copy read and via the virtual machine ([0020] In some scenarios, a user application 122 (e.g., executable code) executed within the application host 120 is able to make function calls to native application code 132 within the native host 130 (e.g., invoke host functions of native host 130) and receive corresponding return values, as described herein. In other scenarios, events that occur within, or are communicated to, the native host 130 are communicated to the user application 122, as described herein.), the data from the at least one memory buffer without copying the data to another memory location, wherein the at least one memory buffer is configured to accept the data from the file system server (i.e. accept via 268 Fig. 2) before the data is read from the at least one memory buffer ([0021] In scenarios where the function call provides a return argument or result, the host bridge 110 converts the return argument or result into a common data structure. In a similar manner, the host bridge 110 converts event notifications from the native host 130 into a common data structure for transmission to the user application 122, as described herein. The host bridge 110 wraps the messages and events within JSON envelopes which identify a data type being provided by the common data structure.)”.
Claim 3, 15, 19 the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein performing the zero-copy read or the zero-copy write comprises: writing, in accordance with the zero-copy write and via the virtual machine, the data to the at least one memory buffer without copying the data to another memory location, wherein the at least one memory buffer is configured to make the data available to the file system server after the data is written to the at least one memory buffer ([0036] The bridge module 260 includes an external interface 268 for the second programming language (“bridge.cpp”) and is itself implemented in the second programming language. The external interface 268 is configured to parse the common data structure received from the conversion module 264 for identification of the native bridge interface 234 (or a function therein) and provide the common data structure 278 to the native bridge interface 234. i.e. memory buffer as common data structure initiated via Application host VM)”.
Claim 4, 16, 20 the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein generating the interface comprises: generating the interface using a library associated with the first programming language, the interface being accessible via memory associated with the virtual machine ([0006] An application bridge interface is generated based on the schema, where the application bridge interface is implemented in a first programming language, executed within the application host, and communicates between the user application and a bridge module.)”.
Claim 6, the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein performing the zero-copy (i.e. as taught by Marchand) read or the zero-copy write comprises: performing the zero-copy read or the zero-copy write based at least in part on a request received from a data management application, wherein the interface supports a data path to the at least one memory buffer for the data management application ([Fig. 2] data path of user application as data management application utilizing data path to provide data structure)”.
Claim 8, the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein allocating the at least one memory buffer comprises: identifying a respective key corresponding to each memory buffer of the at least one memory buffer, wherein a key is used to address, by the virtual machine, a corresponding memory buffer for the zero-copy read or the zero-copy write ([0033] The conversion module 264 is a host-specific module in that it is configured to marshal the common data structure 272 from system resources (e.g., memory addresses) associated with the application host 220 to system resources (e.g., memory addresses) associated with the native host 230, for example, as common data structure 278. The conversion module 264 may include both a TypeScript portion 264-1 (“host_bridge.ts”) and a C++ portion 264-2 (“host_bridge.cpp”) for marshalling common data structures.)”.
Claim 10, the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein the first programming language is Java or Scala and the second programming language is C++ ([0019] The application host may utilize a first programming language, such as TypeScript, while the native host may utilize a second programming language, such as C++. [0022] The application host 120 may utilize a first programming language, such as TypeScript, JavaScript, ECMAScript, or other suitable language, while the native host 130 may utilize a second programming language that is different from the first programming language, such as C++, C#, Java, or another suitable programming language. Examiner notes, it would be obvious to one ordinarily skilled in the art, a first programming language can be Jave because Eatough teaches each environment may be a different language and the first programming language may be any suitable language)”.
Claim/s 5 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough, Marchand in view of King (Pub. No. US 2016/0162316).
Claim 5, the combination teaches the claim, wherein Eatough teaches “the method of claim 1, wherein allocating the at least one memory buffer comprises: allocating, using the first programming language, the at least one memory buffer outside a memory heap associated with the virtual machine ([0006] A common data structure that corresponds to the event is generated by the event receiver function of the native bridge interface based at least in part on the call to the event receiver function. The common data structure is converted by the application bridge interface to an application data structure implemented in the first programming language. The event handler function is called within the application host using the application data structure. Examiner notes, Fig. 5 of King teaches VM heap outside of host resources and therefore would be obvious to one ordinarily skilled in the art, Eatough VM memory resource is outside of bridge interface memory.)”.
Claim/s 7 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough, Sun, Marchand in view of Paulzagade (Pat. No. US 10,127,119).
Claim 7, the combination may not explicitly teach the limitation.
Paulzagade teaches “the method of claim 6, wherein the data management application is an archival application ([Col. 4, Lines 56-59] The phrase “backup application,” as used herein, generally refers to any type or form of application that backs up data from and/or restores data to a computing system.)”.
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Paulzagade with the teachings of Eatough, Sun, Marchand in order to provide a system that archival application. The motivation for applying Paulzagade teaching with Eatough, Sun, Marchand teaching is to provide a system that allows for of design choice. Together Eatough, Sun, Marchand, Paulzagade teach every limitation of the claimed invention. Since the teachings were analogous art known at the filing time of invention, one of ordinary skill could have applied the teachings of Paulzagade with the teachings of Eatough, Sun, Marchand by known methods and gained expected results.
Claim/s 9 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough, Sun, Marchand in view of Dhawan (Pub. No. US 2022/0413972).
Claim 9, the combination teaches the claim, wherein Eatough teaches “the method of claim 8, wherein each key is mapped to a respective file system server of a plurality of file system servers ([0033] The conversion module 264 is a host-specific module in that it is configured to marshal the common data structure 272 from system resources (e.g., memory addresses) associated with the application host 220 to system resources (e.g., memory addresses) associated with the native host 230, for example, as common data structure 278. The conversion module 264 may include both a TypeScript portion 264-1 (“host_bridge.ts”) and a C++ portion 264-2 (“host_bridge.cpp”) for marshalling common data structures. Examiner notes as evidence, Dhawan teaches source and destination hosts may be file servers and therefore would be obvious to one ordinarily skilled in the art, Eatough teaches plurality of file servers [0038])”.
Claim/s 11 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough, Sun, Marchand in view of Boilen (Pub. No. US 2020/0210216).
Claim 11, the combination may not explicitly teach the limitation.
Boilen teaches “the method of claim 1, wherein the virtual machine is a Java virtual machine ([0035] In some cases, the virtual machine 215 may be an example of a JVM that runs Java programs or other programs that are compiled into Java bytecode.)”.
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Boilen with the teachings of Eatough, Sun, Marchand in order to provide a system that teaches details of a VM of Eatough. The motivation for applying Boilen teaching with Eatough, Sun, Marchand teaching is to provide a system that allows for design choice. Together Eatough, Sun, Marchand, Boilen teach every limitation of the claimed invention. Since the teachings were analogous art known at the filing time of invention, one of ordinary skill could have applied the teachings of Boilen with the teachings of Eatough, Sun, Marchand by known methods and gained expected results.
Claim/s 12 is/are rejected under 35 U.S.C. 103 as being unpatentable over Eatough, Sun, Marchand in view of Talpey (Pub. No. US 2013/0007180).
Claim 12, the combination may not explicitly teach the limitation.
Talpey teaches “the method of claim 1, wherein the at least one memory buffer is configured to be accessed by the file system server based at least in part on a server message block (SMB) protocol ([0034] In embodiments, the SMB Direct Module 214 is an instance created from the SMB Direct network provider interface (NPI) in the kernel 202. The SMB Direct Module 214 exposes an API (referred to as the SMB Direct NPI) to the SMB2 client and SMB2 server modules. The SMB2 client/server modules use this SMB Direct NPI to make requests to send or receive data over an SMB Direct connection. The SMB Direct module 214 implements the SMB Direct Protocol and sits between the SMB2 client/server modules and the underlying RDMA interface, according to embodiments. The SMB Direct NPI enables the SMB Direct protocol. The SMB Direct NPI may create and destroy SMB Direct connections, send and receive data over SMB Direct connections, register/unregister memory, perform RDMA Read/Write data operations from/to a peer over a SMB Direct connection, receive notifications when an SMB Direct connection is disconnected by the peer, marshal/unmarshal SMB2 packets for transmission across a SMB Direct connection, among other operations. To accomplish these tasks, an SMB Direct Module 214 is created that may manage the sending and retrieving of the SMB2 data from the memory buffers 222 as stored by the RDMA protocol. Thus, the SMB Direct Module 214 converts data from simply SMB2 data into RDMA and back from RDMA to SMB2. The SMB Direct Module 214 communicates with another new module, the RDMA Interface 216 to execute the operations in embodiments of the present disclosure.)”.
It would have been obvious to one of ordinary skill in the art at the time the invention was filed to apply the teachings of Talpey with the teachings of Eatough, Sun, Marchand in order to provide a system that teaches details protocols. The motivation for applying Talpey teaching with Eatough, Sun, Marchand teaching is to provide a system that allows for design choice. Together Eatough, Sun, Marchand, Talpey teach every limitation of the claimed invention. Since the teachings were analogous art known at the filing time of invention, one of ordinary skill could have applied the teachings of Talpey with the teachings of Eatough, Sun, Marchand by known methods and gained expected results.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to WYNUEL S AQUINO whose telephone number is (571)272-7478. The examiner can normally be reached 9AM-5PM EST M-F.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Lewis Bullock can be reached at 571-272-3759. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/WYNUEL S AQUINO/Primary Examiner, Art Unit 2199