Abstract:
The present disclosure provides techniques for managing a cache of a computer system using a cache management data structure. The cache management data structure includes a cold queue, a ghost queue, and a hot queue. The techniques herein improve the functioning of the computer because management of the cache management data structure can be performed in parallel with multiple cores or multiple processors, because a sequential scan will only pollute (i.e., add unimportant memory pages) cold queue, and to an extent, ghost queue, but not hot queue, and also because the cache management data structure has lower memory requirements and lower CPU overhead on cache hit than some prior art algorithms.
Abstract:
The disclosure provides an approach for dynamically reprogramming network and network infrastructure in response to VM mobility. The approach provides a hypervisor layer that can observe changes in VM-host relationships and reprogram the associated network and network infrastructure to maintain network communication. The hypervisor layer notifies an elastic network interface of a new IP address to include within its whitelist in response to VM migration to that elastic network interface.
Abstract:
The disclosure provides an approach for performing an operation by a first process on behalf of a second process, the method comprising: obtaining, by the first process, a memory handle from the second process, wherein the memory handle allows access, by the first process, to at least some of the address space of the second process; dividing the address space of the memory handle into a plurality of sections; receiving, by the first process, a request from the second process to perform an operation; determining, by the first process, a section of the plurality of sections that is to be mapped from the address space of the memory handle to the address space of the first process for the performance of the operation by the first process; mapping the section from the address space of the memory handle to the address space of the first process; and performing the operation by the first process on behalf of the second process.
Abstract:
Techniques for enabling filter-level access to a virtual disk (VMDK) are provided. In one set of embodiments, an application can invoke a first application programming interface (API) for opening the VMDK, the invoking of the first API causing an ordered group of filters associated with the VMDK to be instantiated. The application can further coordinate with a target filter in the ordered group of filters to establish a communication channel with the target filter and can receive, from the target filter, a handle to the target filter via the communication channel. The application can then issue an I/O request to the VMDK via the target filter using the handle, the issuing causing data associated with the I/O request to be filtered by other filters that are downstream from the target filter in the ordered group.
Abstract:
A method for processing a read request comprises intercepting a read request that includes a logical block address (LBA) of the storage device by an IO filter driver and retrieving a disk identifier (ID) associated with the LBA from a metadata file associated with the storage device. The method further comprises sending the LBA and the disk ID to a daemon configured to read and write to a cache. If the daemon returns cached data associated with the LBA and the disk ID, the method returns the cached data in response to the read request. If the daemon does not return cached data associated with the LBA and the disk ID, the method transmits the read request to the storage device.
Abstract:
A method for opening a virtual disk comprises reading information from a metadata file that identifies the current owner of the virtual disk. The method further includes sending a release request to the current owner of the virtual disk to release the virtual disk, writing information to the metadata file identifying the new owner, and then opening the virtual disk.
Abstract:
Techniques for enabling secure cross-process memory sharing are provided. In one set of embodiments, a first user process executing on a computer system can create a memory handle representing a memory space of the first user process. The first user process can further define one or more access restrictions with respect to the memory handle. The first user process can then transmit the memory handle to a second user process executing on the computer system, the memory handle enabling the second user process to access at least a portion of the first process' memory space, subject to the one or more access restrictions.
Abstract:
A computer system mechanism is provided that restricts execution of binaries, such as applications, kernel modules, shared libraries, on the computing system to only those that have been installed by an approved mechanism. The approved mechanism acts as a single entry point on the computing for installing new binaries. Any change in file content or metadata taints an executable file and prevents execution by the kernel. Files copied over and not installed via, the approved mechanism will not be executed.
Abstract:
The approaches described herein implement execution of a user space operation from a kernel context. A thread, executing on a computing device, initializes a second kernel stack based on a first kernel stack. The computing device executes an operating system having a user space and a kernel space. The thread, executing in kernel space, performs a non-blocking call (e.g., an upcall) to execute an upcall function in user space, such as filtering input/output (I/O) requests. The upcall function may further call other user space functions or system calls. The system calls are performed using the second kernel stack. Upon termination of the upcall function, the thread continues execution on the first kernel stack in kernel space. For example, the thread handles the filtered I/O commands.