亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種事件通知方法、監(jiān)聽器的處理方法及裝置的制造方法_4

文檔序號:8319249閱讀:來源:國知局
信息,并根據(jù)所述監(jiān)聽器信息更新所述無效的vnode信息為有效的vnode。當所述各級目錄中的目錄不存在vnode時,所述CA向元數(shù)據(jù)服務器MDS獲取所述不存在vnode的目錄的監(jiān)聽器信息,并根據(jù)所述監(jiān)聽器信息創(chuàng)建所述目錄的vnode并設置為有效的vnode。
[0137]具體來說,假設全路徑上的各級目錄為/Dirl/Dir2/Dir4/Dir6/。CA查看各級目錄是否存在vnode。假設目錄Dirl、Dir2和Dir4存在vnode,那么就再確定目錄Dirl、Dir2和Dir4存在vnode是否有效。因為可能為了釋放內(nèi)存空間,當定時超過一定時間,目錄的vnode就會被設置為無效?;蛘呤且驗槔缜笆鏊枋龅?,接收到了鎖服務器的廣播消息,所以將該目錄的vnode信息設置為無效。因此,在這種情況下,該方法還包括:CA接收鎖服務器發(fā)送的廣播消息,所述廣播消息用于通知所述CA所述無效的vnode所對應的目錄的元數(shù)據(jù)將要發(fā)生變化;所述CA將所述目錄的vnode的標記信息設置為表示所述目錄的vnode無效的信息。
[0138]舉例來說,假設所述CA在查看各級目錄是否存在vnode之前,接收到了鎖服務器發(fā)送的廣播消息,得知有CA新注冊了目錄Dir2和Dir4的監(jiān)聽器,所以所述CA內(nèi)存中的目錄Dir2和Dir4的vnode已經(jīng)不是最新的了,所以就設置目錄Dir2和Dir4的vnode為無效的。因此,根據(jù)目錄Dir2和Dir4的vnode的標記信息確定目錄Dir2和Dir4的vnode是無效的,那么就通過Getattr接口向目錄Dir2和Dir4的主MDS獲取目錄Dir2和Dir4的監(jiān)聽器信息,主MDS查詢之后,返回目錄Dir2的標識和監(jiān)聽掩碼,Dir4未注冊監(jiān)聽器。然后所述CA得知目錄Dir2被注冊了監(jiān)聽器,而Dir4未被注冊監(jiān)聽器,所以就更新目錄Dir2和Dir4的vnode中的監(jiān)聽器計數(shù)值,并設置目錄Dir2和Dir4的vnode為有效的。
[0139]假設所述CA查詢到了目錄Dirl的vnode之后,并且發(fā)現(xiàn)標記信息標識該vnode有效,那么就可以確定目錄Dirl的vnode是有效的。
[0140]另外,因為CA可能從沒操作過包括某個目錄的路徑,所以內(nèi)存中就沒有該某個目錄的vnode。在本實施例中,假設所述CA查詢到目錄Dir6的vnode不存在,那么所述CA就可以通過lookup接口向目錄Dir6的主MDS獲取目錄Dir6的監(jiān)聽器信息,例如:主MDS返回的未查找到監(jiān)聽器。那么所述CA就根據(jù)監(jiān)聽器信息創(chuàng)建目錄Dir6的vnode,在該vnode中,監(jiān)聽器計數(shù)值為零。并設置該vnode為有效的vnode。
[0141]接下來執(zhí)行步驟302,即確定所述各級目錄的vnode中監(jiān)聽器計數(shù)不為零的vnode所對應的第一目錄。其中,第一目錄可能包括多個目錄,例如:目錄Dirl和Dir2的vnode中的監(jiān)聽器計數(shù)不為零,而目錄Dir4和目錄Dir6的監(jiān)聽器計數(shù)為零。因此,在本實施例中,第一目錄包括目錄Dirl和目錄Dir2。
[0142]接下來執(zhí)行步驟303,即根據(jù)第一目錄的標識確定出第一目錄的監(jiān)聽器所注冊的NS。該步驟中的確定方法與前述注冊流程中的步驟103相同,在此不再贅述。假設確定出目錄Dirl的監(jiān)聽器所注冊的NS為NS1,目錄Dir2的監(jiān)聽器所注冊的NS為NS2。
[0143]接下來執(zhí)行步驟304,即所述CA向NSl和NS2發(fā)送事件通知。在給NSl的事件通知中包括目錄Dirl的標識、監(jiān)聽掩碼和事件內(nèi)容。在給NS2的事件通知中包括目錄Dir2的標識、監(jiān)聽掩碼和事件內(nèi)容。其中,事件內(nèi)容為創(chuàng)建新文件/Dirl/Dir2/Dir4/Dir6/文件8。
[0144]對應的,在監(jiān)聽器所注冊的NS—側,請參考圖7所示,該方法包括:
[0145]步驟401:NS接收發(fā)生事件變化的CA發(fā)送的第一事件通知;第一事件通知包括第一目錄的標識、監(jiān)聽掩碼以及事件內(nèi)容;
[0146]步驟402:NS根據(jù)第一目錄的標識獲得注冊的用于監(jiān)聽第一目錄的監(jiān)聽器;所述監(jiān)聽器的屬性信息包括所述第一目錄的標識、監(jiān)聽掩碼以及注冊所述監(jiān)聽器的CA的標識;
[0147]步驟403:NS確定第一事件通知中的監(jiān)聽掩碼和所述屬性信息中的監(jiān)聽掩碼匹配;
[0148]步驟404:NS向注冊監(jiān)聽器的CA發(fā)送第二事件通知,其中,所述第二事件通知包括第一目錄的標識、監(jiān)聽掩碼以及所述事件內(nèi)容。
[0149]注冊監(jiān)聽器的CA在接收到第二事件通知后,直接回調協(xié)議接口,通過SMB2.0打包消息通知用戶態(tài)。
[0150]舉例來說,請參考圖8所示,為注冊的監(jiān)聽器的目錄樹。假設目錄Dirl被注冊了監(jiān)聽器,目錄Dirl的標識為FID1。該監(jiān)聽器注冊在NSl上。監(jiān)聽注冊者有CA1。監(jiān)聽掩碼為maskl。假設目錄Dir2被注冊了監(jiān)聽器,目錄Dir2的標識為FID2。該監(jiān)聽器的注冊在NS2上。監(jiān)聽注冊者有CAl和CA2。監(jiān)聽掩碼為mask2。
[0151]接下來請參考圖9所示,當CA3上進行創(chuàng)建新文件(文件8)時,確定新文件的全路徑(Dirl/Dir2/Dir4/Dir6/ 文件 8)上個各級目錄(Dirl/Dir2/Dir4/Dir6/)的 vnode 是有效的,其中,MDS(1, 2, 3)表示根據(jù)目錄的不同,可能需要從不同的MDS上獲取監(jiān)聽器信息,然后根據(jù)監(jiān)聽器信息設置各級目錄的vnode有效,具體確定方法如前所述,在此不再贅述。當CA3創(chuàng)建新文件(文件8)成功后,CA3就確定所述各級目錄的vnode中監(jiān)聽器計數(shù)不為零的vnode所對應的第一目錄。在本實施例中,目錄Dirl和目錄Dir2上注冊了監(jiān)聽器,因此,第一目錄為目錄Dirl和目錄DIR2。因此,CA3根據(jù)目錄Dirl和目錄Dir2的標識分別確定目錄Dirl和目錄Dir2的監(jiān)聽器注冊在哪個NS上。在本實施例中為目錄Dirl和目錄Dir2的監(jiān)聽器分別注冊在NSl和NS2上。因此,CA3分別向NSl和NS2發(fā)送第一事件通知。發(fā)給NSl的第一事件通知中包括目錄Dirl的標識、監(jiān)聽掩碼、事件的內(nèi)容。發(fā)給NS2的第一事件通知中包括目錄Dir2的標識、監(jiān)聽掩碼、事件內(nèi)容。那么NSl和NS2在接收到CA3的第一事件通知之后,NSl根據(jù)目錄Dirl的標識查找到注冊的監(jiān)聽器,發(fā)現(xiàn)CAl注冊了目錄Dirl的監(jiān)聽器,CAl和CA2注冊了目錄Dir2的監(jiān)聽器。因此,NSl給CAl發(fā)送第二事件通知;NS2分別給CAl和CA2發(fā)送第二事件通知。NSl向CAl發(fā)送的第二事件通知中包括目錄Dirl的標識、監(jiān)聽掩碼和事件內(nèi)容。NS2向CAl和CA2發(fā)送的第二事件通知中包括目錄Dir2的標識、監(jiān)聽掩碼和事件內(nèi)容。當CAl和CA2接收到事件通知之后,就回調協(xié)議接口將事件通知給用戶態(tài)。
[0152]由以上描述可以看出,在本申請實施例中,因為在發(fā)生事件變化時,CA可以根據(jù)發(fā)生事件變化的目錄/文件的全路徑上的各級目錄的vnode的監(jiān)聽器計數(shù)快速得知各級目錄中哪個目錄注冊了監(jiān)聽器,而無需像現(xiàn)有技術中那樣,由MDS逐級查詢各級目錄的Inode中是否注冊有監(jiān)聽器,因為每一級目錄的Inode可能不在同一 MDS上,所以需要發(fā)送消息給其他MDS進行查詢,因此,需要多次路由才能回溯到注冊了監(jiān)聽器的父目錄。
[0153]進一步,在本申請實施例中,進行事件通知的為CA和NS,而不需要MDS進行事件通知,所以這樣就不需要考慮元數(shù)據(jù)采用的什么分布方式和迀移方式。換言之,本申請實施例中的事件通知方法不依賴于元數(shù)據(jù)的布局方式和迀移方式。
[0154]基于同一發(fā)明構思,請參考圖10所示,為本申請實施例提供的一種事件通知裝置的功能框圖。該裝置用于實現(xiàn)如圖6及其實施例所述的事件通知方法。如圖10所示,該裝置包括:處理單元501,用于當客戶端CA進行使得目錄/文件發(fā)生變化的操作時,確定所述目錄/文件的全路徑上的各級目錄的節(jié)點信息vnode是有效的;當所述CA完成所述操作后,確定所述各級目錄的vnode中監(jiān)聽器計數(shù)不為零的vnode所對應的第一目錄;根據(jù)所述第一目錄的標識在多個NS中確定出所述第一目錄的監(jiān)聽器所注冊的NS ;其中,所述多個NS的數(shù)量與所有CA的數(shù)量相同;所述所注冊的NS上保存有所述第一目錄的監(jiān)聽器的屬性信息,所述屬性信息包括所述第一目錄的標識、監(jiān)聽掩碼與注冊所述監(jiān)聽器的CA的標識;所述監(jiān)聽掩碼用于表示監(jiān)聽的事件類型;發(fā)送單元502,用于向所述所注冊的NS發(fā)送事件通知,所述事件通知包括所述第一目錄的標識、監(jiān)聽掩碼以及與所述操作對應的事件內(nèi)容;以使所述所注冊的NS能夠在所述事件通知中的監(jiān)聽掩碼和所述屬性信息中的監(jiān)聽掩碼匹配時,向所述注冊所述監(jiān)聽器的CA發(fā)送事件通知。
[0155]可選的,處理單元501具體用于:當所述各級目錄中的目錄存在vnode時,查看所述vnode的標記信息;
[0156]當所述標記信息表示所述vnode有效時,確定所述vnode是有效的;
[0157]發(fā)送單元502還用于:當所述標記信息表示所述vnode無效時,向元數(shù)據(jù)服務器MDS獲取所述無效的vnode所對應的目錄的監(jiān)聽器信息,處理單元501還用于根據(jù)所述監(jiān)聽器信息更新所述無效的vnode信息為有效的vnode ;
[0158]發(fā)送單元502還用于當所述各級目錄中的目錄不存在vnode時,向MDS獲取所述不存在vnode的目錄的監(jiān)聽器信息,處理單元501還用于根據(jù)所述監(jiān)聽器信息創(chuàng)建所述目錄的vnode并設置為有效的vnode。
[0159]可選的,所述裝置還包括接收單元,用于當所述標記信息表示所述vnode無效時,在處理單元501查看所述vnode的標記信息之前,接收鎖服務器發(fā)送的廣播消息,所述廣播消息用于通知所述裝置所述無效的vnode所對應的目錄的元數(shù)據(jù)將要發(fā)生變化;
[0160]處理單元501還用于:將所述目錄的vnode的標記信息設置為表示所述目錄的vnode無效的信息。
[0161]前述圖6實施例中的事件通知方法中的各種變化方式和具體實例同樣適用于本實施例的事件通知裝置,通過前述對事件通知方法的詳細描述,本領域技術人員可以清楚的知道本實施例中事件通知裝置的實施方法,所以為了說明書的簡潔,在此不再詳述。
[0162]基于同一發(fā)明構思,請參考圖11所示,為本申請實施例提供的一種CA的系統(tǒng)框圖。用于實現(xiàn)如圖6及其實施例所述的事件通知方法。如圖11所示,該CA包括:處理器602,用于當客戶端CA進行使得目錄/文件發(fā)生變化的操作時,確定所述目錄/文件的全路徑上的各級目錄的節(jié)點信息vnode是有效的;當所述CA完成所述操作后,確定所述各級目錄的vnode中監(jiān)聽器計數(shù)不為零的vnode所對應的第一目錄;根據(jù)所述第一目錄的標識在多個通知服務器NS中確定出所述第一目錄的監(jiān)聽器所注冊的NS ;
當前第4頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1