IP Library Granted Patent US 9,588,919
Granted Patent B2
US 9,588,919 · App. 14/555,904 · Granted Mar 7, 2017

Methods and systems for I/O cancellation

Inventors: Anil Nanduri (Sunnyvale, CA); Chunqi Han (Pleasanton, CA); Murali Krishna Vishnumolakala (Sunnyvale, CA)
Assignee: NIMBLE STORAGE, INC.
G06F13/28G06F12/1081
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,588,919
App. No.
14/555,904
Granted
Mar 7, 2017
Kind
B2
Abstract

Described herein are techniques for cancelling I/O requests. Initially, virtual memory of an application is assigned to a first portion of memory. The application may issue a read request to an external device. The external device is instructed to record any response to the read request in the first portion of memory. The read request may be cancelled as follows. The virtual memory of the application may be re-assigned to a second portion of the memory. If and when the external device finishes processing the read request, the external device's response to the read request may still be saved in the first portion of memory, even though the read request has been cancelled. Such action of the external device would ordinarily corrupt the virtual memory of the application, but due to the memory re-assignment, no corruption of the virtual memory occurs. Similar techniques may be applied to cancel write requests.

Claims (29)

1. A method, comprising:

receiving an input/output (I/O) request, the I/O request instructing a transfer of data between a first portion of a main memory of a computing system and an I/O device;

receiving a cancellation request to cancel the I/O request;

in response to the cancellation request, preventing an application executing on the computing system from accessing the first portion of the main memory, while leaving the first portion of the main memory accessible to the I/O device;

prior to the cancellation request being received, mapping a virtual memory of the application to the first portion of the main memory; and

subsequent to the cancellation request being received, reassigning the virtual memory of the application from the first portion of the main memory to a second portion of the main memory.

2. The method of claim 1 , further comprising:

subsequent to the cancellation request being received, accessing by the I/O device the first portion of the main memory.

3. The method of claim 2 , wherein the I/O device accesses the first portion of the main memory via a direct memory access (DMA) controller and an I/O controller of the computing system.

4. The method of claim 3 , further comprising:

subsequent to the cancellation request being received, writing data by the DMA controller from the I/O device to the first portion of the main memory.

5. The method of claim 1 , wherein reassigning the virtual memory comprises manipulating a page table of the computing system.

6. A computing system, comprising a processor, a main memory communicatively coupled to the processor, and a set of instructions on the main memory that, when executed by the processor, cause the processor to:

receive an input/output (I/O) request, the I/O request instructing a transfer of data between a first portion of the main memory of the computing system and an I/O device;

receive a cancellation request to cancel the I/O request;

in response to the cancellation request, prevent an application executing on the computing system from accessing the first portion of the main memory, while leaving the first portion of the main memory accessible to the I/O device;

prior to the cancellation request being received, map a virtual memory of the application to the first portion of the main memory; and

subsequent to the cancellation request being received, reassign the virtual memory of the application from the first portion of the main memory to a second portion of the main memory.

7. The computing system of claim 6 , wherein a communication path between the I/O device and the main memory of the computing system communicatively couples the I/O device to the first portion of the main memory.

8. The computing system of claim 7 , wherein the communication path between the I/O device and the main memory of the computing system comprises a direct memory access (DMA) controller and an I/O controller of the computing system.

9. The computing system of claim 8 , wherein the DMA controller is configured to, subsequent to the cancellation request being received, write data from the I/O device to the first portion of the main memory.

10. The computing system of claim 6 , wherein reassigning the virtual memory comprises manipulating a page table of the computing system.

11. A non-transitory machine-readable storage medium for a computing system having a processor and a main memory communicatively coupled to the processor, the non-transitory machine-readable storage medium comprising software instructions that, when executed by the processor, cause the processor to:

receive an input/output (I/O) request, the I/O request instructing a transfer of data between a first portion of the main memory of the computing system and an I/O device;

receive a cancellation request to cancel the I/O request;

in response to the cancellation request, prevent an application executing on the computing system from accessing the first portion of the main memory, while leaving the first portion of the main memory accessible to the I/O device;

prior to the cancellation request being received, map a virtual memory of the application to the first portion of the main memory; and

subsequent to the cancellation request being received, reassign the virtual memory of the application from the first portion of the main memory to a second portion of the main memory.

12. The non-transitory machine-readable storage medium of claim 11 , wherein reassigning the virtual memory comprises manipulating a page table of the computing system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 28, 2014
From: NANDURI, ANIL; HAN, CHUNQI; VISHNUMOLAKALA, MURALI KRISHNA
To: NIMBLE STORAGE, INC.
Reel/Frame 034277/0174 →
Continuity (2)
Continuation 14048018 · Oct 7, 2013
Related Publication 20150100709A1 · Apr 9, 2015