Dynamic Block-Level Indexing for Cache with Overflow

US2017308473A1 · US · A1

Patent metadata
FieldValue
Publication numberUS-2017308473-A1
Application numberUS-201615136253-A
CountryUS
Kind codeA1
Filing dateApr 22, 2016
Priority dateApr 22, 2016
Publication dateOct 26, 2017
Grant date

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Methods, systems, computer-readable media, and apparatuses may provide management of virtual memory. For instance, aspects described herein relate to dynamic generation of nodes in a binary search tree in response to a write command, with each of its nodes being representative of different memory ranges in the virtual system disk. Each node may be associated with a different record in a global linked list, ordered by offset that includes pointers to locations where blocks are stored in a virtual cache and offsets of locations where blocks are stored in the virtual overflow disk. Aspects described herein relate to reading blocks from a virtual system memory to service a read command without storing the blocks in the virtual cache.

First claim

Opening claim text (preview).

We claim: 1 . An apparatus comprising: a processor; and a non-transitory computer-readable medium storing one or more instructions that, when executed by the processor, causes the apparatus to: generate a virtual session comprising a virtual driver, a virtual cache, a virtual overflow disk, and a virtual system disk; receive, by the virtual driver from an input/output request issuer, a write command comprising an offset and a length, the offset being relative to the virtual system disk; calculate, by the virtual driver, a requested range based on the offset and the length; in response to determining that an overflow condition for the virtual cache has been satisfied, transfer one or more blocks from the virtual cache to the virtual overflow disk; determine whether any of a plurality of nodes of a tree have a range that at least partially overlaps the requested range; and in response to determining that none of the plurality of nodes have a range that at least partially overlaps the requested range, generate a new node for the tree having a range that at least overlaps a portion of the requested range. 2 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: write, to the virtual cache, a block associated with the portion of the requested range; and generate a record in a global linked list for the new node, the record comprising a pointer to a location of the block in the virtual cache. 3 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: in response to determining that a node of the tree overlaps the requested range, retrieve a record corresponding to the node from the global linked list; obtain a pointer to a location in the virtual cache from the record; write, to the location in the virtual cache, a block associated with a portion of the requested range that is overlapped by the range of the node. 4 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: update an offset index associated with the virtual overflow disk for the transferred one or more blocks, the offset index comprising one or more offsets at which the transferred one or more blocks are stored in the virtual overflow disk, respectively. 5 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: select the one or more blocks for transfer from the virtual cache to the virtual overflow disk based on the one or more blocks being least recently used with respect to blocks stored in the virtual cache. 6 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: receive, by the virtual driver from the input/output request issuer, a read command comprising an offset and a length; calculate, by the virtual driver, a different requested range based on the offset and the length included in the read command; and determine whether any of the plurality of nodes of the tree have a range that at least partially overlaps the different requested range. 7 . The apparatus of claim 6 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: in response to determining that none of the plurality of nodes of the tree have a range that at least partially overlaps the different requested range, retrieve blocks associated with the different requested range from the virtual system disk and place the retrieved blocks in an input/output buffer different from the virtual cache and the virtual overflow disk. 8 . The apparatus of claim 6 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: in response to determining that one or more of the plurality of nodes of the tree have a range that entirely overlaps the different requested range, retrieve blocks associated with the different requested range from the virtual cache or the virtual overflow disk. 9 . The apparatus of claim 6 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: in response to determining that the plurality of nodes of the tree have a collective range that only partially overlaps the different requested range, retrieve a first set of blocks associated with the different requested range from the virtual cache or the virtual overflow disk and a retrieve a second set of blocks associated with the different requested range from the virtual system disk. 10 . The apparatus of claim 1 , wherein the non-transitory computer-readable medium stores one or more additional instructions that, when executed by the processor, causes the apparatus to: receive a trim message comprising an offset and a range; calculate an identified range based on the offset and the range included in the trim message; determine whether any of the plurality of nodes have a range that at least partially overlaps the identified range; in response to determining that a node of the plurality of nodes has a range that overlaps the identified range, determine a location of a block associated with the node in the virtual cache or the virtual overflow disk using the global linked list; delete the block from the virtual cache or the virtual overflow disk; and delete the node from the tree and a record corresponding to the node from the global linked list. 11 . A system comprising: a computing device providing a virtual session for another computing device, the virtual session comprising: a virtual cache; a virtual overflow disk; a virtual system disk; a tree comprising a plurality of nodes, each node having a different range and being associated with a different record in a global linked list, wherein each record comprises a pointer to a location of a block stored in the virtual cache or an offset to a location of a block stored in the virtual overflow disk; and a virtual driver configured to: in response to receiving a write command, determine whether at least one node of the tree has a range that at least partially overlaps a first requested range associated with the write command; and in response to determining that none of the plurality of nodes of the tree have a range that at least partially overlaps the first requested range, generate a node for the tree that has at least a portion of the first requested range, and a corresponding record in the global linked list, wherein the record comprises a pointer to a location of a block associated with the node in the virtual cache; and in response to receiving a read command, determine whether one or more nodes of the tree have a range that at least partially overlaps a second requested range associated with the read command. 12 . The system of claim 11 , wherein the virtual session further comprises an input/output buffer different from the virtual cache and the virtual overflow disk, wherein the virtual driver is further configured to: in response to determining that none of the plurality of nodes of the tree have a range that

Assignees

Inventors

Classifications

  • G06F3/0665Primary

    at area level, e.g. provisioning of virtual or logical volumes · CPC title

  • Distributed directories, e.g. linked lists of caches · CPC title

  • Disk arrays, e.g. RAID, JBOD · CPC title

  • In storage network, e.g. network attached cache · CPC title

  • Disk storage · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US2017308473A1 cover?
Methods, systems, computer-readable media, and apparatuses may provide management of virtual memory. For instance, aspects described herein relate to dynamic generation of nodes in a binary search tree in response to a write command, with each of its nodes being representative of different memory ranges in the virtual system disk. Each node may be associated with a different record in a global …
Who is the assignee on this patent?
Citrix Systems Inc
What technology area does this patent fall under?
Primary CPC classification G06F3/0665. Mapped technology areas include Physics.
When was this patent published?
Publication date Thu Oct 26 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (A1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).