CN104487937A - 替换通过强制卸载所删除的虚拟文件***数据结构 - Google Patents
替换通过强制卸载所删除的虚拟文件***数据结构 Download PDFInfo
- Publication number
- CN104487937A CN104487937A CN201280074860.9A CN201280074860A CN104487937A CN 104487937 A CN104487937 A CN 104487937A CN 201280074860 A CN201280074860 A CN 201280074860A CN 104487937 A CN104487937 A CN 104487937A
- Authority
- CN
- China
- Prior art keywords
- vfs
- file system
- node
- data structure
- path
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
- G06F16/192—Implementing virtual folder structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/188—Virtual file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开的示例涉及替换通过强制卸载所删除的虚拟文件***(VFS)数据结构。示例包括在存储器中存储与安装在VFS中的文件***关联的多个VFS数据结构。示例还包括通过文件***的强制卸载删除与文件***之一关联的VFS数据结构。示例进一步包括用链接数据结构替换所删除的数据结构。
Description
背景技术
计算设备可在与该计算设备关联的至少一个存储设备(例如,存储驱动或闪存)上存储信息。计算设备可实现文件***,并且在存储设备上将该信息存储为包含在文件***的相应目录中的文件。此外,计算设备可实现多个不同类型的文件***中的任一个。
附图说明
下面详细的描述参考附图,其中:
图1是响应于孤立文件***的识别而替换所删除的虚拟文件***(VFS)数据结构的示例计算设备的框图;
图2A是包括用于存储多个VFS数据结构的存储器的图1的示例计算设备的框图;
图2B是图2A的示例计算设备的框图,在该图中,与给定文件***关联的VFS数据结构从存储器被删除;
图2C是图2B的示例计算设备的框图,在该图中,链接数据结构替换在存储器中被删除的VFS数据结构;
图3是用于检测VFS路径已被切断的示例计算设备的框图;
图4是用于重新连接被切断的VFS路径的示例方法的流程图;以及
图5是用附加的VFS数据结构替换链接数据结构的示例方法的流程图。
具体实施方式
如上所述,计算设备可实现多个不同类型的文件***中的任一个。在一些示例中,计算设备可实现虚拟文件***(VFS),在该虚拟文件***(VFS)中不同类型的文件***可被安装。在这样的示例中,计算设备可通过VFS与所安装的不同类型的文件***交互,VFS可处理计算设备的已安装文件***之间的差异。
在一些示例中,安装在VFS中的给定文件***可具有安装在该给定文件***下的其他文件***。在这样的示例中,如果给定文件***从VFS中卸载,则安装在给定文件***下的任意子文件***将变成与VFS的根无联系的孤儿,因此使该子文件***并且从而使存储在该子文件***中的数据通过典型的查找操作在VFS中不可获得。因此,VFS可通常阻止卸载操作卸载在其下安装有任意其他文件***的文件***。但是,VFS还可实现强制卸载操作以强制VFS卸载规定的文件***,无论该规定的文件***下是否安装有任意子文件***。
在这样的示例中,通过删除与规定的文件***关联的VFS数据结构,规定的文件***的强制卸载可使安装在规定的文件***下的子文件***成为孤立的文件***。例如,实现VFS的计算设备可在存储器中存储与安装在VFS中的每个文件***关联的多个VFS数据结构。VFS数据结构可形成相应的VFS路径,通过该路径,可经由VFS到达每个安装的文件***。在这样的示例中,规定的文件***之一的强制卸载可删除与规定的文件***关联的VFS数据结构,并且因此切断通向安装在规定的文件***下的子文件***的VFS路径。
为了解决这些问题,本文描述的示例可检测安装在VFS中的文件***中任意给定文件***的强制卸载,并且作为响应,将安装在给定文件***下的文件***识别为孤立文件***。此外,响应于孤立文件***的识别,本文描述的示例可用链接数据结构替换所删除的数据结构,以重新连接所切断的通向孤立文件***的VFS路径。以这种方式,本文描述的示例可使VFS能够保持对通过安装在VFS中的文件***的强制卸载而孤立的文件***的访问。
现在参见附图,图1是响应于孤立文件***的识别而替换所删除的VFS数据结构的示例计算设备100的框图。如本文所使用的,“计算设备”可以是台式计算机、笔记本电脑、平板电脑、服务器、工作站、移动电话、智能设备、或者任何其他的处理设备或装备。
在图1的示例中,计算设备100包括VFS模块120。VFS模块120可包括模块122、124和126。在一些示例中,VFS模块120可包括附加模块。VFS模块120的功能(包括模块122、124和126的功能以及VFS模块120的任何其他模块的功能)可以机器可读存储介质上编码的可执行指令的形式、以电子电路的形式、或者以它们组合的形式实现。在一些示例中,实现选择模块120的功能的可执行指令可存储在至少一个机器可读存储介质上,并且由计算设备100的至少一个处理器执行。如本文所使用的,“处理器”可以是以下至少之一:中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)、被配置为获取和执行指令的现场可编程门阵列(FPGA)、其他适合于获取和执行存储在机器可读存储介质上的指令的电子电路、或者它们的组合。
在图1的示例中,计算设备100还可包括存储器140。在一些示例中,存储器140可以是至少一个机器可读存储介质。如本文所使用的,“机器可读存储介质”可以是任何电子的、磁的、光的、或者其他包含或存储信息(诸如可执行指令、数据等)的物理的存储设备。例如,本文描述的任意机器可读存储介质可以是随机存取存储器(RAM)、闪存、存储驱动(例如硬盘)、只读光盘存储器(CD-ROM)等、或者它们的组合中的任一个。另外,本文描述的任意机器可读存储介质可以是非瞬态的。
在图1的示例中,计算设备100可实现VFS。例如,计算设备100的VFS模块120可实现VFS。如本文所使用的,计算设备的“虚拟文件***”(或“VFS”)是提供通用接口的***,通过该通用接口,计算设备的应用可与多个不同类型的文件***交互。例如,无论安装在VFS中的文件***的相应类型如何,实现VFS的计算设备的应用都可利用由VFS定义的一组通用操作,以与安装在VFS中的每个文件***交互。在这样的示例中,VFS可针对安装在VFS中的每个不同类型的文件***将通用VFS操作转换成文件***特定的操作。在一些示例中,VFS可以是计算设备的操作***(OS)的部分,或者可另外与OS交互。在图1的示例中,VFS模块120可以是计算设备100的OS的部分,或者可另外与这种OS交互。
在图1的示例中,VFS模块120可在存储器140中存储与安装在VFS中的文件***关联的多个VFS数据结构150。如本文所使用的,“VFS数据结构”是由VFS利用以表征和管理安装在VFS中的文件***的数据结构。在本文描述的示例中,VFS数据结构包括VFS安装结构和VFS节点。如本文所使用的,“VFS安装结构”是表征安装在VFS中的文件***的数据结构,而且“VFS节点”是表征安装在VFS中的文件***的文件或者目录的数据结构。在一些示例中,VFS节点可以是索引节点、或虚拟节点等。在一些示例中,VFS还可在存储器140中存储VFS根。如本文所使用的,“VFS根”是安装在VFS中的根文件***的引用。根文件***可以是安装在VFS中的最高层的文件***。在一些示例中,VFS根可以是指向安装在VFS中的根文件***的指针。
在一些示例中,VFS数据结构150可形成从VFS根到安装在VFS中的每个文件***的相应VFS路径。如本文所使用的,“VFS路径”是在VFS中维护的链接VFS根和安装在VFS中的文件***的引用或者引用系列。例如,VFS路径可包括指向各种VFS数据结构150的一系列指针、以及从该路径中最后的VFS数据结构指向所安装的文件***的指针。
在一些示例中,VFS模块120可接收请求,以执行安装在VFS中的文件***中规定文件***的强制卸载。在一些示例中,VFS模块120可以接收采用具有选项、标志、参数等的卸载请求形式的强制卸载请求,该强制卸载请求规定对在请求中规定的文件***执行强制卸载。在其他示例中,可以任何其他适合的方式接收强制卸载请求。响应于强制卸载请求,VFS模块120可从VFS卸载所规定的文件***。在这样的示例中,作为所规定文件***的强制卸载的部分,VFS模块120可从存储器140删除与所规定文件***关联的VFS数据结构150。
在图1的示例中,强制卸载检测模块122可从VFS检测所安装文件***的强制卸载。例如,模块122可检测VFS模块120执行了强制卸载操作。响应于所规定文件***的强制卸载的检测,孤立文件***识别模块124可将安装在所规定文件***下的文件***识别为孤立的文件***。例如,VFS模块120可在存储器140中维护所安装文件***的集合,所安装文件***的集合包括安装在VFS中的每个文件***的引用,该引用被通向VFS中的文件***的目录路径索引。例如,所安装文件***的集合可包括哈希表,在哈希表中文件***的引用(例如指针)可基于文件***的目录路径的散列(例如“/a/b”)而找到。在其他示例中,所安装文件***的集合可包括数据结构的链表,该数据结构的链表各自包括所安装文件***的引用以及文件***的目录路径。
在这样的示例中,模块124可通过为任意文件***搜索所安装文件***的集合来识别孤立的文件***,该任意文件***的目录路径指示该文件***是通过所检测的强制卸载而卸载的所规定文件***的直接后代。如本文所使用的,给定文件***的“后代”是直接或者间接安装在给定文件***下的文件***。如本文所使用的,如果第一文件***被直接安装在第二文件***下,则第一文件***是第二文件***的“直接后代”。在本文描述的示例中,如果第一文件***被安装在第二文件***的目录处,则第一文件***被直接安装在第二文件***下。另外,在本文描述的示例中,如果第一文件***被安装在第三文件***下,第三文件***被安装在第二文件***下,则第一文件***被间接地安装在第二文件***下。在本文描述的示例中,在第一文件***与作为第一文件***的直接后代的第二文件***之间没有安装中间文件***。
例如,如果所卸载文件***的目录路径是“/a”,那么模块124可搜索所安装文件***的集合,并且将其目录路径指示其是安装在“/a”处的文件***的直接后代的任意文件***识别为孤立的文件***。在一些示例中,模块124可首先检查所安装文件***的集合,以将其目录路径开始于所卸载文件***的目录路径的任意文件***识别为后代。例如,如果所安装文件***的集合包括安装在“/”、“/d”、“/a/b”和“/a/b/c”处的文件***,那么模块124可分别将安装在目录路径“/a/b”和“/a/b/c”处的文件***识别为安装在“/a”处的文件***的后代。在一些示例中,模块124可随后将其目录路径不包括(例如,作为子字符串)任意其他后代的目录路径的任意后代识别为直接后代。例如,模块124可将在目录路径“/a/b”处的文件***识别为所卸载文件***的直接后代,并且因此将其识别为孤立的文件***。在这样的示例中,模块124可不将安装在“/a/b/c”处的文件***识别为直接后代,因为其包括“/a/b”作为子字符串。
响应于孤立文件***的识别,VFS数据结构替换模块126可用链接数据结构替换通过强制卸载所删除的VFS数据结构(即,与所卸载文件***关联的VFS数据结构)。在一些示例中,通过强制卸载所删除的VFS数据结构可以是与通过强制卸载所卸载的文件***关联的VFS数据结构。如本文所使用的,“链接数据结构”是被VFS利用以重新连接所切断的VFS路径的数据结构。在本文描述的示例中,链接数据结构包括链接安装结构和链接节点。如本文所使用的,“链接安装结构”是被VFS用来替换所删除的VFS安装结构以至少部分地重新连接所切断的VFS路径的数据结构。另外,如本文所使用的,“链接节点”是被VFS用来替换所删除的VFS节点以至少部分地重新连接所切断的VFS路径的数据结构。
作为示例,VFS模块120可执行强制卸载,以卸载安装在VFS中在VFS中的目录路径“/a”处的文件***“a”。在这样的示例中,强制卸载可删除与文件***“a”关联的多个VFS数据结构。例如,强制卸载可删除该文件***的VFS安装结构以及表征文件***“a”的根目录的VFS节点。在一些示例中,另一文件***“b”可安装在文件***“a”下。如本文所使用的,第一文件***安装在第二文件***“下”是指第一文件***被安装在第二文件***的目录中。在一些示例中,文件***“b”可安装在文件***“a”的子目录“b”处,并且因此在VFS中的目录路径“/a/b”处。在这样的示例中,文件***“a”的强制卸载还可删除表征所卸载文件***(即,文件***“a”)中的目录“b”的VFS节点。
在这样的示例中,如上面关于模块124描述的,响应于模块122检测强制卸载,模块124可将文件***“b”(具有“/a/b”的目录路径)识别为孤立文件***。作为响应,模块126可用链接安装结构替换所删除的VFS安装结构,并且用两个链接VFS节点替换所删除的VFS节点。模块126还可使用链接数据结构来重新连接从VFS根到文件***“b”的VFS路径,使得文件***“a”被卸载之后文件***“b”在VFS中可获得。在一些示例中,每个链接数据结构可包括指示其是链接数据结构而不是VFS数据结构的链接标志。
在本文描述的示例中,VFS模块120可为VFS安装结构实现多个VFS安装结构组件。如本文所使用的,“VFS安装结构组件”是数据结构组件,诸如,例如域、例程等。在一些示例中,VFS可为各链接安装结构实现VFS安装结构组件的子集。在这样的示例中,VFS模块120可为链接安装结构实现一些但少于全部的VFS安装结构组件。如本文所使用的,如果访问关于数据结构的数据结构组件(例如,域、例程等)不会导致错误(例如,不会返回错误代码,等等),则该数据结构组件是为该数据结构“实现”的。此外,在一些示例中,VFS模块120可为VFS节点实现多个VFS节点组件。如本文所使用的,“VFS节点组件”是数据结构组件,诸如,例如,域、例程等。在一些示例中,VFS模块120可为各链接节点实现VFS节点组件的子集。在一些示例中,本文关于图1描述的功能可与本文关于图2A至图5中任一个描述的功能结合来提供。
图2A是包括存储多个VFS数据结构150的存储器140的图1的示例计算设备100的框图。在图2A的示例中,如上面关于图1描述的,计算设备100包括VFS模块120和存储器140。如上面关于图1描述的,VFS模块120包括模块122、124和126。如上面关于图1所描述的,VFS数据结构150可形成从VFS根到安装在VFS中的每个文件***的相应VFS路径。在一些示例中,各VFS路径的各引用可以是指针。尽管在图2A至图2C的示例中,各VFS路径的各引用指的是指针,但是在其他示例中,引用可以是任何其他合适类型的引用。
在图2A的示例中,VFS模块120可在计算设备100的VFS中安装根文件***。在这样的示例中,模块120可创建并且在存储器140中存储表征根文件***的VFS安装结构151、以及表征根文件***的根目录“/”的VFS节点152。在图2A的示例中,VFS模块120可为每个VFS安装结构实现多个VFS安装结构组件,包括根VFS节点指针181、安装例程182和卸载例程183。在这样的示例中,根VFS节点指针181可指向根文件***的根VFS节点。在图2A的示例中,根VFS节点指针181可指向表征根文件***的根目录的VFS节点152。另外,在图2A的示例中,存储器140包括VFS根142。在一些示例中,VFS根142可以是指向VFS的根文件***的指针(或其他引用)。在图2A的示例中,VFS根142可指向VFS安装结构151。
在图2A的示例中,VFS模块120可为包括VFS节点152的每个VFS节点实现多个VFS节点组件。多个VFS节点组件可包括例如开启和关闭例程184、读取和写入例程185、读取目录例程186、查找例程187和VFS安装结构指针(或引用)188(例如,“VFS安装在此”指针)。在一些示例中,VFS模块120还可创建并且在存储器140中存储表征根目录下的子目录“a”的VFS节点153。至于所有的VFS节点,VFS模块120可为VFS节点153实现VFS节点组件184至188。在图2A的示例中,用于目录的VFS节点可以不存储指向表征子目录或者目录中的文件的其他VFS节点的指针,但可使用查找例程187查找指向任意VFS节点的指针或其他引用,该任意VFS节点表征由给定VFS节点表征的目录下的文件或子目录。例如,VFS节点152可以不存储指向VFS节点153的指针,但可以通过使用查找例程187在根目录中查找子目录“a”来获得指向VFS节点153的指针。在这样的示例中,VFS节点152的查找例程187可首先在目录名查找高速缓存(DNLC)中寻找指向子目录“a”的指针,且如果找到则将其返回。在这样的示例中,VFS模块120可使用返回的指针从VFS节点152到达VFS节点153。在图2A的示例中,与根文件***关联的VFS数据结构150的子集144可包括VFS安装结构151以及VFS节点152和153。
VFS模块120还可在计算设备100的VFS中安装另一文件***“a”。在这样的示例中,模块120可创建并且在存储器140中存储表征文件***“a”的VFS安装结构154、以及表征文件***“a”的根目录(例如,“/a”)的VFS节点155。在图2A的示例中,VFS模块120可在根文件***的目录“/a”中安装文件***“a”。在这样的示例中,VFS模块120可使VFS节点153的VFS安装结构指针188指向VFS安装结构154。VFS模块120可为VFS安装结构154实现VFS安装结构组件181至183,并且可为VFS节点155实现VFS节点组件184至188。VFS安装结构154的根VFS节点指针181可指向文件***“a”的根VFS节点,其是表征文件***“a”的根目录的VFS节点155。
VFS模块120还可创建并且在存储器140中存储表征文件***“a”的根目录下的子目录“b”的VFS节点156。至于所有VFS节点,VFS模块120可为VFS节点156实现VFS节点组件184至188。在这样的示例中,当期望通过使用VFS节点155的查找例程187在文件***“a”的根目录中查找子目录“b”时,VFS节点155可获得指向VFS节点156的指针。与文件***“a”关联的VFS数据结构150的子集146包括VFS安装结构154以及VFS节点155和156。
另外,在图2A的示例中,VFS模块120还可在计算设备100的VFS中安装另一文件***“b”。在这样的示例中,模块120可创建并且在存储器140中存储用于表征文件***“b”的VFS安装结构157、以及用于表征文件***“b”的根目录(例如,“/b”)的VFS节点158。在图2A的示例中,VFS模块120可在文件***“a”的子目录“/b”中(即,在VFS中的目录路径“/a/b”处)安装文件***“b”。在这样的示例中,VFS模块120可使VFS节点156的VFS安装结构指针188指向VFS安装结构157。VFS模块120可为VFS安装结构157实现VFS安装结构组件181至183,并且为VFS节点158实现VFS节点组件184至188。VFS安装结构157的根VFS节点指针181可指向文件***“b”的根VFS节点,根VFS节点是表征文件***“b”的根目录的VFS节点158。与文件***“b”关联的VFS数据结构150的子集148包括VFS安装结构157和VFS节点158。在一些示例中,VFS模块120实现的VFS可包括安装在图2A的示例中的任何文件***下的附加文件、目录和文件***。
在图2A的示例中,VFS模块120还可在存储器140中存储所安装文件***的集合172,该集合172包括表征安装在VFS中的文件***的各个VFS安装结构的引用,该引用通过VFS中的文件***(即,VFS安装结构)的目录路径索引。在一些示例中,集合172可包括哈希表,在哈希表中,VFS安装结构的引用(例如,指针)可基于所表征文件***的目录路径(例如,“/a/b”)的散列而找到。在其他示例中,所安装文件***的集合可包括数据结构的链表,各数据结构包括表征所安装文件***的VFS安装结构的引用以及文件***的目录路径。在图2A的示例中,在集合172中,指向根文件***的VFS安装结构的指针174B可与根文件***的目录路径174A(“/”)关联。此外,指向表征文件***“a”的VFS安装结构的指针176B可与文件***“a”的目录路径176A(“/a”)关联,并且指向表征文件***“b”的VFS安装结构的指针178B可与文件***“b”的目录路径178A(“/a/b”)关联。
在一些示例中,如上面关于图1描述的,VFS模块120可接收请求,以执行安装在VFS中的文件***中规定文件***的强制卸载。响应于该强制卸载请求,VFS模块120可从VFS卸载所规定的文件***。在这样的示例中,作为所规定文件***的强制卸载的部分,VFS模块120可从存储器140删除与所规定文件***关联的VFS数据结构150。
例如,在图2A的示例中,VFS模块120可接收请求以执行安装在VFS中的“/a”处的文件***“a”的强制卸载,并且可卸载文件***“a”作为响应。如下面描述的图2B中示出的,作为所规定文件***的强制卸载的部分,VFS模块120可从存储器140删除与文件***“a”关联的VFS数据结构150的子集146。
图2B是图2A的示例计算设备100的框图,在该图中,与给定文件***关联的VFS数据结构150从存储器140被删除。在图2B的示例中,如上面关于图1和图2A描述的,计算设备100包括VFS模块120和存储器140。如上面关于图2A描述的,存储器140可存储VFS根142、所安装文件***的集合172和VFS数据结构150。
另外,如上面关于图2A描述的,响应于执行安装在“/a”处的文件***“a”的强制卸载的请求,VFS模块120可删除与文件***“a”关联的VFS数据结构150的子集146。如图2A和图2B中示出的,在这样的示例中,作为强制卸载的部分,VFS模块120可删除VFS安装结构154、VFS节点155和VFS节点156,其每个与文件***“a”关联。在图2B的示例中,作为强制卸载的部分,因为VFS安装结构154被删除,因此VFS模块120可将VFS安装结构指针188设置为空(null)。因为VFS安装结构154被删除,因此VFS模块120还可从所安装文件***的集合172中删除目录路径176A(“/a”)和相应的指针176B。
在图2B的示例中,如上面关于图1描述的,强制卸载检测模块122可检测文件***“a”从VFS的强制卸载。响应于文件***“a”的强制卸载的检测,模块124可将被安装在文件***“a”下的文件***识别为孤立文件***。在图2B的示例中,模块124可将文件***“b”识别为孤立文件***。例如,模块124可为其目录路径指示该文件***是文件***“a”的直接后代的任何文件***搜索所安装文件***的集合172,文件***“a”通过所检测的强制卸载而被卸载。在该示例中,模块124可将安装在“/a/b”处的文件***“b”识别为孤立文件***。
在这样的示例中,从VFS根142到孤立文件***“b”的VFS路径通过与所卸载文件***“a”关联的VFS数据结构的删除而被切断。在这样的示例中,在文件***“a”的强制卸载后,表征文件***“b”的VFS安装结构157不再从VFS根142可获得。同样地,文件***“a”从VFS的强制卸载使文件***“b”和其中存储的信息经由VFS的典型查找操作不可获得。如下面描述的图2C中示出的,响应于孤立文件***的识别,VFS数据结构替换模块126可用链接数据结构替换被文件***“a”的强制卸载所删除的VFS数据结构。
图2C是图2B的示例计算设备100的框图,在该图中,链接数据结构160替换在存储器140中被删除的VFS数据结构150。在图2C的示例中,如上面关于图1至图2B描述的,计算设备100包括VFS模块120和存储器140。如上面关于图2A和图2B描述的,存储器140可存储VFS根142、所安装文件***的集合172以及VFS数据结构150。
如上面关于图2A和图2B描述的,从VFS根142到孤立文件***“b”的VFS路径通过与文件***“a”关联的VFS数据结构的删除被切断。在图2A至图2C的示例中,响应于文件***“b”作为孤立文件***的识别,VFS数据结构替换模块126可用链接数据结构160替换通过文件***“a”的强制卸载所删除的VFS数据结构,并且用链接数据结构160重新连接从VFS根142到孤立文件***“b”的VFS路径。
在图2C的示例中,响应于识别孤立文件***“b”,模块126可用链接安装结构164替换所删除的VFS安装结构154,并且分别用链接节点165和166替换所删除的VFS节点155和156。例如,模块126可创建并且在存储器140中存储链接安装结构164以及链接节点165和166,并且将它们链接到文件***“b”的VFS路径,以由此重新连接孤立文件***“b”的VFS路径。
在图2B和图2C的示例中,在具有目录路径“/a/b”的文件***“b”通过模块124被识别为孤立文件***后,模块126可沿文件***“b”的VFS路径行进得尽可能远。在图2B和2C的示例中,模块126可从VFS根142行进,经过VFS安装结构151和VFS节点152,且随后到达VFS节点153。因为文件***“a”被卸载,所以在表征根文件***中的子目录“/a”的VFS节点153处,模块126会发现VFS安装结构指针188指向空。因为VFS安装结构指针188指向空,所以模块126可尝试用VFS节点153的查找例程187查找子目录“b”。如果未发现“b”,模块126可识别VFS节点153的VFS安装结构指针188是替换VFS安装结构154的链接安装结构164将被安装的位置,并且可使VFS节点153的VFS安装结构指针188指向链接安装结构164。
在这样的示例中,模块126还可用链接节点165替换表征文件***“a”的根目录的VFS节点155,并且使链接安装结构164的根VFS节点指针181指向链接节点165。由于目录路径178A(“/a/b”)指示孤立文件***“b”被安装在文件***“a”的子目录“b”中,因此模块126还可创建并且在存储器140中存储链接节点166以替换表征文件***“a”中的子目录“b”的VFS节点156。在这样的示例中,模块126可更新DNLC,使得当搜索目录“b”时,链接节点165的查找例程187可返回指向链接节点166的指针。另外,在图2C的示例中,基于目录路径178A(“/a/b”),模块126可确定表征之前安装孤立文件***“b”的子目录“b”的链接节点166应当指向表征孤立文件***“b”的VFS安装结构。在这样的示例中,模块126可使链接节点166的VFS安装指针188指向表征孤立文件***“b”的VFS安装结构157。模块126还可更新所安装文件***的集合172,以包括与指向链接安装结构164的指针276B关联的目录路径276A(“/a”)。
在这样的示例中,链接数据结构可重新连接所切断的从VFS根142到所安装文件***“b”(由VFS安装结构157表征)的VFS路径。在这样的示例中,重新连接的VFS路径可使VFS能够经由典型的查找操作从VFS根142到达表征文件***“b”的VFS数据结构。在图2C的示例中,重新连接的VFS路径可包括VFS数据结构151至153、链接数据结构164至166以及VFS数据结构157和158。
在一些示例中,VFS的链接数据结构可不同于VFS安装结构。如上面关于图1描述的,VFS模块120可为VFS安装结构实现多个VFS安装结构组件。在一些示例中,VFS模块120可为各链接安装结构实现VFS安装结构组件的子集。在这样的示例中,子集可以是非空的,并且包括少于为VFS安装结构实现的所有VFS安装结构组件。在一些示例中,VFS模块120可实现对重新连接所切断的VFS路径有用的VFS安装结构组件。
在图2A至图2C的示例中,例如,为VFS安装结构实现的多个VFS安装结构组件,诸如VFS安装结构151、154和157,可包括根VFS节点指针181、安装例程182和卸载例程183。在一些示例中,VFS安装结构组件还可包括其他数据结构组件,诸如冷冻和解冻例程以停止和开始往返由VFS安装结构表征的文件***的输入/输出(I/O)操作、指示每用户存储限制的配额例程、以及任何其他适合的例程、域、或其他组件。
在图2C的示例中,VFS模块120可为链接安装结构实现VFS安装结构组件的子集。在这样的示例中,VFS模块120可为链接安装结构实现一些但少于全部的VFS安装结构组件。例如,如图2C中所示,VFS模块120可为包括链接安装结构164的链接安装结构实现根VFS节点指针181和卸载例程183。在这样的示例中,例如,VFS模块120可能不实现安装例程182和冷冻、解冻或配额例程。另外,在图2C的示例中,各链接安装结构(诸如链接安装结构164)可包括链接数据结构标志167,以指示链接安装结构是链接数据结构且不是VFS数据结构。在这样的示例中,VFS模块120可为链接安装结构实现标志,并且为各链接安装结构设置标志以指示链接安装结构是链接数据结构。
此外,在一些示例中,VFS的链接节点可不同于VFS节点。如上面关于图1描述的,VFS模块120可为VFS节点实现多个VFS节点组件。在一些示例中,VFS模块120可为每个链接节点实现VFS节点组件的子集。在这样的示例中,子集可以是非空的,并且包括比为VFS节点实现的所有VFS节点组件少的VFS节点组件。在一些示例中,VFS模块120可为链接节点实现对重新连接所切断的VFS路径有用的VFS节点组件。
在图2A至图2C的示例中,例如,为VFS节点(诸如VFS节点152、153、155、156和158)实现的多个VFS节点组件可包括开启和关闭例程184、读取和写入例程185、读取目录例程186、查找例程187和VFS安装指针188。在一些示例中,VFS节点组件还可包括其他数据结构组件,诸如创建目录中的新文件的创建例程、建立新目录的建立目录例程、删除目录的移除目录例程和任何其他适合的例程、域或其他组件。
在图2C的示例中,VFS模块120可为链接节点实现VFS节点组件的子集。在这样的示例中,VFS模块120可为链接节点实现一些但少于全部的VFS节点组件。例如,如图2C所示,VFS模块120可为链接节点(包括链接节点165和166)实现开启和关闭例程184、读取目录例程186、查找例程187和VFS安装指针188。在这样的示例中,例如,VFS模块120可不实现读取和写入例程185、以及创建、建立目录或移除目录例程。另外,在图2C的示例中,各链接节点(诸如链接节点165和166)可包括链接数据结构标志167,以指示链接节点是链接数据结构且不是VFS数据结构。在这样的示例中,VFS模块120可为链接节点实现标志,并且为各链接节点设置标志以指示链接节点是链接数据结构。
尽管上面关于文件***“a”的强制卸载描述了图2A至图2C的示例,但是计算设备100可执行上面关于安装在VFS中的任意其他文件***的强制卸载所描述的功能,该任意其他文件***在VFS中具有安装在其下的子文件***。在一些示例中,本文关于图2A至图2C描述的功能可与本文关于图1和图3至图5中任一个所描述的功能结合来提供。
图3是检测VFS路径已被切断的示例计算设备300的框图。在图3的示例中,计算设备300包括处理器310以及用指令320、322、324、325、326、328、330、332、334和336编码的机器可读存储介质315。在一些示例中,存储介质315可包括附加指令。处理器310可获取、解码和执行存储在存储介质315上的指令,以实现下面描述的功能。在其他示例中,存储介质315的任意指令的功能可以电子电路的形式、以编码在机器可读存储介质上的可执行指令的形式、或以它们组合的形式来实现。
在图3的示例中,如上面关于图1至图2C描述的,计算设备300还可包括存储器140。如上面关于图1至图2C描述的,存储器140可存储VFS根142、VFS数据结构150和所安装文件***的集合172。在图3的示例中,计算设备300可实现VFS。例如,VFS指令320可实现计算设备300的VFS。
如上面关于图1至图2C描述的,存储指令322可在存储器140中存储多个VFS数据结构150,多个VFS数据结构150与安装在VFS中的文件***关联并且形成从VFS根142到所安装文件***中每个的相应VFS路径。指令324可执行文件***中的第一文件***的强制卸载,文件***中的第二文件***被安装在该第一文件***下。在一些示例中,响应于由指令324接收(例如,从用户)的强制卸载请求392,指令324可执行第一文件***的强制卸载。请求392可规定第一文件***被卸载。
在一些示例中,作为第一文件***的强制卸载的部分,指令324的删除指令325可从存储器140删除与第一文件***关联的VFS数据结构150。在这样的示例中,如上面关于图2A至图2C描述的,与第一文件***关联的VFS数据结构150的删除可切断从VFS根142到第二文件***的VFS路径。例如,作为第一文件***的强制卸载的部分,指令325可删除与第一文件***关联的VFS安装结构,并删除至少一个VFS节点,诸如表征第一文件***的根目录的VFS节点。在一些示例中,指令325还可删除附加的VFS节点,诸如表征安装第二文件***的第一文件***的子目录的VFS节点。参见图2A,例如,如果第一文件***是文件***“a”并且第二文件***是文件***“b”,那么指令325可删除与第一文件***关联的VFS安装结构154、删除表征第一文件***的根目录的VFS节点155、以及删除表征安装第二文件***的第一文件***的目录的VFS节点156。在这样的示例中,如图2B中示出的,通过指令325删除VFS数据结构150可切断从VFS根142到第二文件***(即,文件***“b”)的VFS路径。
在图3的示例中,指令326可检测从VFS根142到第二文件***的VFS路径已被切断。在一些示例中,如上面关于图1描述的,指令326可检测强制卸载的执行。响应于检测强制卸载的执行,指令328可检查所安装文件***的集合172,以确定是否VFS路径中的任意一条已被删除。在一些示例中,如上面关于图1描述的,指令328可通过识别孤立文件***确定VFS路径已被切断。在这样的示例中,指令328可确定通向孤立文件***的VFS路径已被切断。
在其他示例中,指令326可检测VFS的失败的查找操作,并且作为响应,指令328可检查所安装文件***的集合172以确定是否VFS路径中的任意一条已被切断。在这样的示例中,指令326响应于强制卸载可能不识别孤立文件***和检测所切断的VFS路径,而是可以相反地响应于失败的查找确定VFS路径是否已被切断。例如,在第一文件***的强制卸载后,VFS指令320可接收请求以查找第二文件***(其安装在第一文件***下)中或下的文件或目录。在这样的示例中,当查找操作到达之前指向与所安装的第一文件***关联的VFS数据结构的VFS节点时,查找操作将失败。响应于失败的查找,指令328可为允许查找操作从失败的点继续的最短目录路径搜索所安装文件***的集合172。响应于识别集合172中的这种目录路径,指令328可确定通向第二文件***的VFS路径已被切断。
例如,参见图2A和图2B,例如在文件***“a”的强制卸载后,VFS指令320可接收请求以查找目录路径“/a/b”处的目录。在这样的示例中,参见图2B,当指令320确定VFS节点153的VFS安装指针188指向空并且VFS节点153的查找例程187未返回目录“b”时,查找操作可能在VFS节点153处失败。响应于失败的查找,指令328可针对允许查找操作从失败的点继续的最短目录路径搜索所安装文件***的集合172。在图2B的示例中,指令328会识别目录路径178A(“/a/b”),其允许查找从查找失败处(即,“/a”)继续。在识别集合172中的目录路径178A后,指令328可确定通向文件***“b”的VFS路径已被切断。
在图3的示例中,如上面关于图1至图2C描述的,响应于VFS路径的切断的检测,指令330可用链接数据结构替换所删除的VFS数据结构。在一些示例中,链接数据结构可重新连接所切断的从VFS根142到所安装的第二文件***的VFS路径。在这样的示例中,如上面关于图2C描述的,重新连接的VFS路径可使VFS能够从VFS根142到达表征第二文件***的VFS数据结构,并且因此经由典型的查找操作到达第二文件***。
在一些示例中,指令330可包括生成指令332和重新连接指令334。在这样的示例中,响应于VFS路径的切断的检测,指令332可生成链接安装结构和至少一个链接节点。在一些示例中,指令332可生成链接安装结构以及第一和第二链接节点。在一些示例中,VFS指令320可为链接安装结构实现比其为VFS安装结构(诸如通过强制卸载所删除的VFS安装结构和链接安装结构替换的VFS安装结构)实现的VFS安装结构组件少的VFS安装结构组件。VFS指令320还可为第一链接节点实现比为VFS节点(诸如通过强制卸载所删除的第一VFS节点)少的VFS安装结构组件。在这样的示例中,VFS指令320还可为第二链接节点实现比为VFS节点(诸如通过强制卸载所删除的第二VFS节点)少的VFS安装结构组件。在这样的示例中,所生成的链接安装结构和链接节点各自是链接数据结构160,指令332可将链接数据结构160存储在存储器140中。另外,在一些示例中,指令332可生成具有读取和执行许可362的链接安装结构以及第一和第二链接节点中的每个。
参见图2A至图2C,例如,响应于从VFS根142到安装在目录路径“/a/b”处的文件***“b”的VFS路径的切断的检测,生成指令332可生成链接安装结构164,为链接安装结构164实现比为通过强制卸载所删除的VFS安装结构154实现的VFS安装结构组件少的VFS安装结构组件。指令332还可生成链接节点165和链接节点166,为链接节点165实现比为通过强制卸载所删除的VFS节点155实现的VFS节点组件少的VFS节点组件,为链接节点166实现比为通过强制卸载所删除的VFS节点166实现的VFS节点组件少的VFS节点组件。
在图3的示例中,指令334可利用通过指令332生成的链接安装结构以及第一和第二链接节点重新连接所切断的VFS路径。在这样的示例中,指令334可使用VFS的指针,以利用通过指令332生成的链接数据结构重新连接所切断的VFS路径。参见图2C,例如,在生成包括链接数据结构164至166的链接数据结构160后,指令334可使VFS节点153的VFS安装指针188指向链接安装结构164,并且使链接安装结构164的根VFS节点指针181指向链接节点165。此外,指令334可更新DNLC以使链接节点165的查找例程187响应于查找目录“b”而返回指向链接节点166的指针。指令334还可使链接节点166的VFS安装结构指针188指向表征文件***“b”的VFS安装结构157。
在图3的示例中,安装指令336可接收请求394以在VFS中规定位置处安装给定的文件***,给定的文件***通过强制卸载从该位置处被卸载。例如,如果网络文件***(NFS)脱机,那么用户可因此使用强制卸载从VFS卸载NFS,无论任何其他文件***是否安装在NFS下。但是,当其恢复在线时,用户可能希望重新安装NFS。在这样的示例中,用户可提供安装请求394以重新安装所卸载的文件***。
响应于安装请求394,指令336可检测安装在VFS中规定位置处的链接数据结构。参见图2C,例如,文件***“a”可通过强制卸载被卸载,如上面图2A至图2C描述的,并且安装请求394可随后请求在VFS中的目录路径“/a”处重新安装文件***“a”。在这样的示例中,指令336可执行目录路径“/a”的查找作为安装过程的部分,并且在VFS节点153处确定在“/a”处已经安装某物。在这样的示例中,指令336可跟随VFS节点153的指向链接安装结构164的VFS安装结构指针188,并且从链接安装结构164的标志167确定安装结构164是链接数据结构。
响应于检测链接数据结构,指令336可利用与待安装的给定文件***(即,文件***“a”)关联的附加VFS数据结构替换链接数据结构,该链接数据结构替换了所删除的与文件***“a”关联的VFS数据结构。在这样的示例中,链接数据结构可包括链接安装结构和多个链接节点,并且附加VFS数据结构可包括表征给定文件***的附加VFS安装结构和表征给定文件***的目录的多个附加VFS节点。
在这样的示例中,指令336可在存储器140中为待安装的文件***存储VFS安装结构。在图2A至图2C的示例中,附加VFS安装结构可与之前删除的图2A的VFS安装结构154等同。指令336还可用表征被安装的文件***中相对应目录的附加VFS节点替换VFS的表征所卸载文件***的目录的至少一个链接节点。在这样的示例中,指令336可通过为文件***的目录对待安装的文件***执行查找操作而在存储器中存储各个附加VFS节点。因此,在一些示例中,指令336可首先确定在文件***中查找什么样的目录路径以创建适当的附加VFS节点来替换链接节点。
在一些示例中,指令336可通过为文件***搜索所安装文件***的集合172首先确定查找什么样的目录路径,该文件***是安装在由安装请求规定的目录路径处的给定文件***的直接后代。在一些示例中,如上面关于图1描述的,直接后代可被识别。在图2A至图2C的示例中,指令336可确定安装在目录路径178A(“/a/b”)处的文件***将是被安装在“/a”处的给定文件***的直接后代。在其他示例中,替换指令330可维护VFS的所有链接结构的树。在这样的示例中,指令336可基于树中引用的链接节点确定查找什么样的目录路径。
确定用于在待安装的文件***中查找的路径后,指令336可随后在文件***中查找适当的目录以将适当的附加VFS节点放入存储器140中。在图2A至图2C的示例中,例如,指令336可在文件***中查找目录路径“/a”,以取得VFS节点来替换表征所卸载文件***的根目录的链接节点165。此VFS节点可与图2A的VFS节点155等同。指令336还可在文件***中查找“/a”下的子目录“b”,以取得附加VFS节点来替换表征所卸载文件***中的子目录“b”的链接节点166。此VFS节点可与图2A的VFS节点156等同。因为与VFS节点156等同的VFS节点将是文件***“b”的安装点,所以其VFS安装结构指针188可从链接节点166的VFS安装结构指针188拷贝,以指向VFS安装结构157。指令336还可使VFS节点153的VFS安装结构指针188和指针276B各自指向待安装文件***的附加VFS安装结构(例如,与VFS安装结构154等同)。在一些示例中,本文关于图3描述的功能可与本文关于图1至图2C和图4至图5中的任一个描述的功能结合来提供。
图4是重新连接所切断的VFS路径的示例方法400的流程图。尽管下面参考图3的计算设备300描述方法400的执行,但可利用用于方法400的执行的其他适合组件(例如,计算设备100)。此外,方法400可以编码在机器可读存储介质上的可执行指令的形式、以电子电路的形式、或以它们组合的形式来实现。
在方法400的405处,计算设备300可在存储器140存储与安装在由计算设备300实现的VFS中的文件***关联的多个VFS数据结构150。在这样的示例中,VFS数据结构150可形成从VFS根142到所安装文件***中每个的相应VFS路径。在410处,计算设备300可接收请求392,以执行文件***中给定文件***的强制卸载。在415处,作为所请求的强制卸载的部分,计算设备300可利用处理器310从存储器140删除与给定文件***关联的VFS数据结构150。
在420处,响应于检测强制卸载的执行,计算设备300可确定所安装文件***中的另一文件***安装在给定文件***下。在这样的示例中,与给定文件***关联的VFS数据结构150的删除可切断从VFS根142到该另一文件***的VFS路径。在425处,如上面关于图1至图3描述的,计算设备300可利用替换所删除的VFS数据结构的多个链接数据结构,来重新连接所切断的从VFS根142到该另一文件***的VFS路径。在一些示例中,本文关于图4描述的功能可与本文关于图1至图3和图5中的任一个描述的功能结合来提供。
图5是用附加VFS数据结构替换链接数据结构的示例方法500的流程图。尽管方法500的执行在下面参考图3的计算设备300来描述,但可利用用于方法500的执行的其他合适组件(例如,计算设备100)。此外,方法500可以编码在机器可读存储介质上的可执行指令的形式、以电子电路的形式、或以它们组合的形式来实现。
在方法500的505处,计算设备300可在存储器140中存储与安装在由计算设备300实现的VFS中的文件***关联的多个VFS数据结构150。VFS数据结构150可形成从VFS根142到所安装文件***中每个的相应VFS路径。在510处,计算设备300可接收请求392,以执行文件***中给定文件***的强制卸载。在515处,作为所请求的强制卸载的部分,处理器310可从存储器140删除与给定文件***关联的VFS数据结构150。
在520处,响应于检测强制卸载的执行,计算设备300可确定所安装文件***中的另一文件***安装在给定文件***下。在这样的示例中,与给定文件***关联的VFS数据结构150的删除可切断从VFS根142到该另一文件***的VFS路径。在525处,如上面关于图1至图3描述的,计算设备300可利用替换所删除的VFS数据结构的多个链接数据结构来重新连接所切断的从VFS根142到该另一文件***的VFS路径。
在530处,计算设备300可接收请求394以在VFS中的位置处安装给定文件***,给定文件***通过强制卸载从该位置处被卸载。作为响应,如上面关于图3描述的,在535处,计算设备300可检测安装在VFS中的该位置处的链接数据结构之一。在540处,如上面关于图3描述的,响应于检测链接数据结构之一,计算设备300可用与给定文件***关联的附加VFS数据结构替换链接数据结构。在这样的示例中,链接数据结构可包括链接安装结构和多个链接节点,并且附加VFS数据结构包括表征给定文件***的附加VFS安装结构和表征给定文件***目录的多个附加VFS节点。在一些示例中,本文关于图5描述的功能可与本文关于图1至图4中任一个描述的功能结合来提供。
Claims (15)
1.一种用于实现虚拟文件***(VFS)的计算设备,所述计算设备包括:
存储器,用于存储多个VFS数据结构,所述多个VFS数据结构与安装在所述VFS中的文件***关联,并且形成从VFS根到所安装文件***中每个文件***的相应VFS路径;
强制卸载检测模块,用于从所述VFS检测所述文件***中任意给定文件***的强制卸载,其中与所述给定文件***关联的所述VFS数据结构通过所述强制卸载从所述存储器被删除;
孤立文件***识别模块,用于响应于所述强制卸载的检测,将所述文件***中安装在所述给定文件***下的一个文件***识别为孤立文件***;以及
VFS数据结构替换模块,用于响应于所述孤立文件***的识别,用链接数据结构替换所删除的VFS数据结构。
2.根据权利要求1所述的计算设备,其中:
从所述VFS根到所述孤立文件***的所述VFS路径通过与所述给定文件***关联的所述VFS数据结构的删除被切断;并且
所述替换模块进一步用所述链接数据结构重新连接从所述VFS根到所述孤立文件***的所述VFS路径。
3.根据权利要求2所述的计算设备,其中与所述给定文件***关联的所述VFS数据结构包括:
表征所述给定文件***的VFS安装结构,其中为所述VFS安装结构实现有多个VFS安装结构组件;以及
多个VFS节点,每个VFS节点表征所述VFS中的目录,其中为所述VFS节点中的每个实现有多个VFS节点组件。
4.根据权利要求3所述的计算设备,其中所述链接数据结构包括:
链接安装结构,其中为所述链接安装结构实现有第一子集的所述VFS安装结构组件,并且其中所述第一子集是非空的且包括少于所述VFS安装结构组件中全部的所述VFS安装结构组件;以及
多个链接节点,其中为所述链接节点中的每个实现有第二子集的所述VFS节点组件,其中所述第二子集是非空的且包括少于所述VFS节点组件中全部的所述VFS节点组件。
5.根据权利要求4所述的计算设备,其中:
所述链接安装结构包括链接数据结构标志;并且
所述第一子集包括:
根VFS节点指针;以及
VFS安装结构卸载例程。
6.根据权利要求4所述的计算设备,其中:
所述链接节点中的每个包括链接数据结构标志;并且
所述第二子集包括:
VFS节点查找例程;
VFS节点读取目录例程;
VFS节点开启例程;以及
VFS节点关闭例程。
7.一种非瞬态机器可读存储介质,所述存储介质利用计算设备的处理器可执行的指令编码以实现虚拟文件***(VFS),所述存储介质包括指令用于:
在所述计算设备的存储器中存储多个VFS数据结构,所述多个VFS数据结构与安装在所述VFS中的文件***关联并且形成从VFS根到所安装文件***中每个文件***的相应VFS路径;
执行所述文件***中的第一文件***的强制卸载,所述文件***中的第二文件***安装在所述第一文件***下,所述强制卸载包括从所述存储器删除与所述第一文件***关联的所述VFS数据结构,其中从所述VFS根到所述第二文件***的所述VFS路径通过所述删除被切断;
检测从所述VFS根到所述第二文件***的所述VFS路径已被切断;
响应于所述VFS路径的切断的检测,用链接数据结构替换所删除的VFS数据结构,其中所述链接数据结构重新连接所切断的VFS路径。
8.根据权利要求7所述的存储介质,其中用于检测的指令包括用于如下的指令:
检测所述强制卸载的执行;以及
响应于所述强制卸载的检测,检查安装在所述VFS中的文件***的集合以确定是否所述VFS路径中的任意一条已被切断。
9.根据权利要求7所述的存储介质,其中用于检测的指令包括用于如下的指令:
检测所述VFS的失败的查找操作;以及
响应于所述失败的查找操作的检测,检查安装在所述VFS中的文件***的集合以确定是否所述VFS路径中的任意一条已被切断。
10.根据权利要求7所述的存储介质,其中用于执行所述强制卸载的指令包括用于如下的指令:
删除与所述第一文件***关联的VFS安装结构;
删除表征所述第一文件***的根目录的第一VFS节点;以及
删除表征所述第一文件***的目录的第二VFS节点,所述第二文件***安装在所述目录处。
11.根据权利要求10所述的存储介质,其中用于替换的指令包括用于如下的指令:
生成链接安装结构,为所述链接安装结构实现比为所述VFS安装结构实现的VFS安装结构组件少的VFS安装结构组件;
生成第一链接节点,为所述第一链接节点实现比为所述第一VFS节点实现的VFS节点组件少的VFS节点组件;以及
生成第二链接节点,为所述第二链接节点实现比为所述第二VFS节点实现的VFS节点组件少的VFS节点组件,其中所述链接数据结构包括所述链接安装结构以及所述第一链接节点和所述第二链接节点。
12.根据权利要求11所述的存储介质,其中:
用于替换的指令进一步包括用于如下的指令:用所述链接安装结构以及所述第一链接节点和所述第二链接节点重新连接所切断的VFS路径;并且
所述链接安装结构以及所述第一链接节点和所述第二链接节点中的每个具有读取和执行许可。
13.一种方法包括:
在用于实现虚拟文件***(VFS)的计算设备的存储器中存储多个VFS数据结构,所述多个VFS数据结构与安装在所述VFS中的文件***关联并且形成从VFS根到所安装文件***中每个文件***的相应VFS路径;
接收请求以执行所述文件***中的给定文件***的强制卸载;
作为所请求的强制卸载的部分,利用所述计算设备的处理器从所述存储器删除与所述给定文件***关联的所述VFS数据结构;
响应于检测所述强制卸载的执行,确定所述文件***中的另一文件***安装在所述给定文件***下,其中从所述VFS根到所述另一文件***的所述VFS路径通过与所述给定文件***关联的所述VFS数据结构的删除被切断;以及
利用替换所删除的VFS数据结构的多个链接数据结构重新连接所切断的从所述VFS根到所述另一文件***的VFS路径。
14.根据权利要求13所述的方法,进一步包括:
接收请求以在所述VFS中的位置处安装所述给定文件***,所述给定文件***通过所述强制卸载从所述位置被卸载;以及
响应于所述请求,检测安装在所述VFS中的所述位置处的所述链接数据结构中之一。
15.根据权利要求14所述的方法,进一步包括:
响应于检测所述链接数据结构中之一,用与所述给定文件***关联的附加VFS数据结构替换所述链接数据结构,
其中所述链接数据结构包括链接安装结构和多个连接节点,并且所述附加VFS数据结构包括表征所述给定文件***的附加VFS安装结构和表征所述给定文件***的目录的多个附加VFS节点。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2012/057567 WO2014051592A1 (en) | 2012-09-27 | 2012-09-27 | Replacing virtual file system data structures deleted by a forced unmount |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104487937A true CN104487937A (zh) | 2015-04-01 |
Family
ID=50388783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280074860.9A Pending CN104487937A (zh) | 2012-09-27 | 2012-09-27 | 替换通过强制卸载所删除的虚拟文件***数据结构 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150293938A1 (zh) |
CN (1) | CN104487937A (zh) |
WO (1) | WO2014051592A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10015249B2 (en) * | 2015-11-04 | 2018-07-03 | Dropbox, Inc. | Namespace translation |
US9996541B2 (en) | 2016-02-10 | 2018-06-12 | Red Hat, Inc. | Hash-based mount point lookup in virtual file systems |
US11003372B2 (en) | 2018-05-31 | 2021-05-11 | Portworx, Inc. | Protecting volume namespaces from corruption in a distributed container orchestrator |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742003B2 (en) * | 2001-04-30 | 2004-05-25 | Microsoft Corporation | Apparatus and accompanying methods for visualizing clusters of data and hierarchical cluster classifications |
US20050065986A1 (en) * | 2003-09-23 | 2005-03-24 | Peter Bixby | Maintenance of a file version set including read-only and read-write snapshot copies of a production file |
US20080059541A1 (en) * | 2006-08-18 | 2008-03-06 | Fachan Neal T | Systems and methods for a snapshot of data |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
US7546431B2 (en) * | 2005-03-21 | 2009-06-09 | Emc Corporation | Distributed open writable snapshot copy facility using file migration policies |
US20100095164A1 (en) * | 2008-10-15 | 2010-04-15 | Hitachi, Ltd. | File management method and hierarchy management file system |
US20120030439A1 (en) * | 2010-07-30 | 2012-02-02 | Ibm Corporation | Data Sharing for File Clones Using Reverse Ditto References |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991763A (en) * | 1996-10-29 | 1999-11-23 | Sun Microsystems, Inc. | Method and apparatus for embedding concatenated data files into object files during runtime in a virtual file system |
US7644136B2 (en) * | 2001-11-28 | 2010-01-05 | Interactive Content Engines, Llc. | Virtual file system |
GB2411331A (en) * | 2004-02-19 | 2005-08-24 | Trigenix Ltd | Rendering user interface using actor attributes |
JP4175379B2 (ja) * | 2006-04-25 | 2008-11-05 | 日本電気株式会社 | ファイル共有方法およびファイル共有システム |
JP4907482B2 (ja) * | 2007-09-27 | 2012-03-28 | 株式会社日立製作所 | 計算機システム及びファイル管理方法 |
US8515911B1 (en) * | 2009-01-06 | 2013-08-20 | Emc Corporation | Methods and apparatus for managing multiple point in time copies in a file system |
US8671108B2 (en) * | 2011-09-02 | 2014-03-11 | Mastercard International Incorporated | Methods and systems for detecting website orphan content |
-
2012
- 2012-09-27 CN CN201280074860.9A patent/CN104487937A/zh active Pending
- 2012-09-27 US US14/410,660 patent/US20150293938A1/en not_active Abandoned
- 2012-09-27 WO PCT/US2012/057567 patent/WO2014051592A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6742003B2 (en) * | 2001-04-30 | 2004-05-25 | Microsoft Corporation | Apparatus and accompanying methods for visualizing clusters of data and hierarchical cluster classifications |
US20050065986A1 (en) * | 2003-09-23 | 2005-03-24 | Peter Bixby | Maintenance of a file version set including read-only and read-write snapshot copies of a production file |
US7546431B2 (en) * | 2005-03-21 | 2009-06-09 | Emc Corporation | Distributed open writable snapshot copy facility using file migration policies |
US20080059541A1 (en) * | 2006-08-18 | 2008-03-06 | Fachan Neal T | Systems and methods for a snapshot of data |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
US20100095164A1 (en) * | 2008-10-15 | 2010-04-15 | Hitachi, Ltd. | File management method and hierarchy management file system |
US20120030439A1 (en) * | 2010-07-30 | 2012-02-02 | Ibm Corporation | Data Sharing for File Clones Using Reverse Ditto References |
Also Published As
Publication number | Publication date |
---|---|
US20150293938A1 (en) | 2015-10-15 |
WO2014051592A1 (en) | 2014-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936503B2 (en) | Device access point mobility in a scale out storage system | |
US10019459B1 (en) | Distributed deduplication in a distributed system of hybrid storage and compute nodes | |
US10678654B2 (en) | Systems and methods for data backup using data binning and deduplication | |
US8712963B1 (en) | Method and apparatus for content-aware resizing of data chunks for replication | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
US11048757B2 (en) | Cuckoo tree with duplicate key support | |
US6675180B2 (en) | Data updating apparatus that performs quick restoration processing | |
Meister et al. | Block locality caching for data deduplication | |
CN108021717B (zh) | 一种轻量级嵌入式文件***的实现方法 | |
US10212067B2 (en) | Dynamic symbolic links for referencing in a file system | |
JP2005267600A5 (zh) | ||
US9430503B1 (en) | Coalescing transactional same-block writes for virtual block maps | |
WO2020140622A1 (zh) | 分布式存储***、存储节点设备和数据去重方法 | |
US10078648B1 (en) | Indexing deduplicated data | |
CN108431815B (zh) | 在处理器网格中的分布式数据的去重复数据 | |
US11544150B2 (en) | Method of detecting source change for file level incremental backup | |
CN106708825A (zh) | 一种数据文件处理方法及*** | |
US11650967B2 (en) | Managing a deduplicated data index | |
US11550913B2 (en) | System and method for performing an antivirus scan using file level deduplication | |
CN110352410B (zh) | 跟踪索引节点的访问模式以及预提取索引节点 | |
CN104487937A (zh) | 替换通过强制卸载所删除的虚拟文件***数据结构 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
KR20150045073A (ko) | 데이터 운용 방법 및 이를 지원하는 시스템 | |
US11314430B2 (en) | Reading data in sub-blocks using data state information | |
US8977814B1 (en) | Information lifecycle management for binding content |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160823 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150401 |
|
WD01 | Invention patent application deemed withdrawn after publication |