CN102332016B - 目录机会锁 - Google Patents

目录机会锁 Download PDF

Info

Publication number
CN102332016B
CN102332016B CN2011102752502A CN201110275250A CN102332016B CN 102332016 B CN102332016 B CN 102332016B CN 2011102752502 A CN2011102752502 A CN 2011102752502A CN 201110275250 A CN201110275250 A CN 201110275250A CN 102332016 B CN102332016 B CN 102332016B
Authority
CN
China
Prior art keywords
catalogue
client
request
chance
chance lock
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.)
Active
Application number
CN2011102752502A
Other languages
English (en)
Other versions
CN102332016A (zh
Inventor
C.G.奥尔里德
S.C.哈夫瓦拉
N.R.克里斯蒂安森
D.M.克鲁斯
M.乔治
M.S.加森
D.E.罗文格
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to CN201310315512.2A priority Critical patent/CN103399899B/zh
Publication of CN102332016A publication Critical patent/CN102332016A/zh
Application granted granted Critical
Publication of CN102332016B publication Critical patent/CN102332016B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • G06F16/1774Locking methods, e.g. locking methods for file systems allowing shared and concurrent access to files

Abstract

当前文件系统可实现在文件上的机会锁,其允许客户端本地高速缓存文件数据,同时在多个客户端读/写同一文件时提升数据一致性。不幸的是,当客户端本地高速缓存目录的目录内容时,文件系统可能缺乏向客户端通知将会导致高速缓存的目录内容变“旧”的目录改变的机制。因此,这里公开了用于管理目录机会锁的一种或多种系统和/或技术。可基于包括第一目标关键字和第一父关键字的机会锁请求生成目录机会锁。访问目录及其中的对象的后续访问请求可与该目录机会锁进行比较以确定是否解锁该目录机会锁,并通知客户端(例如,如果提交访问请求的客户端不同于拥有目录机会锁的客户端,则目录机会锁被解锁)。

Description

目录机会锁
背景技术
机会锁(“oplock”)由文件系统使用来向诸如本地和/或远程应用的客户端提供高速缓存文件数据的能力,同时提供在多客户端读/写同一文件时提升数据一致性的机制。此外,机会锁向应用提供从访问文件时“回退”(back off)的能力,以便该应用不会干扰其他应用对该文件的访问。在一个例子中,第一应用可针对在文件系统上存储的文本文件协商机会锁。第一应用可在本地高速缓存对应于文本文件的数据,以降低在访问这样的数据时的网络流量和/或访问请求(例如,可在本地对高速缓存的数据执行多次写)。如果第二应用试图访问文件系统上的该文本文件,则文件系统可通过向第一应用发送通知来解锁机会锁,以将文本文件的改变更新回到文件系统。以此方式,文本文件可在第一应用、第二应用和文件系统之间保持一致。不幸的是,目前机会锁可用于文件,但不用于目录(directory)。因此,如果第一应用在本地高速缓存来自文件系统的目录内容,并且第二应用改变该文件系统上的目录,则第一应用本地高速缓存的目录内容可能是旧的(stale),这是因为未向第一应用通知第二应用对于目录的改变。
发明内容
提供了本发明内容以按照简化形式介绍下面将在具体实施方式中进一步描述的一组概念。本发明内容不意图标识所要求保护主题的关键因素或必要特征,也不意图用来限制所要求保护主题的范围。
这里公开了用于管理目录机会锁的一个或多个系统和/或技术等。目录机会锁可被解释为目录上的机会锁(例如,文件夹、映射的盘驱动器、位于远程服务器上的目录等)。可从客户端(例如,文件管理应用、“另存为”对话框、搜索索引器服务、病毒扫描器和/或其他客户端)接收对在目录上的目录机会锁的机会锁请求。可理解,在一个例子中,客户端可被解释为包括与目录相关地在本地(例如,在同一设备上,如膝上型计算机、桌上型计算机等)或远程(例如,在不同/分开的设备上,如服务器等)执行的一个或多个应用(例如,目录驻留的设备)。机会锁请求可包括第一目标关键字和第一父关键字。第一目标关键字可指定对应于目录和请求目录机会锁的客户端的唯一标识符。第一父关键字可指定对应于包括该目录的父目录和请求该目录机会锁的客户端的唯一标识符。可基于机会锁请求生成目录机会锁关键字。
请求和被授予目录机会锁的客户端可在本地高速缓存目录的目录内容(例如,目录元数据、该目录中的文件和子目录列表等)。可理解,例如,因为客户端可在本地高速缓存的目录内容上执行I/O操作而无需直接通过网络访问目录,所以可降低网络流量。类似地,通过允许客户端(如本地应用)高速缓存其自己的目录副本,可减少访问请求的数目。以此方式,客户端可假设本地高速缓存的目录内容是最新的。另外,客户端可被通知有关访问该目录和/或目录内的对象的尝试,这种尝试可能使得本地高速缓存的目录内容变“旧”(例如,高速缓存的目录内容可包括目录内的5个文件的列表,然而,另一客户端可能向该目录再增加3个文件,这不会体现在高速缓存的目录内容中)。
具体地,可接收访问目录内的对象的访问请求(例如,第二客户端可能正试图修改目录内的文件对象;对应于目录机会锁的客户端可能正试图删除目录内的文件对象等)。可理解,访问请求可包括在目录上执行操作的请求(例如,重命名或删除目录)。访问请求可包括第二目标关键字和第二父关键字。第二目标关键字可指定对应于目录内的对象和提出访问请求的客户端的唯一标识符。第二父关键字可指定对应于目录(例如,该目录是目标对象的父目录)和提出访问请求的客户端的唯一标识符。
对应于目录的第二父关键字可与对应于目录的第一目标关键字进行比较,以确定第二父关键字和第一目标关键字是否匹配。即,因为各自的关键字基于同一客户端,所以如果拥有目录机会锁的客户端与试图访问目录内的对象的客户端是同一客户端,则第二父关键字可与第一目标关键字相匹配。否则,因为各自的关键字基于不同客户端,所以如果尝试访问目录内的对象的客户端不同于拥有目录机会锁的客户端,则第二父关键字与第一目标关键字可能不匹配。
如果第二父关键字匹配第一目标关键字,则因为拥有目录机会锁的客户端与试图访问目录内的对象的客户端是同一客户端,所以目录机会锁不解锁。这样的客户端可知晓要利用其自己的改变来更新其本地高速缓存的目录内容。相反,如果第二父关键字不匹配第一目标关键字,则因为拥有目录机会锁的客户端不同于试图访问目录内的对象的客户端,所以目录机会锁被解锁。当访问目录内的对象的客户端作出影响目录数据的改变时,拥有目录机会锁的客户端可能已经在本地高速缓存了变“旧”的目录内容。因此,拥有目录机会锁的客户端将被通知解锁,从而客户端可采取适当行动以提升其自身、其他客户端和原始目录数据之间的数据一致性。
为了实现上文和相关目的,以下说明和附图阐述了特定示例方面和实现方式。这些仅仅指示了其中可采用一个或多个方面的各种方式中的一些。,根据以下结合附图考虑的详细说明,本公开的其他方面、优点和新颖特征将变得清楚。
附图说明
图1是当第二客户端删除实际目录内的文件时第一客户端本地高速缓存的目录内容变旧的例子的说明。
图2是说明管理目录机会锁的示例方法的流程图。
图3是说明生成目录机会锁的示例方法的流程图。
图4是说明管理目录机会锁的示例系统的部件框图。
图5是在其上请求目录机会锁的目录例子的说明,。
图6是目录例子的说明,其中不同于拥有该目录上的目录机会锁的第一客户端的第二客户端在该目录上请求访问。 
图7是目录例子的说明,其中拥有该目录上的目录机会锁的第一客户端在该目录上请求访问。
图8是示例计算机可读介质的说明,其中可包括被配置为实施这里阐述的一个或多个规定(provision)的处理器可执行指令。
图9 说明了示例计算环境,其中可实现这里阐述的一个或多个规定。
具体实施方式
现在参照附图描述所要求保护的主题,附图中始终使用相同的附图标记表示相同的元素。在以下描述中,为了解释的目的,阐述了多个具体细节以便提供对所要求保护的主题的透彻理解。然而,很明显的是可以实践所要求保护的主题而不用这些具体细节。在其他实例中,以框图的形式说明了结构和设备以便有助于描述所要求保护的主题。
由于网络计算和多任务的出现,常常在多个客户端(如计算环境内的应用或网络环境内的计算机)之间共享目录和文件。在一个例子中,文件服务器系统可向网络设备提供对共享目录和文件的访问。在另一例子中,本地客户端应用可试图访问本地目录以便高速缓存本地目录的内容。然而,当多客户端(无论网络上或单个计算环境内)访问相同的数据时,出现了网络带宽、资源利用(例如,CPU使用、系统总线、存储设备等)和/或数据一致性问题。因此,可实现机会锁(“oplock”)以允许客户端本地高速缓存文件数据。即,客户端可请求在文件数据上的机会锁,从而客户端可假设只要机会锁没有被试图访问和/或改动实际文件数据的另一客户端尝试解锁,该文件数据就不会改变。客户端可对本地高速缓存的文件数据进行读/写,而不会产生访问例如被通过网络存储的实际文件数据的网络流量。当完成时,客户端可通过单次更新,利用本地高速缓存的文件数据来更新实际文件数据。如果第二客户端试图访问文件数据,则可解锁机会锁,并且第二客户端等待,同时拥有机会锁的客户端被通知该解锁。以此方式,客户端可利用本地高速缓存的文件数据来更新实际文件数据,并提供对解锁的确认,从而第二客户端可访问更新了的文件数据,而意识不到与第一客户端之间的交互。
不幸的是,目前机会锁可用于文件数据,但不能用于目录数据。缺少用于目录数据的机会锁,可导致不必要的访问请求,使得高速缓存的目录数据变“旧”,和/或无法删除目录,因为客户端(例如,搜索索引器,病毒扫描器等)可能无法意识到另一客户端正试图删除目录和/或其内容。在一个例子中,本地高速缓存了目录的目录内容的客户端在试图使得本地高速缓存的目录内容保持相对于来自其他客户端的对于实际目录的潜在改变是最新方面可能必须实现刷新机制。因为实际目录尚未被改变,所以刷新机制可能执行不必要的刷新。此外,因为另一客户端改变了实际目录且本地高速缓存的目录内容尚未刷新,所以存在本地高速缓存的目录内容变“旧”的一段时间。
因此,这里提供了一个或多个管理目录机会锁的系统和/或技术。具体地,可基于包括第一目标关键字和第一父关键字的机会锁的请求,为第一客户端创建目录的目录机会锁。第一客户端可在本地高速缓存目录的目录内容以降低网络流量。为提升数据一致性和减轻高速缓存的目录内容变“旧”,当第二客户端试图访问目录时,可向第一客户端提供通知(例如,不依赖于计时器的立即通知)。以此方式,第一客户端可回冲(flush back)对于目录的改变,使得第二客户端可访问目录的最新版本。此外,因为如果第二客户端对实际目录和/或在实际目录内的对象进行改变,则高速缓存内容可能是“旧”的,所以可通知第一客户端根据实际目录来刷新本地高速缓存的目录内容。如果第二客户端与第一客户端并非同一客户端,则可解锁目录机会锁。然而,如果第二和第一客户端是同一客户端,则因为客户端可意识到自己对于目录的改变,所以可以不解锁目录机会锁。
图1说明当第二客户端删除实际目录内的文件时,第一客户端本地高速缓存的目录内容变“旧”的例子100。服务器102可包括被配置为向客户端提供对目录和/或文件的访问的文件系统。例如,服务器102 可包括娱乐(文件夹)目录。娱乐(文件夹)目录可包括音乐(文件夹)目录、图像(文件夹)目录、音乐播放列表(文件)、音乐播放器(文件)、图像编辑器(文件)和图像浏览器(文件)。客户端(1)104(例如,文件管理应用)可访问服务器102上的娱乐(文件夹)目录以向用户提供娱乐(文件夹)目录的视图。为减轻网络流量,客户端(1)104可本地存储对应于娱乐(文件夹)目录的高速缓存的目录内容。客户端(1)104可周期性地或根据需要轮询服务器102以刷新高速缓存的目录内容,从而向用户提供文件结构的当前视图。因为服务器102上的目录内容可能尚未改变,刷新高速缓存的目录内容可能产生不必要的网络流量。
在另一客户端对娱乐(文件夹)目录进行改变的时间和对高速缓存的目录内容(例如,娱乐(文件夹)目录的过期视图)进行刷新的时间之间,本地存储在客户端(1)104上的高速缓存的目录内容可能变“旧”。例如,客户端(2)可能删除106服务器102上的音乐播放列表(文件)。然而,因为在娱乐(文件夹)目录上没有目录机会锁,所以在执行刷新之前,可能未向客户端(1)104通知可影响本地存储在客户端(1)104上的高速缓存的目录内容的“正确性”的删除106。即,如果已经向客户端(1)104提供了娱乐(文件夹)目录上的目录机会锁,则可向客户端(1)104提供客户端(2)所请求的、对应于删除106的访问的通知(例如,立即通知)。
由图2的示例方法200来说明管理目录机会锁的一个实施例。在202,方法开始。在204,例如从第一客户端接收对目录上的目录机会锁的机会锁请求。机会锁请求可包括第一目标关键字和/或第一父关键字。第一目标关键字可指定对应于第一客户端和该目录的唯一标识符。第一父关键字可指定对应于第一客户端和包括该目录的父目录的唯一标识符。
在206,可基于机会锁请求生成目录机会锁。在一个例子中,可生成读高速缓存目录机会锁,以便第一客户端可本地高速缓存从目录中读取的目录内容。在另一个例子中,可生成读-句柄(handle)高速缓存目录机会锁,以便第一客户端可本地高速缓存从目录读取的目录内容并打开目录上的句柄。在另一个例子中,可生成读-写-句柄高速缓存目录机会锁,以便第一客户端可本地高速缓存目录中文件的创建、删除和/或修改(例如,属性修改,如只读,文件大小等)。以此方式,可为第一客户端管理目录机会锁。具体地,因为不同于第一客户端的第二客户端正试图访问/修改目录和/或目录内的对象,这可能改变目录的当前状态(例如,第二客户端可向目录增加文件对象,以使得目录的当前状态可能包括更大的总体大小和所增加的文件对象),或第一客户端已对目录进行了必须在第二客户端意识到之前回冲的改变,则可向第一客户端通知目录机会锁的解锁。解锁的通知可使得第一客户端得知本地高速缓存的目录内容可能是旧的或者由第一客户端作出的改变需要从其本地高速缓存回冲至文件系统。
在208,可接收访问目录内的对象的访问请求。例如,第二客户端(可能是与第一客户端相同或不同的客户端)可请求访问以对目录内的文件和/或子目录执行I/O操作(例如,修改,增加,删除等)。可理解,访问请求可包括在目录上执行操作(例如,重命名或删除目录)的请求。访问请求可包括第二目标关键字和/或第二父关键字。第二目标关键字可指定对应于第二客户端和目录内的对象的唯一标识符。第二父关键字可指定对应于第二客户端和目录(例如,因为该目录包括对象,所以该目录是对象的父目录)的唯一标识符。可理解,如果第一客户端和第二客户端是同一客户端,则第二父关键字可与第一目标关键字有相同的标识符(例如,第二父关键字指定客户端和目录,并且第一目标关键字指定该客户端和目录)。
在210,如果第二父关键字不匹配第一目标关键字,则目录机会锁被解锁。例如,在拥有目录机会锁的第一客户端不同于试图访问目录内的对象的第二客户端的情况下,第二父关键字可能不匹配第一目标关键字。可向第一客户端通知该目录机会锁解锁,使得第一客户端可得知本地高速缓存的目录内容可能已经变“旧”。如果访问请求对应于第二客户端在目录上执行操作(例如,删除目录,设置配置操作,重命名目录等)的请求,则向发出访问请求的第二客户端发送通知以等待直到由第一客户端确认解锁为止。
在212,如果第二父关键字匹配第一目标关键字,则目录机会锁不解锁。也就是说,因为拥有目录机会锁的第一客户端是发出访问请求的第二客户端,所以第二父关键字匹配第一目标关键字。以此方式,当拥有目录机会锁的客户端是访问目录内的对象的客户端时,目录机会锁不被解锁。客户端应当知道其对目录作出的改变,并因此应当能够更新本地高速缓存的目录内容,而无需目录机会锁的解锁通知。
在一个例子中,搜索索引器可发出机会锁请求。可生成目录的目录机会锁并将其分配给搜索索引器。第二客户端(如文件管理应用)可发出删除该目录的访问请求。如果没有通知所尝试的删除,搜索索引器可继续访问该目录,这可能导致目录删除失败。例如,用户可能试图删除搜索索引器目前正在索引的目录。然而,如果在搜索索引器打开目录的情况下发起删除,则删除可能失败。因此,用户可继续看到目录和/或可能无法重用目录名(例如,因为目录尚未被删除)。相应地,如果第二父关键字不匹配第一目标关键字,则搜索索引器创建的目录机会锁可被解锁。以此方式,可通知搜索索引器退出目录,使得用户可以删除目录。在214,方法结束。
通过图3中的示例方法300说明生成目录机会锁的一个实施例。在302,方法开始。在304,生成对应于目录和客户端的目录机会锁。也就是说,目录机会锁是在目录(例如,文件夹)上(与文件相反)的机会锁。在306,方法结束。
图4说明被配置为管理目录机会锁的系统400的例子。系统400可包括机会锁生成器406和/或机会锁管理器408。机会锁生成器406可被配置为接收对目录上的目录机会锁412的机会锁请求410。例如,可从第一客户端402接收机会锁请求410。机会锁请求410可包括第一目标关键字和/或第一父关键字。第一目标关键字可指定对应于第一客户端402和该目录的唯一标识符。第一父关键字可指定对应于第一客户端402和包括该目录的父目录的唯一标识符。
机会锁生成器406可基于机会锁请求410生成目录机会锁412。在一个例子中,目录机会锁412可包括读-高速缓存机会锁。在另一个例子中,目录机会锁412可包括读-句柄-高速缓存机会锁。机会锁生成器406可向第一客户端402发送目录机会锁授予通知414。以此方式,第二客户端402可本地存储高速缓存的目录内容416内的目录内容。第一客户端402可在高速缓存的目录内容416上有效地执行I/O操作,而无需产生访问实际目录的不必要网络流量。
机会锁管理器408可被配置为接收访问目录内的对象的访问请求418。例如,可从请求访问目录、目录内的文件和/或目录内的子目录的第二客户端404接收访问请求418。访问请求418可包括第二目标关键字和/或第二父关键字。第二目标关键字可指定对应于第二客户端404和目录内的对象的唯一标识符。第二父关键字可指定对应于第二客户端404和目录的唯一标识符。可理解,第一客户端402和第二客户端404可为同一或不同客户端,这可影响是否由访问请求418来解锁目录机会锁412。
机会锁管理器408可被配置为执行匹配操作420以确定第一目标关键字是否匹配第二父关键字。因为匹配表明第一客户端402和第二客户端404是同一客户端,所以如果第二父关键字匹配第一目标关键字,则机会锁管理器408可被配置为不解锁目录机会锁412,因此不必通知客户端它自己对目录的访问。
如果第二父关键字不匹配第一目标关键字,则机会锁管理器408可被配置为解锁目录机会锁412。机会锁管理器408可向第一客户端402发送目录机会锁解锁通知422。目录机会锁解锁通知422可通知第一客户端402高速缓存的目录内容416可能是“旧”的。如果访问请求对应于对目录的操作,则机会锁管理器408可向第二客户端404发送通知,以在访问目录前等待直到由第一客户端402确认解锁为止。
在一个例子中,机会锁管理器408可被配置为接收包括在目录上执行目录删除的I/O请求的目录删除访问请求(例如,访问请求418)。机会锁管理器408可通知与目录机会锁412相关联的第一客户端402 退出目录,以便发出目录删除访问请求的第二客户端404可删除该目录。
在一个例子中,机会锁生成器406可被配置为响应于访问目录的目录访问请求而生成原子机会锁。机会锁生成器406可生成横跨在目录访问请求和对目录上的目录机会锁的机会锁请求之间的时段的原子机会锁。例如,第一客户端402可在执行机会锁请求前执行初始的目录访问请求。在初始的目录访问请求和目录机会锁生成之间有一时间段,其中因为目录机会锁尚未产生但目录已被打开,所以第一客户端是“未被保护”的。原子机会锁可减轻此时间段内的共享违犯。
图5说明在其上请求目录机会锁的目录例子500。文件结构502可包括目录(例如,文件夹)和/或文件。例如,文件结构502可由远程文件服务器维护。在一个例子中,文件结构502或其一部分可包括应用(文件夹)504目录。应用(文件夹)504目录可为游戏(文件夹)目录、效能(文件夹)目录、娱乐(文件夹)506目录、安装(文件)和/或应用(文件夹)504目录内包括的其他对象的父目录。娱乐(文件夹)506目录可为音乐(文件夹)目录、图像(文件夹)目录、音乐播放列表(文件)、音乐播放器(文件)、图像浏览器(文件)、图像编辑器和/或娱乐(文件夹)506目录内包括的其他对象的父目录。
远程文件服务器可被配置为允许本地和/或远程客户端访问文件结构502内的目录和文件。存在有用于目录和/或文件的机会锁。在一个例子中,可从第一客户端接收对娱乐(文件夹)506目录上的目录机会锁的机会锁请求。具体地,第一客户端可能正在请求娱乐(文件夹)506目录的目录机会锁,以便第一客户端可本地高速缓存对应于娱乐(文件夹)506目录的目录内容。机会锁请求可包括第一目标关键字和第一父关键字。第一目标关键字可指定对应于第一客户端和娱乐(文件)506目录的唯一标识符。第一父关键字可指定对应于第一客户端和应用(文件夹)504(例如,目标娱乐(文件夹)506目录的父目录)的唯一标识符。以此方式,可为第一客户端生成目录机会锁。第一客户端可本地高速缓存目录内容。例如,第一客户端可高速缓存与娱乐(文件夹)506目录相关联的元数据和/或在娱乐(文件夹)506目录内的文件/子文件夹的列表,如音乐(文件夹)、图像(文件夹)、音乐播放列表(文件)、音乐播放器(文件)、图像浏览器(文件)、图像编辑器(文件)和/或其他对象。
图6说明了目录的例子600,其中不同于拥有该目录上的目录机会锁的第一客户端的第二客户端请求访问该目录。文件结构602可包括目录(例如,文件夹)和/或文件。例如,文件结构602或其一部分可包括娱乐(文件夹)604目录。娱乐(文件夹)604目录可为音乐(文件夹)目录、图像(文件夹)目录、音乐播放列表(文件)606、音乐播放器(文件)、图像浏览器(文件)、图像编辑器(文件)和/或娱乐(文件夹)604目录内包括的其他对象的父目录。
可理解,第一客户端可拥有娱乐(文件家)604目录上的目录机会锁(例如,图5)。在一个例子中,不同于拥有该目录机会锁的第一客户端的第二客户端可请求访问音乐播放列表(文件)606。第二客户端可发送包括第二目标关键字和第二父关键字的访问请求。第二目标关键字可指定对应于第二客户端和音乐播放列表(文件)606的唯一标识符。第二父关键字可指定对应于第二客户端和娱乐(文件夹)604目录(例如,目标音乐播放列表(文件)606的父目录)的唯一标识符。因为各自的关键字基于不同的客户端(例如,第一目标关键字基于第一客户端,而第二父关键字基于不同于第一客户端的第二客户端),所以第二父关键字不匹配第一目标关键字,因此目录机会锁可被解锁。可向第一客户端发送目录机会锁解锁的通知,以防止第一客户端维持娱乐(文件夹)604目录的“旧”的高速缓存。例如,第二客户端可修改或删除音乐播放列表(文件)606,这不会体现在第一客户端“旧”的高速缓存中。
图7说明了目录的例子700,其中拥有该目录上的目录机会锁的第一客户端请求访问该目录。文件结构702可包括目录(例如,文件夹)和/或文件。例如,文件结构702或其一部分可包括娱乐(文件夹)704目录。娱乐(文件夹)704目录可为音乐(文件夹)目录、图像(文件夹)目录、音乐播放列表(文件)706、音乐播放器(文件)、图像浏览器(文件)、图像编辑器(文件)和/或娱乐(文件夹)704目录内包括的其他对象的父目录。
可理解,第一客户端可拥有娱乐(文件夹)704目录上的目录机会锁(例如,图5)。在一个例子中,第二客户端可请求访问音乐播放列表(文件)706。可理解,第一客户端和第二客户端在例子700中是同一客户端,且出于简化目的被称为客户端。也就是说,拥有目录机会锁的第一客户端和请求访问音乐播放列表(文件)706的第二客户端是同一客户端。
可有利的是,检测拥有目录机会锁的同一客户端是请求访问的同一客户端,以便目录机会锁不会由于这样的访问而被解锁。客户端可发送包括第二目标关键字和第二父关键字的访问请求。第二目标关键字可指定对应于客户端和音乐播放列表(文件)706的唯一标识符。第二父关键字可指定对应于客户端和娱乐(文件夹)704目录(例如,目标音乐播放列表(文件)706的父目录)的唯一标识符。因为第二父关键字和第一目标关键字这两个关键字都基于同一客户端和同一娱乐(文件夹)704目录,所以第二父关键字匹配第一目标关键字,且目录机会锁可不被解锁。以此方式,因为无需向客户端提供其自身在访问娱乐(文件夹)704目录的通知,所以目录机会锁不被解锁。因为客户端应当知道其对目录的访问且应当能够对于任何对应的高速缓存的目录内容采取适当行动,所以此通知是不必要的。
另一实施例涉及包括被配置为实现这里给出的一种或多种技术的处理器可执行指令的计算机可读介质。图8中说明了可按这些方式设计的示例计算机可读介质,其中实现800包括计算机可读介质816(例如,CD-R、DVD-R或硬盘驱动器的盘片),其上编码了计算机可读数据814。计算机可读数据814又包括被配置为根据这里阐述的一项或多项原则进行操作的计算机指令集812。例如,在一个这样的实施例800中,处理器可执行的计算机指令812可被配置为执行方法810,如图2的示例方法200或图3的示例方法300。例如,在另一个这样的实施例中,处理器可执行指令812可被配置为实现诸如图4的示例系统400之类的系统。本领域普通技术人员可设计出被配置为根据这里给出的技术进行操作的许多这样的计算机可读介质。
虽然利用了特定于结构特征和/或方法动作的语言描述了主题,但应理解,所附权利要求中限定的主题不必限于上述特定特征或动作。相反,公开了上述具体特征和动作来作为实现权利要求的示例形式。
如本申请中所使用的,术语“部件”、“模块”、“系统”、“界面”等通常意图表示计算机相关的实体,如硬件、硬件和软件的组合、软件或者执行中的软件。例如,部件可以是但不限于处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过示例的方式,控制器上运行的应用和控制器均可以是部件。一个或多个部件可驻留在执行的进程和/或线程中,并且部件可位于一个计算机上和/或分布在两个或更多个计算机之间。
另外,可使用标准编程和/或工程技术来将所要求保护的主题实现为方法、装置,或制品,来生产软件、固件、硬件或它们的任何组合以控制计算机实现所公开的主题。这里所使用的术语“制品”意图包括可从任何计算机可读设备、载体或介质存取的计算机程序。当然,本领域技术人员将意识到可对该配置进行许多修改而不脱离所要求保护主题的范围或精神。
图9和以下讨论提供了实现这里阐述的一个或多个规定的实施例的适合计算环境的简要概述。图9的操作环境仅是适合的操作环境的一个例子,而不意图暗示对于操作环境的使用或功能范围的任何限制。示例计算设备包括但不限于个人计算机、服务器计算机、手持或膝上型设备、移动设备(诸如移动电话、个人数字助理(PDA),媒体播放器等),多处理器系统、消费者电子产品、迷你计算机、大型计算机,包括任何上述系统或设备的分布式计算环境等。
尽管未要求,以由一个或多个计算设备执行的“计算机可读指令”的一般语境描述了实施例。计算机可读指令可经由计算机可读介质(以下讨论)分发。计算机可读指令可被实现为程序模块,诸如函数、对象、应用程序接口(API)、数据结构等,其执行特定任务或实现特定的抽象数据类型。典型地,计算机可读指令的功能性可根据需要在各种环境中组合或分布。
图9说明了系统910的例子,其包括被配置为实现这里提供的一个或多个实施例的计算设备912。在一个配置中,计算设备912包括至少一个处理单元916和存储器918。根据计算设备的具体配置和类型,存储器918可为易失性(例如,如RAM),非易失性(例如,如ROM、闪速存储器等)或两者的一些组合。图9中用虚线914说明此配置。
在另一个实施例中,设备912可包括附加特征和/或功能。例如,设备912也可包括附加存储设备(例如,可移除和/或不可移除),该存储设备包括但不限于磁存储设备、光学存储设备等。在图9中由存储设备920说明了这样的附加存储设备。在一个实施例中,用来实现这里提供的一个或多个实施例的计算机可读指令可在存储设备920中。存储设备920也可存储用来实现操作系统、应用程序等的其他计算机可读指令。例如,计算机可读指令可被加载到存储器918中以由处理单元916执行。
这里使用的术语“计算机可读介质”包括计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除介质。存储器918和存储设备920是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储技术、CD-ROM、数字多用盘(DVD)和其他光学存储设备、磁卡带、磁带、磁盘存储设备或其他磁存储设备,或可用作存储需要的信息并且可通过设备912访问的任何其他介质。任何这样的计算机存储介质可以是设备912的一部分。
设备912还可包括允许设备912与其他设备进行通信的通信连接(多个)926。通信连接(多个)926可包括但不限于调制解调器、网络接口卡(NIC)、集成网络接口、射频发射机/接收机、红外端口、USB连接或用于将计算设备912连接至其他计算设备的其他接口。通信连接(多个)926可包括有线连接或无线连接。通信连接(多个)926可发射和/或接收通信介质。
术语“计算机可读介质”可包括通信介质。典型地,通信介质包括“调制数据信号”(诸如载波或其他传输机制)中的计算机可读指令或其他数据,并包括任何信息递送介质。术语“调制数据信号”可包括以在该信号中编码信息这样的方式设置或改变其一个或多个特性的信号。
设备912可包括诸如键盘、鼠标、笔、语音输入设备、触摸输入设备、红外相机、视频输入设备和/或任何其他输入设备的输入设备(多个)924。设备912也可包括诸如一个或多个显示器、扬声器、打印机和/或任何其他输出设备的输出设备(多个)922。输入设备(多个)924和输出设备(多个)922可经由有线连接、无线连接或其任何组合与设备912连接。在一个实施例中,来自另一计算设备的输入设备或输出设备可被用作计算设备912的输入设备(多个)924或输出设备(多个)922。
计算设备912中的部件可通过诸如总线之类的各种互连进行连接。这些互连可包括外设部件互连(PCI),如PCI高速、通用串行总线(USB)、火线(IEEE 1394)、光学总线结构等。在另一个实施例中,计算设备912的部件可通过网络互连。例如,存储器918可包括位于通过网络互连的不同物理位置上的多个物理存储器单元。
本领域技术人员将意识到,用来存储计算机可读指令的存储设备可在网络上分发。例如,可经由网络928访问的计算设备930可存储计算机可读指令以实现这里提供的一个或多个实施例。计算设备912可访问计算设备930,并下载计算机可读指令的一部分或全部用以执行。可替换地,计算设备912可根据需要下载计算机可读指令的片段,或者一些指令可在计算设备912处执行且一些在计算设备930处执行。
这里提供了实施例的各种操作。在一个实施例中,所述操作中的一个或多个可构成在一个或多个计算机可读介质上存储的计算机可读指令,如果该计算机可读指令由计算设备执行,则将使得计算设备执行所述操作。操作中的一些或全部被描述的次序不应被理解为暗示这些操作必须依赖于该顺序。本领域技术人员在获取了本说明的益处后将意识到其他次序。另外,将理解,并不是所有的操作都必须在这里提供的每个实施例中存在。
此外,词语“示例”在这里用来表示充当例子、实例或说明。这里描述为“示例”的任何方面或设计不必被理解为优于其他方面或设计。相反,词语示例的使用意图给出抽象形式的概念。如在本申请中所使用的,术语“或”意图表示包括性的“或”而非排他性的“或”。也就是说,除非特别指出或从上下文清楚理解,“X采用A或B”意图表示任何自然的包括性枚举。即,如果X采用A;X采用B;或X采用A和B两者,则在任何前述实例下均满足“X采用A或B”。此外,本申请和所附权利要求中所使用的不定冠词“一”或“一个”可通常被理解为“一个或多个”,除非特别指出或从上下文清楚理解为针对单数形式。
而且,尽管已经参照一个或多个实现方式示出和描述了本公开,但是基于对本说明书和附图的阅读和理解,本领域技术人员将得到等同的替代或修改。本公开包括所有这样的修改和替代,且仅仅受限于以下权利要求的范围。尤其对于由上述部件(例如,单元、资源等)执行的各种功能,用来表述这样的部件的术语意图对应于(除非另外指出)执行所述部件的特定功能的任何部件(例如,是功能等同的),即使在结构上不等同于执行这里说明的本公开示例实现方式的功能的所公开的结构。此外,尽管可参考几个实现方式中的仅仅一个公开了本公开的具体特征,但是这样的特征可与其他实现方式的一个或多个其他特征进行组合,这可能是期望的并且对于任何给定的或具体的应用而言是有利的。另外,在具体实施方式或权利要求中使用术语“包括”、“具有”、“有”、“带有”或其变形的情况下,这样的术语意图为类似于术语“包含”的方式的包括性。

Claims (13)

1.一种用于管理目录机会锁的方法(200),包括:
从第一客户端接收(204)对于目录上的目录机会锁的机会锁请求,所述机会锁请求包括第一目标关键字和第一父关键字,所述第一目标关键字指定对应于所述第一客户端和所述目录的唯一标识符,并且所述第一父关键字指定对应于所述第一客户端和包括所述目录的父目录的唯一标识符;
基于所述机会锁请求生成(206)所述目录机会锁;
从第二客户端接收(208)对于访问所述目录内的对象的访问请求,所述访问请求包括第二目标关键字和第二父关键字,所述第二目标关键字指定对应于所述第二客户端和所述目录内的所述对象的唯一标识符,并且所述第二父关键字指定对应于所述第二客户端和所述目录的唯一标识符;
如果所述第二父关键字不匹配所述第一目标关键字,则解锁(210)所述目录机会锁;以及
如果所述第二父关键字匹配所述第一目标关键字,则不解锁(212)所述目录机会锁。
2.如权利要求1所述的方法,包括:
在解锁所述目录机会锁时,向发出所述机会锁请求的第一客户端发送解锁的通知。
3.如权利要求2所述的方法,包括:
向发出所述访问请求的第二客户端发送通知,以等待直到由所述第一客户端确认解锁为止,所述访问请求对应于第二客户端对在所述目录上执行操作的请求。
4.如权利要求1所述的方法,包括:
在确定所述第二父关键字匹配所述第一目标关键字时,确定第一客户端发出了所述机会锁请求,所述第一客户端拥有所述目录机会锁,并且所述第一客户端发出了所述访问请求。
5.如权利要求1所述的方法,所述生成所述目录机会锁包括以下至少之一:
生成读-写-句柄-高速缓存机会锁;
生成读-高速缓存机会锁;以及
生成读-句柄-高速缓存机会锁。
6.如权利要求1所述的方法,所述对于访问所述目录内的对象的访问请求包括用来执行以下至少之一的I/O请求:
修改所述目录内的文件对象;
修改所述目录内的子目录对象;
向所述目录增加文件对象;
在所述目录内增加子目录对象;
删除所述目录内的文件对象;以及
删除所述目录内的子目录对象。
7.如权利要求1所述的方法,包括:
向发出所述机会锁请求的第一客户端分配所述目录机会锁;以及
如果所述第二父关键字不匹配所述第一目标关键字,则通知所述第一客户端退出所述目录,以便让发出所述访问请求的第二客户端执行关于所述目录的操作。
8.一种用于维护目录机会锁的系统(400),包括:
机会锁生成器(406),被配置为: 
从第一客户端接收对于目录上的目录机会锁的机会锁请求,所述机会锁请求包括第一目标关键字和第一父关键字,所述第一目标关键字指定对应于所述第一客户端和所述目录的唯一标识符,并且所述第一父关键字指定对应于所述第一客户端和包括所述目录的父目录的唯一标识符;以及
基于所述机会锁请求生成所述目录机会锁;以及
机会锁管理器(408),被配置为:
从第二客户端接收对于访问所述目录内的对象的访问请求,所述访问请求包括第二目标关键字和第二父关键字,所述第二目标关键字指定对应于所述第二客户端和所述目录内的所述对象的唯一标识符,并且所述第二父关键字指定对应于所述第二客户端和所述目录的唯一标识符;
如果所述第二父关键字不匹配所述第一目标关键字,则解锁所述目录机会锁;以及
如果所述第二父关键字匹配所述第一目标关键字,则不解锁所述目录机会锁。
9.如权利要求8所述的系统,所述机会锁生成器被配置为:
响应于对访问所述目录的目录访问请求,生成原子机会锁。
10.如权利要求9所述的系统,所述原子机会锁横跨所述目录访问请求和对所述目录上的目录机会锁的所述机会锁请求之间的时段。
11.如权利要求8所述的系统,所述机会锁管理器被配置为:
向发出所述机会锁请求的第一客户端发送目录机会锁解锁的通知。
12.如权利要求11所述的系统,所述机会锁管理器被配置为:
向发出所述访问请求的第二客户端发送通知,以等待直到由所述第一客户端确认解锁为止,所述访问请求对应于第二客户端对在所述目录上执行操作的请求。
13.如权利要求8所述的系统,所述机会锁管理器被配置为:
接收包括对所述目录执行操作的I/O请求的目录访问请求;以及
通知与所述目录机会锁相关联的客户端退出所述目录,以便让发出所述目录访问请求的客户端在所述目录上执行所述操作。
CN2011102752502A 2010-09-17 2011-09-16 目录机会锁 Active CN102332016B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310315512.2A CN103399899B (zh) 2010-09-17 2011-09-16 目录机会锁

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/884624 2010-09-17
US12/884,624 US8965862B2 (en) 2010-09-17 2010-09-17 Directory oplock
US12/884,624 2010-09-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201310315512.2A Division CN103399899B (zh) 2010-09-17 2011-09-16 目录机会锁

Publications (2)

Publication Number Publication Date
CN102332016A CN102332016A (zh) 2012-01-25
CN102332016B true CN102332016B (zh) 2013-08-28

Family

ID=45483792

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201310315512.2A Active CN103399899B (zh) 2010-09-17 2011-09-16 目录机会锁
CN2011102752502A Active CN102332016B (zh) 2010-09-17 2011-09-16 目录机会锁

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201310315512.2A Active CN103399899B (zh) 2010-09-17 2011-09-16 目录机会锁

Country Status (3)

Country Link
US (1) US8965862B2 (zh)
CN (2) CN103399899B (zh)
HK (1) HK1165052A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10684989B2 (en) * 2011-06-15 2020-06-16 Microsoft Technology Licensing, Llc Two-phase eviction process for file handle caches
JP5751974B2 (ja) * 2011-07-28 2015-07-22 キヤノン株式会社 統合管理装置、文書管理方法およびコンピュータプログラム
US8914345B1 (en) * 2012-02-22 2014-12-16 Symantec Corporation Systems and methods for host communication in a clustered file system
US9036796B2 (en) 2012-09-14 2015-05-19 International Business Machines Corporation Generating action tuples in response to discerned leads
CN103095687B (zh) * 2012-12-19 2015-08-26 华为技术有限公司 元数据处理方法及装置
CN103179185B (zh) * 2012-12-25 2015-07-08 中国科学院计算技术研究所 一种分布式文件系统客户端缓存中文件创建方法及其系统
CN103701816B (zh) * 2013-12-27 2017-07-11 北京奇安信科技有限公司 执行拒绝服务攻击的服务器的扫描方法和扫描装置
US9674283B2 (en) * 2014-01-15 2017-06-06 Cisco Technology, Inc. Method for solving coherency lock issues in proxy services
CN104021137B (zh) * 2014-04-21 2017-06-09 中国科学院计算技术研究所 一种基于目录授权的客户端本地开闭文件的方法及系统
US10536523B2 (en) * 2014-05-11 2020-01-14 Microsoft Technology Licensing, Llc File service using a shared file access-rest interface
US10169367B2 (en) * 2014-06-06 2019-01-01 Panzura, Inc. Managing opportunistic locks in a distributed file system
CN110347650B (zh) * 2019-07-16 2021-06-01 北京明略软件系统有限公司 一种元数据采集方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1276568A (zh) * 1999-06-04 2000-12-13 网络装置公司 多协议统一文件锁定

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5946690A (en) 1996-12-17 1999-08-31 Inca Technology, Inc. NDC consistency reconnect mechanism
JPH1196062A (ja) * 1997-09-19 1999-04-09 Hitachi Ltd ディレクトリ・アクセス方法
US6516351B2 (en) 1997-12-05 2003-02-04 Network Appliance, Inc. Enforcing uniform file-locking for diverse file-locking protocols
US6385701B1 (en) 1999-11-19 2002-05-07 International Business Machines Corporation Method, system and program products for sharing data between varied clients using token management
US7788335B2 (en) 2001-01-11 2010-08-31 F5 Networks, Inc. Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system
US8156164B2 (en) * 2007-07-11 2012-04-10 International Business Machines Corporation Concurrent directory update in a cluster file system
US8121061B2 (en) 2008-06-26 2012-02-21 Microsoft Corporation Efficient file management through granular opportunistic locking
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
US8452743B2 (en) * 2009-09-18 2013-05-28 Oracle International Corporation Method and system for efficient enforcement of derived locks in a hierarchical structure

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1276568A (zh) * 1999-06-04 2000-12-13 网络装置公司 多协议统一文件锁定

Also Published As

Publication number Publication date
HK1165052A1 (en) 2012-09-28
CN102332016A (zh) 2012-01-25
CN103399899A (zh) 2013-11-20
US20120072400A1 (en) 2012-03-22
US8965862B2 (en) 2015-02-24
CN103399899B (zh) 2017-04-12

Similar Documents

Publication Publication Date Title
CN102332016B (zh) 目录机会锁
EP3408744B1 (en) Providing access to a hybrid application offline
US11516288B2 (en) Synchronized content library
CN102349062B (zh) 浏览器缓存与远程仓库同步的方法和系统
US10484456B2 (en) Sharing a content item
US8250102B2 (en) Remote storage and management of binary object data
JP5559140B2 (ja) 計算環境の表現
JP5624479B2 (ja) 同期サーバープロセス
US8935560B2 (en) System and method of file locking in a network file system federated namespace
TWI482035B (zh) 運算環境表示
JP2005535947A (ja) 異なるタイプのバックエンド・データ・ストアにアクセスするためのシステムおよび方法
US20100235829A1 (en) Programming model for installing and distributing occasionally connected applications
TW200941347A (en) Application management within deployable object hierarchy
CN101167069A (zh) 文件对等同步的系统和方法
US20140304384A1 (en) Uploading large content items
US20150227605A1 (en) Information processing terminal, synchronization control method, and computer-readable recording medium
US20170193070A1 (en) System and method for a distributed replication lock for active-active geo-redundant systems
US20170048271A1 (en) Random identifier generation for offline database
CN102077183A (zh) 可移动存储设备上的外部文件系统元数据的维护
US20110208761A1 (en) Coordinating content from multiple data sources
US10031668B2 (en) Determining status of a host operation without accessing the host in a shared storage environment
US11226983B2 (en) Sub-scope synchronization
US10015248B1 (en) Syncronizing changes to stored data among multiple client devices
US20180007130A1 (en) Peer-to-Peer Assisted Personal Synchronization
CN111241042B (zh) 一种基于Etcd的分布锁实现方法、系统及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1165052

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1165052

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150422

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150422

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.