JP4613023B2 - プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 - Google Patents

プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 Download PDF

Info

Publication number
JP4613023B2
JP4613023B2 JP2004071768A JP2004071768A JP4613023B2 JP 4613023 B2 JP4613023 B2 JP 4613023B2 JP 2004071768 A JP2004071768 A JP 2004071768A JP 2004071768 A JP2004071768 A JP 2004071768A JP 4613023 B2 JP4613023 B2 JP 4613023B2
Authority
JP
Japan
Prior art keywords
client
request
data
side cache
cache
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.)
Expired - Fee Related
Application number
JP2004071768A
Other languages
English (en)
Other versions
JP2004280826A (ja
Inventor
ユン リン
ウィルク ナフヨット
パーディカー シシラ
クマー ロハン
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 Corp
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
Publication of JP2004280826A publication Critical patent/JP2004280826A/ja
Application granted granted Critical
Publication of JP4613023B2 publication Critical patent/JP4613023B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Description

本発明は一般にコンピュータネットワークに関し、より詳細にはネットワーク環境におけるデータストレージに関する。
ネットワークサーバーは、一般にアプリケーションプログラムのファイル関連の要求をアプリケーションサーバーにリダイレクトするリダイレクタの概念に基づく機構を含む様々な機構を使用してクライアントデータを格納し、クライアントデータにアクセスできるようにする。サーバーは、つまりエラー、アクセス権違反、または他の問題が生じない限り、各要求を受信し、要求されたファイル操作を実行する。次いでサーバーは、成功ステータス(success status)を、アプリケーションプログラムがその要求に応答して受信する任意の対応するデータ、例えば作成/オープン要求の場合はファイルハンドル、読取り要求の場合はファイルデータなどとともに戻す。
コンピュータユーザーは、常にネットワークファイルサーバーに接続しているわけではないため、ネットワークの停止または故意の切断など、ファイルのネットワークバージョンがその他の方法では使用できないときに、ローカルファイルのコピーへのオフラインアクセスを可能にする様々なクライアント側キャッシュ機構が開発されている。こうしたキャッシュ機構の1つはブリーフケースと呼ばれており、ユーザーは、表示されているブリーフケースに、またはブリーフケースからファイルをドラッグし、本質的に手動でどのファイルをキャッシュするかを決定し、それらがキャッシュされるときに、任意のマージ(ファイルバージョンのコンフリクト)を解決することによってローカルファイルキャッシュを管理する。容易に理解できるように、ブリーフケース機構は、膨大な量のユーザーインタラクションを必要とし、ユーザーにとっては比較的不便となっている。さらに、ブリーフケース機構は、ファイルシステムの名前空間とは無関係のそれ自体の名前空間を有しており、例えばファイル名は、ブリーフケースの名前空間およびファイルシステムの名前空間の両方に存在している、または一方に存在し、もう一方には存在しないことがあり得る。アプリケーションは、ブリーフケース機構から利益を直接または透過的に得ることがない。というのは、ブリーフケースはシェルプログラムであり、ファイル関連の操作を実行するためにアプリケーションプログラムが依存するオペレーティングシステムおよび/またはファイルシステムの一部ではないからである。
米国特許出願第09/134,720号に、クライアント側キャッシュの最近の改良について記載されている。これは一般にファイルの永続的なクライアント側のキャッシュを対象としている。この改良によって、ネットワーククライアントは、クライアントがネットワークに接続されているときと同じファイル名を使用し、同じ名前空間でローカルにキャッシュされたファイルのコピーにアクセスすることができる。自動キャッシュが提供され(ただし手動構成は依然として可能)、それによってユーザーインタラクションの必要性の多くが低減する。さらにこの改良では、クライアント側キャッシュ技術の大部分が、CIFS(Common Internet File System)リダイレクタに組み込まれている。これは、よく知られているSMB(サーバーメッセージブロック)プロトコルの発行された拡張であるCIFSリモートファイルアクセスプロトコルを使用する。キャッシュはリダイレクタで処理されるため、アプリケーションプログラムは、キャッシュから透過的に利益を得る。例えば、ユーザーがネットワークから切断されているとき、要求されたファイル操作を、サーバーの代わりにファイルのキャッシュされたコピーに自動的にリダイレクトすることができる。
したがってこうしたクライアント側キャッシュ技術は、ネットワークから切断されたとき、またはネットワークがダウンしたとき、本質的に必要なファイルにアクセスできるようにすることによって多くの利益を提供するが、現在のクライアント側キャッシュ機構のいくつかの欠点が依然として存在する。こうした1つの欠点は、既存のキャッシュ技術がCIFSリダイレクタと密に一体化されていることである。したがって透過的なクライアント側キャッシュは、WebDAVベース(または単純なDAV、分散オーサリングおよびバージョン管理:Distributed Authoring and Versioning)、NFSベース(Network File System)のサーバー/プロトコルなど他のプロトコルを有する他のサーバータイプには使用できない。同様のキャッシュ技術の各リダイレクタへの追加は、様々なリダイレクタ構成要素の変更を要することになる。これは、特にサードパーティのリダイレクタドライバを用いる場合、実現不可能ではないにしても望ましくない。
要約すれば、クライアント側ファイルキャッシュに関してプロトコルに依存せず、それによってサーバーのタイプにわたって均一なオフライン経験をユーザーに提供し、しかし実質的に既存のネットワーキング構成要素への変更は不要である方法およびシステムが必要である。この方法およびシステムは、ユーザーおよび既存のアプリケーションに対して透過であり、現在のクライアント側キャッシュに関連する他の欠点を克服すべきである。
簡単に言えば、本発明は、任意のリモートファイル処理プロトコルに依存しない、ネットワークファイルデータのクライアント側キャッシュを自動的かつ透過的に処理するキャッシュシステムおよび方法を提供する。プロトコル独立型クライアント側キャッシュ機構は、ネットワークに向けられるファイル関連の要求を処理し、クライアント側キャッシュ永続ストアを介して要求を満たそうと試みるサービスとして挿入される。このために、1つのアーキテクチャでは、オンライン時に、ネットワークリダイレクタ構成要素と、ダイレクタによって呼び出され、リファイル関連(例えば読取りまたは書込み)要求をバッファリングサービスのメモリ内バッファを介して処理することができるかどうかを決定するバッファリングサービスとの間の通信フローに代理プロバイダの形態のクライアント側キャッシュ機構が挿入される。一般にこのアーキテクチャでは、クライアント側キャッシュ機構は、クライアント側キャッシュ機構をバッファリングサービスからリダイレクタとして見えるようにし、さらにリダイレクタからバッファリングサービスのように見えるようにして、フィルタスタック内のフィルタドライバとして提供される。クライアント側キャッシュ機構の通信フローへの挿入は、部分的に、ファイル作成/オープン要求(open request)の終わりに、呼出し側プロバイダに戻るためにバッファリングサービスが使用するリダイレクタ装置オブジェクトデータ(ファイルのデータ構造に存在する)を上書きして、バッファリングサービスが代わりにクライアント側キャッシュ機構を呼び出すようにすることによって達成される。
クライアント側キャッシュ機構がネットワークファイル関連の入出力(I/O)要求を処理できるようにするために、クライアント側キャッシュ機構は、ネットワークファイル関連のI/O要求を受信するシステム構成要素に代理プロバイダとして登録する。これは、一実装形態ではMultiple UNC(汎用名前付け規則:Uniform Naming Convention)プロバイダまたはMUPと呼ばれる。MUPは、任意のファイル関連の要求が他の任意の代理プロバイダまたは任意のリダイレクタに提供される前に、クライアント側キャッシュ機構の前処理ハンドラを呼び出す。またMUPは、任意のファイル関連の要求が他の任意の代理プロバイダまたは任意のリダイレクタに提供された後に、クライアント側キャッシュ機構の後処理ハンドラも呼び出す。このように、ファイル作成の場合、クライアント側キャッシュ機構は、他の要求を扱うのに必要なデータ構造を生成し、構成することができる。
例えば、ファイル作成(またはオープン)の場合、I/Oマネージャは、ファイルオブジェクトを作成し、名前を解析し、そのファイルがリモートオブジェクトであることを名前が示しているときは、その要求をMUPに転送する。作成要求を別の代理プロバイダまたは任意のリダイレクトに送信する前に、MUPは、前処理操作で、要求をクライアント側キャッシュ機構(代理プロバイダ)に送信する。クライアント側キャッシュ機構前処理ハンドラは、論理名前空間によるファイルコピーに関連する論理接続構造、およびファイルオブジェクトに関連付けられる関係のあるファイルベースデータ構造を含む、ファイルオブジェクトに関連付けられるデータ構造を作成し、オンラインの場合、クライアント側キャッシュ機構の構造およびリダイレクタの構造との間で共有することができる。(例えば前の作成要求から)オフラインであることがわかっている場合、クライアント側キャッシュ前処理ハンドラは要求を完了する。
オンライン時、または接続ステータスがわからない場合、クライアント側キャッシュ機構は、「さらに処理が必要」(more processing required)ステータスをMUPに戻し、MUPは、一般に要求に関連する名前空間を論理から物理に変更するDFS代理プロバイダを呼び出す。MUPは、必要に応じてリダイレクタを呼び出し、リダイレクタの1つが、オンライン接続がある場合にパスを主張し、ネットワークサーバーでファイルに関連する物理接続ベースのデータ構造を作成できるようにする。クライアント側キャッシュ機構後処理ハンドラが呼び出されると、後処理ハンドラは、データ構造内の情報に基づいて必要に応じてその論理データ構造を完成させる。また、後処理ハンドラは、このファイルがオフラインかオンラインかを決定する(例えばリダイレクタによって主張される)。後処理ハンドラは、リダイレクタ関連のデータ(例えばファイル制御ブロックデータ構造内のリダイレクタディスパッチテーブルへのポインタ)を上書きし、オンライン時に、バッファリングサービスがリダイレクタの代わりにクライアント側キャッシュ機構を呼び出すようにする。クライアント側キャッシュ機構は、ファイルと関連するリダイレクタ(ポインタ)データのコピーを維持し、その結果クライアント側キャッシュ機構が必要に応じてリダイレクタと通信することができ、それによってそれ自体がバッファリングサービスとリダイレクタの間の通信フローに挿入される。リダイレクタがネットワーク関連のエラーを戻した場合、クライアント側キャッシュ後処理は、ファイルをオフラインとみなし、それによってリダイレクタを呼び出すことなく、ファイルに対する要求がクライアント側キャッシュから満たされるよう試行される。キャッシュが(サーバーによって)使用不可にされている場合、クライアント側キャッシュ機構後処理は、それ自体をファイルオブジェクトから引き離し、それによってMUPはこのファイルオブジェクトに関連する任意の要求を転送しないようにすることができる。例えば、ファイル制御ブロック上のリダイレクタ関連のデータを上書きしないことによって、クライアント側キャッシュ機構は、このファイルオブジェクトに関連するその後のファイルI/Oの制御フローに関与しなくなる。
オフラインおよびオンラインの作成では、同じファイルへの作成要求がクライアント側キャッシュプロセスで同期される。このために、同じファイルに向けられる別の作成をクライアント側前処理に送信する場合、クライアント側キャッシュ前処理は、現在のものが完了するまで、後の各作成要求を保持する。
例えば、読取り、書込み、またはクローズなどの他の(非作成)ファイル要求の場合、オフライン時に、クライアント側キャッシュ機構は、その前処理で要求を最初に調べることができ、読取りおよび書込み要求などでの適切な場合に、バッファリングサービスを呼び出すことによってメモリ内で要求を満たそうと試みる。対応するデータがメモリ内にキャッシュされてない(キャッシュミスが発生した)場合、したがってバッファリングサービスはそのデータをすぐに読み取り、またはそこに書き込むことができない場合、バッファリングサービスは、第1の要求を保持し、(例えばバッファリングサービスのキャッシュマネージャ/メモリマネージャなどによって)別の第2の要求を生成する。この第2の要求は、クライアント側キャッシュ前処理に到達すると、バッファリングサービスを呼び出し、バッファリングサービスは、その要求をキャッシュミスによって生成されたものとして認識し、したがってキャッシュ内でデータを探さず、代わりにクライアント側キャッシュ機構を呼び出す。クライアント側キャッシュ機構は、要求を処理し、必要なデータを永続ストア内のオフラインキャッシュコピーから取得しようと試み、データをキャッシュマネージャ/メモリマネージャに戻す。次いでキャッシュマネージャ/メモリマネージャは、データをメモリ内キャッシュにコピーし、I/O要求を完了させ、例えば読取り要求の場合はデータを戻す、またはキャッシュメモリ内の書込み要求の場合はデータを変更することができる。このファイルでは接続がオフラインであるため、クライアント側キャッシュ機構がそのストアから必要なデータを取得することができない場合、クライアント側キャッシュ機構はエラーを戻す。したがって、キャッシュミスの場合、バッファリングサービスは、クライアント側キャッシュ機構の第2の要求(バッファリングサービス構成要素によって生成される)の処理からの結果に基づいて第1の要求を完了させ、メモリ内キャッシュにデータを提供する。
オンライン時の非作成ファイルI/O要求の場合、クライアント側キャッシュ機構前処理は、「さらに処理が必要」ステータスをMUPに戻し、次いでMUPは他の任意の代理プロバイダを呼び出し、要求を対応するリダイレクタに転送する。次に、リダイレクタは(例えばサービスのバッファサブシステムを呼び出すことによって)バッファリングサービスを呼び出し、メモリから要求を満たそうと試みる。対応するデータがメモリにキャッシュされていない場合、バッファリングサービスは、第1の要求を保持し、その構成要素(例えばキャッシュマネージャ/メモリマネージャ)が別の第2の要求を生成する。この第2の要求は、リダイレクタに到達すると、バッファリングサービスを再度呼び出すが、このときバッファリングサービスは、キャッシュミスによって生成されたものとして要求を認識し、したがって、キャッシュ中でデータを再度探さないことがわかっている。しかし、クライアント側キャッシュ後処理は、ディスパッチャテーブル内のリダイレクタポインタを上書きしたため、リダイレクタは、バッファリングサービスのバッファサブシステムを呼び出したが、バッファリングサービスは、クライアント側キャッシュ機構を呼び出す。永続ストア内のオフラインキャッシュコピーを使用して要求を満たすことができる場合、クライアント側キャッシュ機構は、要求を処理する。要求を満たすことができない場合、(リダイレクタポインタを保存した)クライアント側キャッシュ機構は、リダイレクタを呼び出してサーバーから取る要求を満たそうと試みる。リダイレクタは、リダイレクタによって戻されたデータをそれ自体の永続ストアにキャッシュすることができるクライアント側キャッシュ機構に戻り、次いで第2の要求を完了するバッファサブシステムに戻り、それによってバッファリングサービスのキャッシュ構成要素に到達する。キャッシュ構成要素は、次いで第1の要求を完了し、第2の要求のクライアント側キャッシュ機構(および場合によってはリダイレクタ)の処理からの結果に基づいて戻されたデータをメモリ内キャッシュにキャッシュする。概念上、クライアント側キャッシュ機構は、バッファリングサービスからリダイレクタへの呼出しをインターセプトするようにそれ自体を挿入し、特に、必要とされているデータをクライアント側キャッシュオフラインストアから満たすことができるかどうかを調べる。
オンライン接続を有するファイルに対してクローズが発行されると、MUPは、要求をクライアント側キャッシュ機構前処理に送信する。次いでクライアント側キャッシュ機構は、まだサーバーに送信されていないデータがあるかどうかをチェックする。データがある場合、クライアント側キャッシュ機構は、ダーティページをサーバーにフラッシュする。次いでクライアント側キャッシュ機構は、その接続に対してクローズ要求をリダイレクタに送信し、そのデータ構造を逆参照し、要求を完了する。他の要求は、同様に処理される。接続がオフラインの場合、クライアント側キャッシュ機構は、タスクをローカルに実行する。
わかるように、クライアント側キャッシュ機構は、リダイレクタの外部のネットワークファイル関連要求と連動するため、クライアント側キャッシュ機構は、プロトコルに依存せず、リダイレクタがバッファリングサービス(または同様の)アーキテクチャに参加している限り、任意のリダイレクタプロトコルと連動することができる。
他の利点は、以下の詳細な説明を図面と併せ読めば明らかになる。
動作環境の例
図1は、本発明を実施できる適したコンピューティングシステム環境100の例を示している。コンピューティングシステム環境100は、適したコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティングシステム環境100を、コンピューティングシステム環境100の例に示した構成要素のいずれか1つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明との使用に適したよく知られているコンピューティングシステム、環境、および/または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などがある。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
図1を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ110の形で含んでいる。コンピュータ110の構成要素は、それだけには限定されないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理ユニット120に結合するシステムバス121を含む。システムバス121は、様々なバスアーキテクチャのうちの任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちどんなものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、ISA(Industy Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standard Association)ローカルバス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスなどがある。
コンピュータ110は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージ、または所望の情報の格納に使用でき、コンピュータ110からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された1つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された通信などの有線媒体、および音響、RF、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。BIOS(basic input/output system)133は、例えば起動中など、コンピュータ110内の要素間での情報の転送を助ける基本ルーチンを含み、一般にROM131に格納される。RAM132は一般に、処理ユニット120からすぐにアクセス可能な、かつ/または処理ユニット120が現在処理しているデータおよび/またはプログラムモジュールを含む。図1は、それだけには限定されないが一例として、オペレーティングシステム134、ファイルシステム135、アプリケーションプログラム136、他のプログラムモジュール137、およびプログラムデータ138を示している。
コンピュータ110は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図1は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ141、リムーバブル不揮発性磁気ディスク152から読み取り、あるいはそこに書き込む磁気ディスクドライブ151、およびCD−ROMや他の光媒体など、リムーバブル不揮発性光ディスク156から読み取り、あるいはそこに書き込む光ディスクドライブ155を示している。動作環境の例で使用できる他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体RAM、半導体ROMなどがある。ハードディスクドライブ141は一般に、インターフェイス140などの非リムーバブルメモリインターフェイスを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は一般に、インターフェイス150などのリムーバブルメモリインターフェイスによってシステムバス121に接続される。
上述し、図1に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ110のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を提供する。図1では例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム136、他のプログラムモジュール137、およびプログラムデータ138と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザーは、タブレット(電子デジタイザ)164、マイクロフォン163、キーボード162、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置161などの入力装置を介してコマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザー入力インターフェイス160を介して処理ユニット120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインターフェイスおよびバス構造で接続してもよい。モニタ191または他のタイプの表示装置もまた、ビデオインターフェイス190などのインターフェイスを介してシステムバス121に接続される。モニタ191は、タッチスクリーンパネルなどと一体化することもできる。モニタおよび/またはタッチスクリーンパネルは、タブレット型パーソナルコンピュータなどのコンピューティング装置110が組み入れられるハウジングに物理的に結合できることに注意されたい。さらに、コンピューティング装置110などのコンピュータは、出力周辺インターフェイス194などを介して接続できるスピーカー195、プリンタ196などの他の周辺出力装置を含むこともできる。
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバー、ルーター、ネットワークPC、ピア装置、または他の一般のネットワークノードでよく、一般にコンピュータ110に関連して上述した多くまたはすべての要素を含むが、図1にはメモリ記憶装置181のみを示している。図1に示した論理接続は、ローカルエリアネットワーク(LAN)171および広域エリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。例えば、本発明では、コンピュータシステム110は、データがそこからマイグレーションされるソースマシンを備え、リモートコンピュータ180は、宛先マシンを備えることができる。しかし、ソースマシンおよび宛先マシンは、ネットワークまたは他の任意の手段で接続する必要はなく、代わりに、ソースプラットフォームによって書き込むことができ、宛先プラットフォームによって読み取ることができる任意の媒体を介してデータをマイグレーションしてもよい。
LANネットワーキング環境で使用する場合、コンピュータ110は、ネットワークインターフェイスまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する場合、コンピュータ110は一般に、モデム172、またはインターネットなどWAN173にわたって通信を確立する他の手段を含む。モデム172は、内蔵のものでも外付けのものでもよく、ユーザー入力インターフェイス160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク式環境では、コンピュータ110に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図1は、それだけには限定されないが一例として、リモートアプリケーションプログラム185をメモリ装置181上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
クライアント側キャッシュシステムおよび方法
本発明は一般に、プロトコルベースのリダイレクタ、NTFSファイルシステム、および他の構成要素(I/Oマネージャ、キャッシュマネージャ、およびメモリマネージャなど)を使用して、Microsoft社のWindows(登録商標)XPオペレーティングシステムのコンテキストで説明する。ただし、本発明を事実上任意のオペレーティングシステムおよび/またはファイルシステムで実施できることは理解されよう。
図2を参照すると、本発明を実施するアーキテクチャ200の例を示している。このアーキテクチャでは、ユーザーモードアプリケーションプログラム202は、アプリケーションプログラミングインターフェイス(API)層204を介して様々なシステム機能を呼び出すことができる。ネットワークリソースにアクセスするために、ユーザーモードアプリケーションプログラム202は、I/Oマネージャ206を介してネットワークリソースに向けられるファイル入出力(I/O)API呼出しを行う。例えば、Windows(登録商標)ベースのオペレーティングシステムでは、アプリケーションプログラムは、UNC(汎用名前付け規則:Uniform Naming Convention)標準をWin32機能とともに使用してリモートリソースを例えば\\server\shareの形式で直接、またはネットワーク共有フォルダなどにマップされるドライブ名を介してアドレス指定することによってリモートシステム上のリソースを検査し、またはそれにアクセスすることができる。
アプリケーションからネットワークリソースへのアクセスが可能になる別の方法は、ネットワーキングAPI(Windows(登録商標)2000オペレーティングシステムのWin32 Windows(登録商標)Networking(WNet)APIなど)を呼び出して、例えばブラウズ時にサーバーのファイルを列挙することによる。こうしたWNet APIを介して、アプリケーションおよび/またはオペレーティングシステム構成要素は、共有のためにリモートコンピュータがエクスポートするコンピュータおよびリソースを列挙する。このため、ユーザーモードネットワークプロバイダ210〜213はそれぞれ、オペレーティングシステムをリモートネットワークサーバーのクライアントとして、または本発明ではクライアント側キャッシュのクライアント(一般にサーバーとして働く)として確立するソフトウェアコードを備える。例えば、ネットワークプロバイダが実行する一部の操作は、ネットワーク接続の確立および切断、およびネットワークリソースのステータスの問合せを含む。したがって、ネットワークプロバイダが提供する一般の機能には、呼出し元がネットワークプロバイダの能力を判定することができる能力機能、およびネットワークプロバイダがドライブ名、MS−DOS(登録商標)装置、およびLPTポートをリダイレクトすることができる装置リダイレクト機能(device redirecting function)がある。他の機能には、ネットワークプロバイダがネットワーク固有の情報を表示でき、またはそれに対して作用できるプロバイダ固有のダイアログ機能、ネットワークプロバイダが特殊なネットワークディレクトリを表示でき、またはそれに対して作用できる管理機能、およびネットワークリソースのブラウジングを可能にする列挙機能などがある。例えばオペレーティングシステムは、SMBネットワークプロバイダ211を介してネットワーク共有をSMBサーバー311(図3)に列挙することができる。
アプリケーションがAPI層204のネットワーキングルーチンを呼び出すときに呼び出すべきネットワークプロバイダを決定するために、一実装形態では、呼が、ダイナミックリンクライブラリ(DLL)としてインストールすることができる多重ネットワークプロバイダルーチン、すなわちMPR(多重プロバイダルータ)216に移動する。一般にMPR216は、どのユーザーモードネットワークプロバイダがアクセスされるリソースを認識するかを決定する。このため、MPR216の下にあるインストールされている各ネットワークプロバイダは、まとめてネットワークプロバイダインターフェイスと呼ばれる1組の機能を提供し、これによってMPR216は、アプリケーションがアクセスしようとしているのがどのネットワークかを決定し、要求を適切なネットワークプロバイダソフトウェアに向けることができる。例えば、SMBのネットワークプロバイダは、システムレジストリキーなどで指定されるLANMAN(ローカルエリアネットワークマネージャ)ネットワークプロバイダ211を含む。
記載の実装形態では、リモートネットワークリソースに接続するために呼び出されると、MPR216は、レジストリをチェックして、どのネットワークプロバイダがロードされているかを決定する。次いでMPR216は、例えば一度に1つ、構成可能なレジストリにリストされている順序でネットワークプロバイダをポーリングし、各ネットワークプロバイダ(例えばDAVネットワークプロバイダ213)は、リソースが認識されるまで、または使用可能なネットワークプロバイダがポーリングされたときまでその対応するカーネルモード構成要素(例えばDAVリダイレクタ225)とさらに通信することができる。したがって、例えば呼出しパラメータとしてDAVサーバーに渡されたURLを介してネットワークリソースに向けられるネットワーキングAPI呼出しのイベントでは、MPR216はDAVネットワークプロバイダ213をポーリングし、DAVネットワークプロバイダ213はRPC(遠隔手続き呼出し)を介してサービスを呼び出し、カーネルモードのDAVリダイレクタ225に連絡して、APIを扱うことができるかどうか、例えば指定されたDAV共有が本当にアクセス可能なDAVサーバー312(図3)であるかどうかを決定する。そうである場合、APIがDAVリダイレクタ構成要素225によって処理される。
また、アプリケーションは、リソースに以前マップされていたUNC名またはドライブ名を介してネットワークリソースに透過的にアクセスすることもできる。ファイルI/O API(例えばファイル作成/オープン要求)がUNC名などリモートパス/ファイル名で呼び出されると、ファイルI/O要求は、I/Oマネージャ206で受信される。リモート名を処理するために、I/Oマネージャ206は、多重UNCプロバイダ、すなわちMUP(多重UNCプロバイダ)230(例えばカーネルモードドライブを備える)を呼び出す。これは、UNCプロバイダとしてシステムに登録される。一般にMUP230は、どの(例えばプロバイダ210〜213の組の)ネットワークプロバイダ、およびネットワークリダイレクタ223〜225の1つなどの対応するカーネル構成要素がその特定の名前を処理するかがわかる。この例ではリダイレクタは3つしか示していないが、所与のシステムでより少ない、または多いリダイレクタを使用できることに注意されたい。
要求されたファイル作成パスについての適切なリダイレクタを決定するために、MUP230は、登録されているプロバイダ/リダイレクタの1つが作成要求で提供されたパスを主張するまで、本質的に登録されているプロバイダ/リダイレクタをポーリングする。一実装形態では、MUP230は、非同期I/O要求パケット、すなわちIRPを介してポーリングし、名前を処理することができる各リダイレクタが返答する。複数が肯定応答した場合、MUP230は、優先順位(例えば少なくとも1つのシステムレジストリキーなどに維持されている)から、どれが要求を処理する優先権があるかを決定する。パスが主張されると、ユーザモードアプリケーションプログラムーがI/O API呼出しを使用してリモートファイルにアクセスしたとき、MUP230は、その要求を処理するためにどのリダイレクタを呼び出すかがわかる。
少なくとも1つのリダイレクタが応答し、パスを主張した場合、MUPドライバ230は、応答したリダイレクタに関連するパス情報をキャッシュ(複数の場合、優先権のあるものの情報をキャッシュ)し、それによってさらに、そのパス文字列で開始する要求が、ポーリング操作なしに、そのリダイレクタに直接送信される。MUP206への応答の一部として、名前を認識する各リダイレクタは、名前のうちのどの程度がそれに固有であるかを識別する。例えば、名前がUNC名\\SERVER\SHARE\foo\barl.docであり、SMBリダイレクタ223が名前を処理できるものとして認識した場合、かつサーバーがSMBサーバーである場合、SMBリダイレクタ223は、文字列「\\SERVER\SHARE」をそれ自体として要求することによって応答する。したがって、このキャッシュされた文字列に対応するネットワーク共有に向けられる将来のSMB要求は、ポーリングなしにSMBリダイレクタ223に渡され、SMBリダイレクタ223は、これらのSMB要求を、ネットワークを介してリモートSMBサーバーに送信できるデータ構造にまとめる。
本発明の一態様によれば、適切な場合、代理プロバイダの形態のクライアント側キャッシュ(CSC)機構221は、リダイレクタレベルで動作し、任意の特定のネットワークプロトコルに依存せず、CSCストア215からのネットワーク要求を透過的に処理する。一実装形態では、CSC機構221は、開始から通信フローに関与する。このため、UNCまたはドライブ名ベースのネットワークI/O要求が受信されると、MUP230は、リダイレクタのいずれかに連絡する前に、CSC前処理ハンドラ226への前処理呼出しを介してCSC機構221と通信する。CSC機構221は、後述するように、ステータス情報を備えて前処理呼出しから戻る。例えば、前処理ハンドラ226からは通信がオフラインであることがわかっている場合、つまり作成時にこのファイルのためにネットワークに接続されていないことがわかっている場合、クライアント側キャッシュ(CSC)機構221は、パスを主張し、成功ステータスで呼び出しを完了する。そうでない場合、CSCは「さらに処理が必要」ステータスを戻すことができる。このイベントでは、MUP230は同様に、リダイレクタ223〜225のうちの1つまたは複数を呼び出す前に、分散ファイルシステム(DFS)代理プロバイダ222に前処理呼出しを行う。CSC機構221は、図2の接続状態250に概略を示すように、例えば既存の接続データ構造を検査し、ネットワーク関連のイベントの登録を行うことによって、既知のやり方でネットワーク接続状態(他の構成要素と同様)を決定することができることに注意されたい。
したがってCSC機構221は、ネットワークに向けられる任意のUNCおよびドライブ名ベースのI/Oのための前処理呼出しを受信する。MUP230から呼び出されるために、CSC機構221は、それ自体を代理プロバイダとして登録し、それによってMUP230は、ネットワークプロバイダおよび/またはその対応するリダイレクタに向けられるIRPおよびFASTIO呼出しの場合、前処理呼出し、および後処理呼出しでCSC機構221を呼び出すことがわかっていることを注意されたい。
さらに処理が必要ステータスで戻る前処理呼出しでCSC機構221を呼び出した後、MUP230は、DFS代理プロバイダ222を呼び出す。一般にDFSは、論理パス/ファイル名を物理パス/ファイル名に変換し、異なる多くのサーバーから単一の統一された名前空間を構築するシステムを提供する。次いでリダイレクタは、特定のリダイレクタが処理するファイルの適切に名づけられたパスを主張することができる。高レベルでは、DFSは、DFS名前空間を備える個々のサーバーに、連絡点に応じて参照を提供するよう要求することによって動作する。一例によれば、DFSを使用して、1つの部の中にある異なるサーバーによって構築されるプログラムのリリースに単一の名前空間を提供することができる。例えば、名前\\progbuilds\release\lab01\release\x86freは、\\robvbll\releaseへの連絡点である。この例で、\\progbuilds\release\lab01\release\x86fre\latest_tested_build.txtを開くには、\\progbuildsサーバーは、\\robvbll\release\latest_tested_build.txtとして参照を戻し、クライアントに要求を再試行するよう伝える。
理解できるように、連絡点を処理する一般のアルゴリズムは、名前の左部分を変更する。名前は、複数の連絡点をトラバースし、その結果、最終的に宛先サーバーに連絡する前に複数の名前のリビジョンがもたらされる。ファイル名識別子を右に配置することによって、たとえサーバーが連絡点を処理するためにクライアントが提供する名前を変更したとしても、識別子が名前に留まることができるようにする。
したがって、図2のアーキテクチャにおいて、また図3にも概略を示しているが、MUP230がUNCプロバイダとして登録されている状態で、MUP230は、UNC呼出しを処理し、適切な代理プロバイダの第1のもの、つまりCSC機構221にUNC呼出しを引き渡す。戻されたステータスに応じて、MUP230は、UNC呼出しを1つまたは複数の他の代理プロバイダ(符号222など)、およびリダイレクタ223〜225に引き渡すことができ、リダイレクタは、ネットワークトランスポート層301などを介して、リダイレクタプロトコルに対応するサーバー311〜313との間で通信を行う。前処理および後処理呼出しスキームのため、CSC機構221は、MUP230を通過する呼出しをフィルタ処理し、したがってCSC機構221は、適切であるとみなされるどんなパス名に対してもキャッシュ操作について判断することができる。概念上、CSC機構221は、MUP230が処理する全呼出しのパス上にあり、それによってCSC機構211は、以下で概説するように、CSC機構221が適切なクライアント側キャッシュ機能を実行する必要があるどんな前処理および後処理でも行うことができる。さらに、このアーキテクチャでは、CSC機構221は、前処理呼出しの場合はDFS代理プロバイダ222の前(および後処理呼出し時はDFSの後)に動作するため、CSC機構221が見る名前は物理名ではなく論理名なので、任意のDFS操作がCSCに対して透過となる。図2のアーキテクチャで示したように、CSC機構221およびDFS代理プロバイダ222は、MUP230の一般レベルである。
本発明の別の態様によれば、クライアント側キャッシュ機能は、プロトコル独立型であり、例えば任意のリダイレクタと連動する。このため、クライアント側キャッシュ機能は、任意のプロトコル依存型リダイレクタ(すなわちSMBリダイレクタ223)から出て行き、透過的に、リダイレクタとリダイレクトされたバッファサブシステム(RDBSS)232との間の制御フローの一部になる。わかるように、リダイレクトされたバッファサブシステム232は、キャッシュマネージャ240およびメモリマネージャ242(メモリ内RAMキャッシュ244)サービスをリダイレクタ223〜225に提供する。これらはそれぞれ、適切な場合に、メモリ内RAMキャッシュ244を使用するためにRDBSS232に連絡する。後述するように、CSC機構221を(ドライバとして)リダイレクタとリダイレクトされたバッファサブシステム232との間の制御フローに挿入することによって、クライアント側キャッシュ機能は、各リダイレクタにとって共通サービスとして使用可能となり、任意のネットワークから独立しているが、本質的にリダイレクタ223〜225およびリダイレクトされるバッファサブシステム232には透過である。本明細書で使用する場合、「バッファリングサービス」という用語は、このアーキテクチャの例における、RDBSS232、キャッシュマネージャ240、メモリマネージャ242、およびメモリ内RAMキャッシュ244によってまとめて提供されるバッファリングサービスを含むファイル関連のデータバッファリングを処理する任意の構成要素を指すことに注意されたい。
CSC機構221は、ユーザーが見る名前空間である論理名前空間に対して作用することに注意されたい。これは、データが格納される実際のサーバーに対応する物理名前空間に対して作用するリダイレクタとは対照的であることに注意されたい。関与するDFS連絡点がある場合を除いて、これら2つの名前空間は、例えばSMBにとっては同一であることに注意されたい。
本発明の一態様によれば、図4は、論理名前空間および物理名前空間での論理接続ベースのデータ構造400および物理接続ベースのデータ構造420、およびその関係を示している。CSC機構221は、接続ベースのデータ構造400を論理名前空間で維持し、各リダイレクタは、その接続ベースのデータ構造を物理名前空間420で維持している。
一般に、MUP230が作成ファイル要求を受信し、CSC前処理ハンドラ226を呼び出すと、CSC機構221は、論理接続データ構造400および共有ファイルベース構造410〜420を作成する。ファイルオブジェクト413は、I/Oマネージャ206(図2)によって作成されることに注意されたい。さらに、サーバーは、クライアント側キャッシュ機構がその後処理ハンドラ227を介して検出するクライアント側キャッシュを使用不可にすることができることに注意されたい。
CSCの論理接続データ構造400は、例えば、論理的サーバー名、CSC装置オブジェクト、CSCステータスフラグ、接続状態、およびスカベンジャマネージャを含めてサーバーの抽象を含むサーバー呼出しコンテキスト401を含む。(少なくとも1つの)ネットルート構造402はそれぞれ、共有名、共有タイプ、CSC属性、アクセス権、オープンの数などを含む共有の抽象を含む。ネットルート構造の(少なくとも1つの)ビュー(VNetRoot)403はそれぞれ、セキュリティコンテキスト、およびユーザーセッション情報を含む共有のユーザーのビューの抽象を含む。
図4に示すように、共有データ構造は、ファイル制御ブロック410を、少なくとも1つのサーバー側オープンコンテキスト411、および少なくとも1つのファイルオブジェクト拡張データ構造412とともに含む。ファイル制御ブロック410は、本質的にファイルの抽象を備え、サイズデータ、タイムスタンプデータ、キャッシュマップなどのファイルの情報を含む。サーバー側オープンコンテキスト411は、サーバーに送信されたオープンの抽象、つまり所望され共有されるアクセス権を備えるサーバーファイルハンドルを含む。CSC機構221は、この状況ではサーバーと似ており、例えばCSCストア215内のファイルへのハンドルがこの構造内に維持される。ファイルオブジェクト拡張データ構造412は、ファイルオブジェクト413に関連する情報を含む。
図4にも示すように、システムがオンラインであり、クライアント側キャッシュが実行可能である場合、これらのデータ構造410〜413は、CSC機構211とパスを主張したリダイレクタとの間で共有される。その結果、ファイルI/O要求は、以下に示す状況に基づいて、CSC機構221またはファイルのパスを主張したリダイレクタのいずれかによって実行することができる。
図2のアーキテクチャに対応する一実装形態では、作成要求がMUP230に到達したとき、MUP230は、CSC機構221の前処理ハンドラ226(エントリポイント)を呼び出す。CSC機構221は、作成要求で発行されたファイルオブジェクトの論理接続データ構造(サーバー呼出しコンテキスト401サーバー接続構造、ネットルート構造402、およびユーザーごと共有VNetRoot構造403)を見つけようと試みる。見つからなかった場合、CSC機構221は、例えばRDBSS232を介してこれらの構造を作成する。接続がオフラインであることがわかっている場合、CSC前処理ハンドラ226は、成功ステータス(または該当する場合はエラー)を戻し、そうでない場合は、「さらに処理が必要」ステータスを戻し、これによってMUP230は、DFS代理プロバイダの前処理を呼び出し、次いでリダイレクタ223〜225のうちの1つまたは複数を呼び出してパスを開始しようと試みる。
パスが正常に開始すると(接続はオンライン)、接続ベースの物理構造420が適切なリダイレクタで確立され、ハンドルがファイルから使用可能になる。MUP230は、CSC後処理ハンドラ227を呼び出す。これは、FCBの物理的ネットルートを見ることによってファイル拡張子、サイズ、およびパスのキャッシュフラグを取得することができる。この情報を取得すると、例えばこのファイルにおいてキャッシュが実行可能であることを共有が示す場合(ファイルがキャッシュ可能な共有である、または、WebDAVの場合のように、キャッシュが常にオンであることをリダイレクタが示す場合)、CSC機構221は、(その後処理において)このファイルオブジェクトを所有するかどうかを判定することができる。実行可能な場合、CSC機構221は、所有権を主張し、このファイルオブジェクトによって表されるオープンインスタンス410〜412についてのファイルデータ構造を完成させる。共有がキャッシュ不可とマークされている場合、CSC機構221は、ファイルオブジェクトからそれ自体を切り離し、任意のCSCデータ構造をクリーンアップすることができ、その後このファイルオブジェクトに対する操作は表示されない。図5に、こうしたクライアント側キャッシュ使用不可動作モードの場合の残りのデータ構造の概略を示している。接続データ構造がキャッシュ不可なパスである場合でも、CSC機構221は、ある程度の時間接続データ構造を維持する。それに対し、クライアント側キャッシュは使用可能であり、しかし接続がこのパスに関してオフラインである場合、図6に概略を示すように、物理的接続のデータ構造は存在しない。
サーバーは、(ロック機構などを介して)このファイルのファイル操作は、他に指示があるまで、例えばサーバーがロックのタイプを変更するまで、クライアント側キャッシュによって処理すべきであることを示すことができることに注意されたい。その後のファイルに対するI/O操作は、他に通知があるまで、例えば他のユーザーがファイルへのアクセスを要求しているため、サーバーがロック(便宜的ロック(opportunistic lock)、すなわちoplock)のタイプを変更するまで、オフラインで実行される。
図7〜13のフロー図に関連して本発明の動作の例を参照すると、図7は、図2のアーキテクチャの例における、MUP230、CSC、およびDFS代理プロパティ(それぞれ221および222)、およびリダイレクタ223〜225の間の概略的な制御フローを示している。ステップ700で示し、上述したように、作成要求時、MUP230は、第1の代理プロバイダ、この例ではCSC機構221を選択し、ステップ702によって前呼出し順序を論理的に追跡し、ステップ704で選択されたプロバイダの前処理ハンドラを呼び出す。作成要求に対するCSC前処理ハンドラ226操作について、図9との関連で以下で概説する。呼び出された代理プロバイダは、ステップ706で「さらに処理が必要」ステータスと検出されるのではなく、「成功」または「エラー」ステータスで要求を完了させない限り、MUP230は、呼び出される代理プロバイダがなくなるまで、ステップ708および710(ステップ702に戻る)を経て他の代理プロバイダ、この例ではDFS代理プロバイダ222のみを呼び出す。CSC機構221が(例えば接続状態データ250(図2)によって)接続がオフラインであることを検出する状況では、図4に示すようなデータ構造では、CSC機構221は、ファイルI/O作成要求をオフラインで処理し、次いでさらに処理が必要以外のステータス、つまり成功またはエラーを戻し、その結果ネットワーク関連の構成要素にアクセスする必要がなくなる。
オンライン(未知の接続状態)状況では、代理プロバイダへの前処理呼出しの後、ステップ708は、リダイレクタの呼出しを表すステップ712に分岐する。ファイル作成/オープン要求時、上述したように、この作成のためのパスが前もって主張され、それによってMUP230がどのリダイレクタを呼び出すかをわかっていない限り、パスを主張するものを探し出すために複数のリダイレクタが呼び出されることに注意されたい。読取り操作または書込み操作に向けられるものを含めて、そのパスに関連するその後のI/O要求時、MUP230は、そのパスを前もって主張した、またはそれを作成/オープン要求の一部として主張したリダイレクタ、この例ではDAVリダイレクタ225を呼び出す。
図8は、前処理呼出し、およびリダイレクタの任意の呼出しに続く、MUP230による代理プロバイダの後処理ハンドラの呼出しを表す。ステップ800で、MUP230は、前処理呼出し順序で最後に呼び出された代理プロバイダ、この(オンラインの)例ではDFS代理プロバイダ222を選択し、ステップ802でそれを呼び出す。ステップ804および806は、前処理呼出し順の逆の順序による他の代理プロバイダの後処理呼出しの繰返しを表す。この例では、呼び出されるべき残っている唯一の代理プロバイダがCSC機構221である。作成要求に対するCSC後処理ハンドラ227操作について、図10に関連して以下で概説する。オフライン状況で、CSC前処理ハンドラ226のみが呼び出された状態でステップ708はステップ712に分岐し、それによってステップ802は、CSC後処理ハンドラ227を呼び出すが、ステップ804で呼び出すべき他の代理プロバイダがないと検出されることに注意されたい。
図9は、作成要求に応答してMUP230によって呼び出されたときのCSC前処理ハンドラ226の操作を表す。ステップ900で開始し、CSC前処理は、図4に関連して上述したように、論理構造400を見つける、または作成する。ステップ902は、ファイルオブジェクト413に関連する共有構造410〜412(図4)の折りたたみまたは作成を表す。他のサーバーファイルと同様に、同じファイルに向けられる任意の作成/オープン要求は、ステップ904で表すように、例えばその後のオープン要求がサーバーに送信されることなくこのオープン要求上で折りたたまれるように、適切な順序で保持(同期)されることに注意されたい。ステップ906は、接続がオフラインであることがわかっているかどうかをテストする。このイベントでは、利用可能なCSCストア215のみが存在し、ネットワークリソースを関与させる必要はなく、それによって前処理ハンドラがステップ908に分岐して、成功(またはエラー)を戻す。そうでない場合、前処理ハンドラは、ステップ910に分岐して「さらに処理が必要」ステータスを戻し、その結果ネットワーク関連の構成要素(DFSおよびリダイレクタ)に連絡し、上述したようにオンラインまたはオフライン状態が確立される。
オンラインまたはオフラインは、ファイルの作成/オープン要求の処理時にファイルごとに確立されることに注意されたい。オフライン接続は、後述するように、他の作成要求から既知である場合はCSC前処理で決定され、CSC前処理中未知の場合は、リダイレクタが呼び出されたときに何が起こったかに基づいてCSC後処理で決定される。例えば、リダイレクタがパスを主張し、構造を作成し、ネットワークエラーを戻さなかった場合、オンライン接続が確立される。そうでない場合、オフラインが確立される。一実装形態では、ファイルの作成時に決定されたオフライン/オンラインのステータスは、その後のI/O要求中の実際の接続状態に関係なく(クローズし、再度オープンするまで)変わらない。したがって、後述するように、ネットワークはファイル作成/オープン時にはオンラインであったが、ファイルが開いている間にオフラインになった場合でさえ、MUP230は、要求を引き続きそのパスのためのリダイレクタに渡す。バッファリングサービスおよび/またはクライアント側キャッシュのため、リダイレクタが実際に切断されたサーバーとの接続を要求されない限り、こうしたその後の要求の処理におけるエラーはない。あるいは、ネットワークはファイル作成/オープン時にはオフラインであったが、ファイルが開いている間にオンラインになった場合、クライアント側前処理はまるでオフラインであるかのように引き続き要求を処理するが、その理由の1つとしてMUP230がDFSを関与させておらず、このファイルにはMUP230に知られているリダイレクタがないためである。
図10は、オフラインの場合は前処理呼出しの直後、または接続状態が未知であった場合はリダイレクタ(および他の代理プロバイダ)が呼び出された後、作成要求に応答してMUP230によって呼び出されたときのCSC後処理ハンドラ227の操作を表す。図10には示していないが、リダイレクタを(少なくとも1つ)関与させた後、このファイルのクライアント側キャッシュがサーバーによって使用不可にされている場合、CSC機構221は本質的に、後処理によりそれ自体を以降のファイルに向けられる呼出しにおいて取り除く。
ステップ1000で開始し、CSC後処理ハンドラ227は、例えばCSCストア215内のファイル用にローカルファイルシステムによって戻されたような、クライアント側キャッシュファイル用のハンドルを作成する。上述したように、ファイル構造の1つは、サーバー側オープンコンテキスト411(図4)を含み、ステップ1002で、CSC後処理ハンドラ227はハンドルをここに格納する、つまりCSC後処理ハンドラ227は、物理パスではなく論理パスを表すローカルキャッシュのハンドルを格納する。ステップ1004で、構造は、例えば適切な構造に入れられる様々なデータなど、このファイル用に完成される。ステップ1006は、(図9のステップ904で)保持されている他の作成のうちのいずれかをリリースすることを表す。
CSC後処理227が呼び出されたとき、CSC後処理ハンドラ227は、オフライン状況を示すリダイレクタ関連のエラーを探すことに注意されたい。これは、前処理ハンドラ226が接続がオンラインであるかオフラインであるかを知らなかった場合を扱う。このため、CSC後処理227は、例えばデータ構造内で物理的接続情報を探す、および/または他の代理プロバイダまたはリダイレクタからの完了ステータスを探すことによって接続が現在オンラインであることがわかるかどうかを探すことができる。接続エラーがある場合、例えばどのリダイレクタもパスを主張しなかった場合、後処理ハンドラは、このファイルでは状態をオフラインに移行させ、つまりCSC後処理227は、データ構造で状態をオフラインに移行させ、その結果その後の要求は、後述するように、CSC前処理ハンドラによって(リダイレクタの関与なしに)オフラインで完了する。言い換えれば、オフラインへの移行状況に続いて、その後のI/O要求はCSC代理プロバイダのプロセスハンドラ226によって完了され(かつCSCはさらに処理が必要以外のステータスを戻し)、その結果MUP230は、要求をリダイレクタに送信しない(任意のイベントではMUP230には知られていないことがある)。
ステップ1008は、接続がオフラインであるかどうかのテストを表す。これは前もって知られていることも知られていないこともある。オフラインの場合、ステップ1010が実行される。ステップ1010は、オフラインへの移行を行うことを表す。これは、例えば存在し得る任意の物理的接続ベースのデータ構造をクリーンアップために必要となり得る。オンラインの場合、ステップ1012が実行される。ステップ1012は、パスを主張したリダイレクタではなく、CSC機構221への参照でFCB410のディスパッチテーブル416を上書きすることを表す。
より詳細には、図11〜13に関連して後述するように、本発明のアーキテクチャでは、RDBSS232およびリダイレクタがともに動作する方法に対するほんのわずかの変更によってプロトコル独立型クライアント側キャッシュを達成している。例えばRDBSS232およびリダイレクタ構成要素は実質的に、例えばリダイレクタはパスを主張し、RDBSS232を呼び出して必要なデータがメモリにローカルにキャッシュされたかどうかを調べるなど、以前と同様に働く。また、RDBSS232は本質的に、例えば要求通りに構造を作成し、キャッシュマネージャを呼び出して適切なときに書込みをキャッシュし、または読取り要求を満たすために要求されたデータをキャッシュするかどうかを調べ、キャッシュする場合はデータをもって戻るなど、以前と同様に動作する。しかし、後述するように、例えばI/O要求を満たすためにRDBSS232がファイルデータを必要とし、データがメモリ内RAMキャッシュ244にないときに、キャッシュマネージャ240/メモリマネージャ242は読取りIRPを生成する。しかし、この読取りIRPがRDBSS232に到達すると、データを取得するために制御をリダイレクタに渡すのではなく、ディスパッチテーブルエントリの上書きによってRDBSS232にCSC機構221を呼び出させ、したがってCSC機構221に、CSCストア215を使用してこの要求を満たす機会を与える。このように、CSC機構221は、リダイレクタのネットワークプロトコルに関係なく、RDBSS232とパスを主張したリダイレクタとの間の制御フローに透過的に関与する。
図11〜図13は、特にクライアント側キャッシュが許容されているときに、読取り要求をインターセプトするためにCSC機構221が透過的に挿入される方法について示している。簡潔にするために、図11〜13は、読取りキャッシュが許容されていないときを含めて他の動作状態を表していない。代わりにこの状態は、次のように表される。つまり、CSCストア215からの任意の読取りの前に、CSC機構221は、ファイルのバッファ状態を知っている必要がある。というのは、読取りキャッシュが許容されていないようなバッファ状態(例えば一実装形態では、バッファ状態はOPLOCK_LEVEL NONEの同等である)の場合、CSC機構221は、CSCストア215からデータを戻さず、代わりに読取り要求を下にあるプロバイダに移動させるためである。一実装形態のバッファ状態情報は、FCBでFCB_STATE_READCACHING_ENABLEDフラグをチェックすることによって取得することができる。
ステップ1100で、MUP230がI/Oマネージャ206から要求、例えばIRPを受信したときに全読取り要求処理が開始する。ステップ1102で、MUP230は、CSC前処理ハンドラ226を呼び出し、ステップ1104によるテストでオンラインとされると、その結果ステップ1106で「さらに処理が必要ステータス」が戻される。システムがオフラインである場合、CSC前処理ハンドラ226は、図11においてステップ1104がステップ1112へ分岐することで表すように、要求を処理することに注意されたい。
オンライン状態での読取り要求の場合、ステップ1106でCSC前処理ハンドラ226がさらに処理が必要ステータスを戻した場合、ステップ1108で、MUP230がDFS前処理を呼び出して、例えばファイルI/O操作を記録するなど、そのDFS前処理操作のいずれかを行う。この呼出しの後、ステップ1110で、MUP230は、この特定のファイルのために以前パスを主張したリダイレクタ(例えば符号225)を呼び出す。
CSC前処理(オフライン)またはリダイレクタ(オンライン)が要求を有しているかどうかに関わらず、ステップ1112でRDBSS232が呼び出され、本質的に、例えば前の読取りまたは書込み要求のために、必要なデータがメモリ内RAMキャッシュ244にあるかどうかを判定する。データがメモリにローカルに存在していない場合(キャッシュミスが起こる)、後述するように、バッファリングサービス(キャッシュマネージャ240/メモリマネージャ242など)は、一般に別のエンティティにデータを取得させるために、ページングI/Oフラグが設定された状態で第2のIRPを生成する。したがってRDBSS232は、例えばページングI/Oフラグ設定などによって、IRPがキャッシュミス状態によって生成されたかどうかをチェックする必要がある。そうである場合、見つからなかったときに再度IRPを発行することになる(本質的に無限ループとなる)ため、RDBSS232は、以前行ったことを繰り返し、キャッシュマネージャを呼び出して同じデータをもう一度探してはならないことを意味するからである。代わりに、RDBSS232はコールアウトして、データを他から取り出す必要がある。ステップ1114にこのテストを表している。ファイルは、バッファ付きI/Oを許可しないようにして開くことができることに注意されたい。このイベントでは、データは、同様にキャッシュされない。また、ステップ1114は、この状態を検出し、それに応じてステップ1118に分岐することができる。簡潔にするために、他に特記事項がある場合を除いて、この例は、バッファ付きI/Oとの関連で説明する。
この例では、この時点で、IRPがI/Oマネージャ206によって生成され、したがってステップ1114がステップ1116に分岐してキャッシュマネージャ240を呼び出す。キャッシュマネージャ240は、メモリマネージャ242と連動してメモリ内RAMキャッシュ244内で要求されたデータを探す。図12のステップ1200で表すように、キャッシュメモリ240/メモリマネージャ242はキャッシュヒットまたはキャッシュミスがあるかどうかについて決定を行い、データをバッファに入れ(ステップ1202)、キャッシュヒットではRDBSS232に成功を戻し(ステップ1212)、またはキャッシュミスでは、ステップ1204に表すように、第2のIRPを生成する。第1のIRPによるキャッシュヒットでは、RDBSS232は、ステップ1240に表すように、また図13に関連して後述するように、この(第1の)IRPを完了する。キャッシュミスでは、ステップ1204で第2のIRPが生成され、第1のIRP同様、図11のステップ1100でMUP230で受信される。
図11に戻って、ステップ1100で第2のIRPが受信されると、上述したように他のステップ(1102〜1112など)が実行され、最終的に、この場合もまたオフラインであるかオンラインであるかに関係なくステップ1114に到達する。ただし、このときのステップ1114は、読取りのためのこの(第2の)IRPのページングのI/Oフラグを検出する。
本発明の一態様によれば、上述したように、オンライン時、ファイル作成/オープン要求の場合のCSC後処理では、CSC後処理ハンドラ227は、ステップ1118で表すように、RDBSS232がこの状況でDAVリダイレクタ225ではなくCSC機構221を呼び出すように、ファイル制御ブロック410(図4)のディスパッチテーブル416内のリダイレクタポインタを前もって上書きしている。このことによってCSC機構221は、まずDAVリダイレクタ225がサーバーにデータを要求する代わりに、CSCストア215内で要求されたデータを探す機会を得る。これはRDBSS232には透過であり、単にファイル制御ブロックのディスパッチテーブル416内のポインタデータに基づいてCSC機構221が呼び出されることに注意されたい。このように、CSC機構221は、本質的にリダイレクタから見ればRDBSS232への拡張のように動作し、さらにRDBSS232から見れば適切なリダイレクタとしても動作し、しかし本質的に両方から透過である。さらに、オフラインの場合、CSC前処理ハンドラ226は、RDBSS232を呼び出し(リダイレクタは関与していない)、したがってRDBSS232は、ステップ1118でCSC前処理ハンドラ226にコールバックする。したがって、オンラインの場合でも、オフラインの場合でも、CSC機構221のコードが呼び出される。
このように、キャッシュミスでは、図12のステップ1220が実行される。これは、CSC機構221がそのCSCストア215に要求されたデータがあるかどうかをチェックすることを表す。要求されたデータは、ファイルが疎でない限りそこに存在し、したがってステップ1220は、ファイルが疎であるかどうかに関するテストを含むことができる(あるいは疎である場合、ステップ1220は要求されたデータが偶然存在しているかどうかについてテストすることができる)ことに注意されたい。存在する場合、CSC機構221はRDBSS232がロ―カルメモリから取得できなかったデータを取り出し、ステップ1222で、例えばIRPに関連するバッファにデータを入れ、ステップ1222で表すように、RDBSS232に成功ステータスを提供することなどによって呼出しに応答してデータを戻すので、CSC機構221は、RDBSS232から見るとリダイレクタのように働く。RDBSS232は、ステップ1240で表すように、また図13に関連して後述するように、この第2のIRPを完了させる(イニシエータ(例えば後述するようにステップ1206でのキャッシュマネージャ240/メモリマネージャ242)に戻る)。
ステップ1220で、CSC機構221が要求されたデータにアクセスできなかった場合、オンラインでは、CSC機構221は、リダイレクタ(符号225など)にサーバーからデータを取得するよう要求することができる。しかし、ステップ1224でオフラインであると検出された場合、ステップ1234で、CSC機構221は、RDBSS232にエラー(例えばネットワークが切断されているなど)を戻す必要がある。これは、以前オンラインであったが切断された場合に任意のリダイレクタが戻すエラーに似ており、この場合もまたCSC機構221は、RDBSS232から見るとリダイレクタをエミュレートすることに注意されたい。このためCSC機構221は、ステップ1226でまるでRDBSS232であったかのようにDAVリダイレクタ225を呼び出す。次いでステップ1228で表すように、DAVリダイレクタ225は、適切なサーバーと通信して要求されたデータを取得しようと試みる。ステップ1230では、読取りが成功した場合、データはリダイレクタによってバッファ(IRPに関連するバッファ)に入れられ、リダイレクタは、成功をCSC機構221に戻し(まるでCSC機構221がRDBSS232であったかのように)、それによってCSC機構221は、ステップ1232でCSCストアにデータをキャッシュし、成功ステータスをRDBSS232に提供してステップ1240でIRPを完了する。読取りが成功しなかった場合、CSC機構221がキャッシュすべきものはなく、したがってエラーステータスのみがリダイレクタによってCSC機構221に戻され、CSC機構221からRDBSS232に戻される。
したがって、ステップ1240に従って、完了したIRP(完了が成功であろうと不成功であろうと、また第1のIRPであろうと第2のIRPであろうと)は、ドライバスタックを上方向に逆戻りし、MUP230に到達する。しかし、IRPが移動するスタック順は、接続がオンラインであるかオフラインであるかに応じて異なる。この時点で、オフライン/オンラインの実際のテストはないが、ステップ1300は、概念上、オフライン/オンラインに応じてIRPがたどるスタックを通る2つの可能なパスを表す。例えば、オンラインの場合、ステップ1302および1308で表すように、IRPはRDBSS232からリダイレクタを経由してMUP230に移動する。リダイレクタが単にIRPを通ってMUP230に移動することに注意されたい。
一方オフラインの場合、MUPは、CSC前処理226のみを呼び出し、CSC前処理がRDBSS232を呼び出している。したがってIRPは、ステップ1304によって表すように、CSC前処理226に戻される。次いでステップ1306および1308で表すように、CSC前処理226は、ステータスは完了(またはエラー)をMUPに戻す。このように、特に、MUP230は、図7との関連で上述したように、リダイレクタを呼び出さない。
ステップ1310は、図7および図8に関連して上述したように、代理プロバイダの後処理の呼出しを開始するためのMUP230によるステータスのテストを表す。ステータスが成功(またはエラー)である場合、これは一般に図7のステップ706から図8への分岐に相当するが、図13のこの例では、唯一の他の代理プロバイダがDFS代理プロバイダ222である。したがって、オンライン時、MUP230は、ステップ1312でDFS代理プロバイダ222の後処理ハンドラを呼び出し、次いでステップ1314でCSC後処理ハンドラ227を呼び出し、ステップ1316で要求を完了させる。そうではなくオフライン時では、MUPは、CSC後処理ハンドラ227のみを呼び出す。MUPは、ステップ1310でオンライン/オフラインを実際にテストする必要はないことに注意されたい。というのは、このテストは、後処理呼出しスタックに固有である、つまりコールバックするものがCSC後処理のみであるとき、本質的に図8のステップ806に対応することに注意されたい。
次いでMUP230は、ステップ1316で表すように要求を完了させる。しかし、IRPが戻されるところは、IRPがI/Oマネージャ206によって起動された第1のIRPであるか、キャッシュミスによって起動された第2のIRPであるかに依存する。IRPが第1のIRPである場合は、I/Oマネージャ206に送信され、アプリケーションプログラムの読取り要求に応答してそこからデータが戻される。IRPがステップ1204で生成された第2のIRPである場合、この第2のIRPは、キャッシュマネージャ240/メモリマネージャ242、つまり、ステップ1206でそれを生成したエンティティに戻る。
ステップ1206は、第2のIRP(キャッシュミス状態)で作成された読取り要求が成功したかどうかのテストを表す。成功しなかった場合、エラーは、ステップ1240および図13で関連して上述したように、アプリケーションプログラムからのAPI呼出しに応答して第1のIRPでI/Oマネージャ206に戻される(ステップ1208)。読取りが成功であった場合、代わりにステップ1210が実行される。これは、キャッシュメモリ240/メモリマネージャ242がメモリ内RAMキャッシュ244を第2のIRP読取り要求によってバッファに入れられたデータで満たすことを表す。次いで、ステップ1240および図13に関連して上述したように、データバッファがいっぱいになった状態で第1のIRPがI/Oマネージャ206に(さらにそこからアプリケーションプログラムに)戻される。
このように、RDBSS232およびリダイレクタは、それぞれから見ると読取り要求について以前と同じように動作し、さらにCSC機構221は、メモリ内キャッシュがデータを有していないときに読取り要求を満たすためにそれ自体を制御フローに透過的に挿入する。メモリ内RAMキャッシュ244がデータを有しているとき(キャッシュヒット)、ステップ1210で、データは第2のIRPを介して最初にメモリ内RAMキャッシュ244に入り、したがってCSCストア215から取得されているか、上述したようにステップ1232でCSC機構221によって(リダイレクタから)すでに格納されているため、CSC機構221は、データをそのストア215に追加する必要がないことに注意されたい。したがってこのデータをCSCストア215に再度コピーする必要はない。
クライアント側キャッシュが実行可能であるときの書込み要求について考えてみると、書込み要求は、キャッシュマネージャ240/メモリマネージャ242が最終的にメモリ内RAMキャッシュ244内のデータを変化させることを除いて、読取り要求とかなり似ている。変更されたメモリ内RAMキャッシュ244(例えばページごとに変更されたとみなされたかどうか)は、その変更された(ダーティになった)ページを、後述するように、様々な方法でCSCストア215および/またはサーバーにフラッシュさせる。メモリ内RAMキャッシュ244内の書込み要求に関するデータを変更するために、変更するデータの各ページ(ページの一部分のみが変更される場合でも)は、メモリ内RAMキャッシュ244内にある必要がある。したがって、本明細書に記載した実装形態の例では、書込み要求についてのキャッシュミスでは、(例えばステップ1204の読取り要求の場合のように)第2のIRPを生成することによってまず必要なデータがキャッシュに読み込まれる。
一般に、バッファ付きI/O(キャッシュマネージャ240を使用)の場合、書込みおよび読取りには図11〜13のフロー図が適用されるが、これらのページが最初にキャッシュマネージャ240にあったものであろうと、必要なページが上述した読取り用の第2のIRPを介してキャッシュマネージャ240にフォルトされる(読み込まれる)必要があった場合であろうと、バッファをいっぱいにしてそれを戻す代わりに、書き込むべきデータのいっぱいになったバッファは、キャッシュマネージャ240内の適切なページを変更する。バッファなしI/Oの場合、RDBSS232は、キャッシュマネージャ240を呼び出さなことを知っており(例えば作成時にFCBにある情報に基づいて)、代わりに、オンライン時は例えばディスパッチテーブルを介してCSC機構211を呼び出し、またはオンライン時はCSC前処理に戻ることに注意されたい。したがって、バッファなしI/Oの書込みは本質的に、第1のIRPで図11のステップ1114を介してステップ1118に分岐し、これは第2のページングI/O IRPと類似している。
CSC機構221が実際の書込み要求(単に対応する書込み要求に対してメモリ内RAMキャッシュ244を満たすためにキャッシュミス時に生成された読取り要求ではない)に関与している、例えばバッファなしI/Oなどの場合、またはキャッシュがフラッシュされるとき、書込み操作は、ライトスルーキャッシュ(write−through cache)として働くCSC機構221によって処理され得る。一般に、ライトスルーキャッシュでは、データは最初にサーバーへの書込みが試行され、成功した場合、CSC機構221は、コピーをその永続ストア215に書き込む。例えば、書込みキャッシュが使用不可である、またはファイルが疎である場合、CSC機構221は、書込み要求を直接リダイレクタに送信し、要求がリダイレクタによって正常に完了した場合、次いでコピーをそのCSCストア215に書き込むことによってCSC機構221によってデータを保存することができる。エラーがリダイレクタから戻された場合、CSC機構221は、オフラインへの移行を試行し、成功した場合、オフラインで要求を完了する。
一代替では、CSC機構221は代わりに、最初にサーバーに行くことなく書込みをキャッシュすることによって、ライトバックキャッシュ(write−back cache)として働くことができる。ライトバックキャッシュは、サーバーによって制御されることに注意されたい。つまり書込みキャッシュがサーバーによって許可されると、CSC機構221は、ファイルハンドルが閉じるまで、またはファイルのoplock(ライトバックキャッシュ特権を許可)がサーバーによってブレークされるまで、書込みをキャッシュする。このため、書込みキャッシュが許容され、ファイルが疎でない場合、CSC機構221は、要求されたデータをCSCストア215に書き込み、成功(または不成功の場合はエラー)ステータスを呼出し元に戻す。CSC機構221は、すべての書込みが実行される前に、ファイルのバッファ状態を決定することに注意されたい。バッファ状態がライトバックキャッシュを許容した場合、CSC機構221は、上述したように、データをその永続キャッシュ215に書き込み、書込み状態(通常は成功)を戻す。しかし、書込みをキャッシュすべきではない、例えばサーバーがOPLOCK_LEVEL_IIレベル以下でoplockを設定しているようなバッファ状態の場合、上記で概説したように、CSC機構221は、書込みをキャッシュせず、代わりに書込み要求を下にあるリダイレクタに移動させる。バッファ状態情報は、FCBのFCB_STATE_WRITECACHING_ENABLEDフラグをチェックすることによって取得することができる。
ファイルを閉じるとき、クローズ要求が、上述した一般的なやり方でRDBSS232を介してキャッシュマネージャ240に到達する。メモリ内RAMキャッシュ244中のデータをフラッシュする必要がある場合、例えば、メモリ内RAMキャッシュ244にこのクローズされたファイルについての少なくとも1つのダーティページがある場合、キャッシュマネージャ240/メモリは、少なくとも1つのページングI/O書込み要求(IRPまたはIRPS)を生成し、それぞれは、上述したのと同じ一般的なやり方で、例えばRDBSS232が各書込みIRPを受信したときにRDBSS232からの呼出しを介してCSC機構211に到達する。次いでCSC機構211は、このファイルのために受信された各IRPに基づいてCSCストア215に書き込む。
サーバーにライトバックするために、一実装形態では、クローズ要求がCSC機構211に達すると、CSC機構211は、このファイルに対する前の書込み要求からキャッシュされた任意のデータがあるかどうかをチェックする。データがあり、サーバーがオンラインの場合、CSC機構211は、書込み要求を適切なリダイレクタに渡すことによって修正されたデータ(例えばダーティページ)を有するセクションをサーバーに送り返す。キャッシュされたデータがこのようにサーバーに押し戻された後、CSC機構211はクローズ要求をリダイレクタに送信する。リダイレクタがクローズ要求を完了すると、CSC前処理ハンドラ226は、サーバーからタイムスタンプを取得するために問合せを行い、それをキャッシュされたファイルに設定し、キャッシュファイルハンドルを閉じ、MUP230に戻る。したがって書込みは、ファイルが閉じられるまでキャッシュすることができる。ファイルが閉じられた時点でファイルがこのように同期される。ファイルへのリモートハンドルがない場合、例えば、このファイルに関連する接続がオフラインであるとき、クローズ要求のみがローカルに実行されることに注意されたい。後で同期を実行することができる。
容易に理解できるように、既存のアプリケーションプログラムは、変更を加えることなく本発明で動作することができ、以前のようにファイルI/O要求を送信することができる。しかし、他のアプリケーションプログラムは、クライアント側キャッシュを認識し得る。このようなCSC認識アプリケーションは、例えばCSC関連APIを使用してファイルのグループ分けを制御し、いくつかのファイルが常に確実にCSCストア215に存在する(ピンされる)ようにし、同期周波数を制御し、他のCSCの特徴にアクセスすることによってユーザー体験全体を向上させる。
さらに、一実装形態では、CSC機構221は、可用性、コスト、速度などのネットワーク接続状態の特徴を認識し得る。理解できるように、クライアント側キャッシュ、同期、およびネットワーク接続の他の側面は、所与の時に現在のネットワーク接続の特徴によって制御することができる。
上記の詳細な説明から理解できるように、プロトコル独立型クライアント側キャッシュを透過的に提供する方法およびシステムが提供されている。この方法およびシステムは、既存のリダイレクタアーキテクチャに合い、オフライン時および/またはオンライン時に一貫性があるようにファイルへのアクセスを提供する。
本発明は、様々な変更および代替構成の余地があるが、その実施形態の例をいくつか図面に示しており、上記で詳述してきた。しかし、本発明を開示した特定の形態に限定する意図はなく、逆に、本発明は、すべての変更、代替構成、および本発明の趣旨および範囲内に含まれる均等物をカバーするものとすることを理解されたい。
本発明を組み込むことができるコンピュータシステムの例を表すブロック図である。 本発明の一態様に従ってクライアント側キャッシュの態様を実施する構成要素を表す概略ブロック図である。 本発明の一態様に従ってクライアント側キャッシュおよびサーバーへのリダイレクションを実施する構成要素を表す概略ブロック図である。 本発明の一態様に従って、クライアント側キャッシュがネットワークオンライン状態で実行可能なときに、クライアント側キャッシュを実施するデータ構造を表す概略ブロック図である。 本発明の一態様に従って、クライアント側キャッシュが使用不可であるときに、ネットワークを介してネットワークファイル関連要求を処理するデータ構造を表す概略ブロック図である。 本発明の一態様に従って、ネットワークオフライン状態で動作しているときにクライアント側キャッシュを実施するデータ構造を表す概略ブロック図である。 本発明の一態様に従って、前処理呼出しで、クライアント側キャッシュ機構(代理プロバイダ)を含む、登録されている代理プロバイダを呼び出すロジックの例を表す概略フロー図である。 本発明の一態様に従って、後処理呼出しで、クライアント側キャッシュ代理プロバイダを含む、登録されている代理プロバイダを呼び出すロジックの例を表す概略フロー図である。 本発明の一態様に従って、クライアント側キャッシュ機構の前処理ハンドラで作成呼出しを処理するロジックの例を表す概略フロー図である。 本発明の一態様に従って、クライアント側キャッシュ代理プロバイダ後処理ハンドラで作成呼出しを処理するロジックの例を表す概略フロー図である。 本発明の一態様に従って、読取り要求を処理するロジックの例を表す概略フロー図である。 本発明の一態様に従って、読取り要求を処理するロジックの例を表す概略フロー図である。 本発明の一態様に従って、読取り要求を処理するロジックの例を表す概略フロー図である。
符号の説明
100 コンピューティングシステム環境
110 コンピュータ
120 処理ユニット
121 システムバス
130 システムメモリ
131 読取専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 BIOS
134 オペレーティングシステム
135 ファイルシステム
136 アプリケーションプログラム
137 他のプログラムモジュール
138 プログラムデータ
140 インターフェイス
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 インターフェイス
151 磁気ディスクドライブ
152 リムーバブル不揮発性磁気ディスク
155 光ディスクドライブ
156 リムーバブル不揮発性光ディスク
160 ユーザー入力インターフェイス
161 ポインティング装置
162 キーボード
163 マイクロフォン
164 タブレット(電子デジタイザ)
170 ネットワークインターフェイスまたはアダプタ
171 ローカルエリアネットワーク(LAN)
172 モデム
173 広域エリアネットワーク(WAN)
180 リモートコンピュータ
181 メモリ記憶装置
185 リモートアプリケーションプログラム
190 ビデオインターフェイス
191 モニタ
194 出力周辺インターフェイス
195 スピーカー
196 プリンタ
200 アーキテクチャ
202 ユーザーモードアプリケーションプログラム
204 アプリケーションプログラミングインターフェイス(API)層
206 I/Oマネージャ
210 DFSネットワークプロバイダ
211 SMBネットワークプロバイダ
212 NFSネットワークプロバイダ
213 DAVネットワークプロバイダ
215 CSCストア
216 MPR
218 DFS代理プロバイダ
221 クライアント側キャッシュ(CSC)機構
222 DFS代理プロバイダ
223 SMBリダイレクタ
224 NFSリダイレクタ
225 DAVリダイレクタ
226 前処理ハンドラ
227 後処理ハンドラ
230 MUP
232 リダイレクトされたバッファシステム
240 キャッシュマネージャ
242 メモリマネージャ
244 メモリ内RAMキャッシュ
250 接続状態
301 ネットワークトランスポート層
311 SMBサーバー
312 DAVサーバー
313 NFSサーバー
400 論理接続ベースのデータ構造
401 サーバー呼出しコンテキスト
402 ネットルート構造
403 ネットルート構造のビュー
410 ファイル制御ブロック
411 サーバー側オープンコンテキスト
412 ファイルオブジェクト拡張
413 ファイルオブジェクト
416 ディスパッチテーブル
420 物理接続ベースのデータ構造

Claims (80)

  1. コンピューティング環境において、プログラムモジュールをコンピュータが実行することによって、サーバーのタイプに応じた統一的なオフライン経験を提供する方法であって、
    前記プログラムモジュールは、前記コンピュータに、
    サーバー上でネットワークファイルを作成する、または開くためのI/O要求を、多重プロバイダが受信すること、
    論理名前空間による前記ネットワークファイルのコピーへのパスを要求するクライアント側キャッシュ前処理を前記多重プロバイダが呼び出すこと、
    物理名前空間による前記ネットワークファイルのコピーへのパスを要求するリダイレクタであって、バッファリングサービスが前記リダイレクタにコールバックできるように前記ネットワークファイルに関連するリダイレクタ情報を提供する前記リダイレクタを前記多重プロバイダが前記I/O要求に基づいて呼び出すこと、および
    前記バッファリングサービスがクライアント側キャッシュ機構にコールバックするように前記ネットワークファイルに関連する前記リダイレクタ情報を変更することを含めて、物理名前空間による前記パスを要求した前記リダイレクタと前記バッファリングサービスとに対して通信する情報をキャッシュするクライアント側キャッシュ機構を設定するクライアント側キャッシュ後処理を前記多重プロバイダが呼び出すこと
    を含む方法を実行させることを特徴とする方法。
  2. 前記クライアント側キャッシュ前処理は、論理名前空間による前記ネットワークファイルの前記コピーに関連する複数のデータ構造を作成することを特徴とする請求項1に記載の方法。
  3. 前記クライアント側キャッシュ前処理は、前記ネットワークファイルを表すファイルオブジェクトに関連する複数の共有データ構造を作成することを特徴とする請求項1に記載の方法。
  4. 前記共有データ構造の1つは、ファイル制御ブロックを備え、前記ネットワークファイルに関連する前記リダイレクタ情報は、前記クライアント側キャッシュ機構へのポインタを備えるために、前記ファイル制御ブロックで維持され、前記クライアント側キャッシュ後処理によって前記ファイル制御ブロックで変更されるポインタを備えることを特徴とする請求項1に記載の方法。
  5. 前記リダイレクタは、前記サーバー上の前記ネットワークファイルに関連する複数のデータ構造を作成することを特徴とする請求項1に記載の方法。
  6. 前記リダイレクタ情報を変更する前の前記ネットワークファイルに関連する前記リダイレクタ情報を保存して、その結果前記クライアント側キャッシュ機構が前記リダイレクタを呼び出すことができるようにすることをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記ネットワークファイルからのデータの読取りのためのI/O読取り要求を受信すること、前記I/O読取り要求を前記リダイレクタに提供すること、およびメモリキャッシュ内で要求されたデータを探すキャッシュ/メモリマネージャ構成要素を含み、データが見つかった場合は前記読取り要求を完了し、見つからなかった場合は前記クライアント側キャッシュ機構を呼び出す前記バッファリングサービスを前記リダイレクタから呼び出すことをさらに含むことを特徴とする請求項1に記載の方法。
  8. 前記クライアント側キャッシュ機構を介して前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供することをさらに含むことを特徴とする請求項7に記載の方法。
  9. 前記クライアント側キャッシュ機構は、クライアント側キャッシュストア内で前記要求されたデータをシークし、見つからなかった場合は、サーバーに前記要求されたデータを要求するためにリダイレクタを呼び出すことを特徴とする請求項7に記載の方法。
  10. リダイレクタは前記データを見つけ、前記クライアント側キャッシュ機構は、前記バッファリングサービスの前記クライアント側キャッシュ機構の呼出しに応答してデータを前記バッファリングサービスに戻すことを特徴とする請求項9に記載の方法。
  11. 前記読取り要求を前記リダイレクタに提供する前に前記クライアント側キャッシュ前処理を呼び出すことをさらに含むことを特徴とする請求項7に記載の方法。
  12. 前記クライアント側キャッシュ機構を呼び出すことは、前記バッファリングサービスは前記要求されたデータを前記メモリキャッシュからシークする必要はないことを示す情報を含む第2の読取り要求を発行することを含むことを特徴とする請求項7に記載の方法。
  13. 前記バッファリングサービスの前記キャッシュ/メモリマネージャ構成要素は、前記第2読取り要求を発行し、前記バッファリングサービスは前記メモリキャッシュから前記要求されたデータをシークする必要はないことを示す前記情報は、前記第2の読取り要求に関連するフラグを含むことを特徴とする請求項12に記載の方法。
  14. 前記クライアント側キャッシュ機構を呼び出すことは、前記バッファリングサービスで前記第2の読取り要求を受信すること、前記バッファリングサービスは前記メモリキャッシュから前記要求されたデータをシークする必要がないという前記情報から認識すること、および前記クライアント側キャッシュ後処理によって変更された前記ネットワークファイルに関連する前記情報に基づいて前記クライアント側キャッシュ機構を呼び出すことをさらに含むことを特徴とする請求項12に記載の方法。
  15. 前記クライアント側キャッシュ機構を介して前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供し、前記バッファリングサービスは前記第2の要求を完了することをさらに含むことを特徴とする請求項12に記載の方法。
  16. 前記第2の要求を完了することは、前記戻されたデータに基づいて前記第1の要求を完了する前記キャッシュ/メモリマネージャ構成要素にデータを戻すことを含むことを特徴とする請求項15に記載の方法。
  17. 前記キャッシュ/メモリマネージャ構成要素は、前記第2の要求から取得された前記要求されたデータを前記メモリキャッシュにさらに追加することを特徴とする請求項16に記載の方法。
  18. 前記ネットワークファイルへのデータの書込みのための第1のI/O読取り要求を受信すること、前記書込み要求を前記リダイレクタに提供すること、およびメモリキャッシュ内に上書きすべき要求されたデータを探すキャッシュ/メモリマネージャ構成要素を含み、データが見つかった場合は前記書込み要求を完了し、見つからなかった場合は前記クライアント側キャッシュ機構を呼び出す前記バッファリングサービスを前記リダイレクタから呼び出すことをさらに含むことを特徴とする請求項1に記載の方法。
  19. 前記クライアント側キャッシュ機構を介して上書きすべき前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供することをさらに含むことを特徴とする請求項18に記載の方法。
  20. 前記クライアント側キャッシュ機構は、クライアント側キャッシュストア内で前記要求されたデータをシークし、見つからなかった場合は、前記サーバーに前記要求されたデータを要求するためにリダイレクタを呼び出すことを特徴とする請求項18に記載の方法。
  21. リダイレクタは前記データを見つけ、前記クライアント側キャッシュ機構は、前記バッファリングサービスの前記クライアント側キャッシュ機構の呼出しに応答してデータを前記バッファリングサービスに戻すことを特徴とする請求項20に記載の方法。
  22. 前記書込み要求を前記リダイレクタに提供する前に前記クライアント側キャッシュ前処理を呼び出すことをさらに含むことを特徴とする請求項18に記載の方法。
  23. 前記クライアント側キャッシュ機構を呼び出すことは、前記バッファリングサービスは前記要求されたデータを前記メモリキャッシュからシークする必要はないことを示す情報を含む、読取り要求に相当する第2の要求を発行することを含むことを特徴とする請求項18に記載の方法。
  24. 前記バッファリングサービスの前記キャッシュ/メモリマネージャ構成要素は、前記第2の要求を発行し、前記バッファリングサービスは前記メモリキャッシュから前記要求されたデータをシークする必要はないことを示す前記情報は、前記第2の要求に関連するフラグを含むことを特徴とする請求項23に記載の方法。
  25. 前記クライアント側キャッシュ機構を呼び出すことは、前記バッファリングサービスで前記第2の要求を受信すること、前記バッファリングサービスは前記メモリキャッシュから前記要求されたデータをシークする必要がないことを前記情報から認識すること、および前記クライアント側キャッシュ後処理によって変更された前記ネットワークファイルに関連する前記情報に基づいて前記クライアント側キャッシュ機構を呼び出すことをさらに含むことを特徴とする請求項23に記載の方法。
  26. 前記クライアント側キャッシュ機構を介して前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供し、前記バッファリングサービスは前記第2の要求を完了することをさらに含むことを特徴とする請求項23に記載の方法。
  27. 前記第2の要求を完了することは、前記戻されたデータに基づいて前記第1の要求を完了する前記キャッシュ/メモリマネージャ構成要素にデータを戻すことを含むことを特徴とする請求項26に記載の方法。
  28. 前記キャッシュ/メモリマネージャ構成要素は、前記第2の要求から取得された要求されたデータを前記メモリキャッシュに書き込むこと、および前記書込み要求に基づいて前記要求されたデータを変更することを含めて、前記第1の要求を完了させることを特徴とする請求項27に記載の方法。
  29. クローズ要求を受信することをさらに含むことを特徴とする請求項18に記載の方法。
  30. 前記クローズ要求に応答して、クライアント側キャッシュストア内の対応するデータに関連して変更される前記メモリキャッシュ内の任意のデータを前記クライアント側キャッシュ機構にフラッシュして、前記クライアント側キャッシュストアに書き込むことをさらに含むことを特徴とする請求項29に記載の方法。
  31. 前記任意のデータをフラッシュすることは書込み要求を発行することを含むことを特徴とする請求項30に記載の方法。
  32. 前記クライアント側キャッシュストア内の前記ネットワークファイルに対応するファイルのコピーを閉じることをさらに含むことを特徴とする請求項29に記載の方法。
  33. 前記クローズ要求に応答して、前記ネットワークファイルの対応するデータに関連して変更される前記クライアント側キャッシュストア内の任意のデ―タを前記サーバーにフラッシュして前記ネットワークファイルに書き込むために前記リダイレクタを呼び出すことをさらに含むことを特徴とする請求項29に記載の方法。
  34. 請求項1に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読記憶媒体。
  35. コンピュータシステムにおいて、プログラムモジュールを前記コンピュータシステムが実行することによって、サーバーのタイプに応じた統一的なオフライン経験を提供する方法であって、
    前記プログラムモジュールは、前記コンピュータシステムに、
    ネットワークファイルのデータに対応するI/O要求を多重プロバイダが受信すること、
    前記コンピュータシステムがネットワークに接続されているかどうかを決定するクライアント側キャッシュ前処理を前記多重プロバイダが呼び出し、前記コンピュータシステムが前記ネットワークに接続されている場合は、前記クライアント側キャッシュ前処理が、前記要求を満たすためにさらに処理が必要であることを示すステータス値を前記多重プロバイダに戻すこと、および
    前記ステータス値をクライアント側キャッシュ機構が評価し、ステータス値がさらに処理が必要であることを示す場合、
    a)前記ネットワークファイルを含むサーバーに関連するリダイレクタを前記多重プロバイダが前記I/O要求に基づいて呼び出すこと、
    b)前記リダイレクタがバッファリングサービスを呼び出して、前記バッファリングサービスが前記要求を前記コンピュータシステム上のメモリバッファ内で処理することができるかどうかを決定すること、
    c)前記バッファリングサービスが前記要求に対応するファイルデータが前記コンピュータシステム上のメモリキャッシュにバッファされるかどうかを決定すること、
    1)バッファに入れられる場合、前記バッファリングサービスが前記I/O要求を完了すること、
    2)バッファに入れられない場合、前記要求に対応するデータがクライアント側キャッシュストア内に存在するかどうかを決定する前記クライアント側キャッシュ機構を前記バッファリングサービスが呼び出し、データが存在する場合は、前記クライアント側キャッシュストアから前記要求に対応するデータを前記クライアント側キャッシュ機構が取得し、データが存在しない場合は、前記クライアント側キャッシュ機構が前記サーバーを介して前記要求を処理するよう前記リダイレクタに要求すること
    を含む方法を実行させることを特徴とする方法。
  36. 前記I/O要求を受信することは、読取り要求を受信することを含むことを特徴とする請求項35に記載の方法。
  37. 前記I/O要求を受信することは、書込み要求を受信することを含むことを特徴とする請求項35に記載の方法。
  38. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムはネットワークに接続されていると判断し、前記I/O要求を受信することは、読取り要求を受信することを含み、前記バッファリングサービスは、前記要求されたデータが前記コンピュータシステム上の前記メモリキャッシュにバッファされることを決定し、前記読取り要求を完了し、前記読取り要求に応答してバッファを前記メモリキャッシュからのデータで満たすことを含めて前記データにアクセスできるようにすることをさらに含むことを特徴とする請求項35に記載の方法。
  39. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムはネットワークに接続されていると判断し、前記I/O要求を受信することは、読取り要求を受信することを含み、前記バッファリングサービスは、前記要求されたデータが前記コンピュータシステム上の前記メモリキャッシュにバッファされないことを決定し、前記クライアント側キャッシュ機構を呼び出し、前記クライアント側キャッシュ機構は、前記クライアント側キャッシュストアから前記要求に対応する前記データを取得し、データを前記バッファリングサービスに戻すことを特徴とする請求項35に記載の方法。
  40. 前記クライアント側キャッシュ機構は第2の読取り要求を生成することを含むことを特徴とする請求項35に記載の方法。
  41. 前記第2の読取り要求は、前記バッファリングサービスのキャッシュ/メモリマネージャ構成要素によって生成され、前記バッファリングサービスのリダイレクトされたバッファサブシステムによって受信され、前記クライアント側キャッシュ機構を呼び出すことは、前記第2の要求を処理するために前記バッファサブシステムから前記クライアント側キャッシュ機構を呼び出すことをさらに含むことを特徴とする請求項40に記載の方法。
  42. 前記リダイレクトされたバッファサブシステムから前記クライアント側キャッシュ機構を呼び出すことは、前記ネットワークファイルに関連するディスパッチテーブル内のポインタを読み取ることを含むことを特徴とする請求項41に記載の方法。
  43. 前記クライアント側キャッシュ機構は、実行されると前記クライアント側キャッシュ機構を呼び出すように前記ディスパッチテーブル内の前記ポインタを上書きするコードを含むことを特徴とする請求項42に記載の方法。
  44. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムはネットワークに接続されていると判断し、前記I/O要求を受信することは、書込み要求を受信することを含み、前記バッファリングサービスは、前記要求されたデータが前記コンピュータシステム上の前記メモリキャッシュにバッファされることを決定し、前記メモリキャッシュにデータを書き込むことを含めて前記書込み要求を完了することを特徴とする請求項35に記載の方法。
  45. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムは前記ネットワークに接続されていると判断し、前記I/O要求を受信することは、書込み要求を受信することを含み、前記バッファリングサービスは、前記要求されたデータが前記コンピュータシステム上の前記メモリキャッシュにバッファされないことを決定し、前記クライアントキャッシュ機構を呼び出し、前記クライアント側キャッシュ機構は、前記クライアントキャッシュストアから前記要求に対応する前記データを取得し、前記対応するデータを戻し、前記バッファリングサービスは、前記クライアント側キャッシュ機構から、および前記書込み要求に関連する書込みデータからデータを前記メモリキャッシュに書き込むことによって前記要求を完了することを特徴とする請求項35に記載の方法。
  46. 前記クライアント側キャッシュ機構を呼び出すことは読取り要求を生成することを含むことを特徴とする請求項35に記載の方法。
  47. 前記読取り要求は、前記バッファリングサービスのキャッシュ/メモリマネージャ構成要素によって生成され、前記バッファリングサービスのリダイレクトされたバッファサブシステムによって受信され、前記クライアント側キャッシュ機構を呼び出すことは、前記バッファサブシステムから前記クライアント側キャッシュ機構を呼び出すことをさらに含むことを特徴とする請求項46に記載の方法。
  48. 前記リダイレクトされたバッファサブシステムから前記クライアント側キャッシュ機構を呼び出すことは、前記ネットワークファイルに関連するディスパッチテーブル内のポインタを読み取ることを含むことを特徴とする請求項47に記載の方法。
  49. 前記クライアント側キャッシュ機構は、実行されると前記クライアント側キャッシュ機構を呼び出すように前記ディスパッチテーブル内の前記ポインタを上書きするコードを含むことを特徴とする請求項48に記載の方法。
  50. 前記バッファリングサービスが前記リダイレクタの代わりに前記クライアント側キャッシュ機構を呼び出すように、前記ネットワークファイルに関連するデータ構造内のリダイレクタ情報を上書きすることをさらに含むことを特徴とする請求項35に記載の方法。
  51. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムがネットワークに接続されていないと判断し、前記要求に対応するデータはメモリキャッシュ内に存在するかどうかを決定し、データが存在する場合は、前記メモリキャッシュ内の前記対応するデータを介して前記要求を処理することをさらに含むことを特徴とする請求項35に記載の方法。
  52. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムがネットワークに接続されていないと判断し、前記要求されたデータに対応するデータはクライアント側キャッシュストア内に存在するかどうかを決定し、データが存在する場合は、前記クライアント側キャッシュストア内の前記対応するデータを介して前記要求を処理することをさらに含むことを特徴とする請求項35に記載の方法。
  53. 前記クライアント側キャッシュ前処理は、前記コンピュータシステムがネットワークに接続されていないと判断し、前記要求に対応するデータはメモリキャッシュ内に存在するかどうかを決定し、データが存在しない場合は、前記クライアント側キャッシュ機構を呼び出して前記要求に対応するデータが前記クライアント側キャッシュストア内に存在するかどうかを決定することをさらに含むことを特徴とする請求項35に記載の方法。
  54. 請求項35に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読記憶媒体。
  55. コンピューティング環境において、プログラムモジュールをコンピュータが実行することによって、サーバーのタイプに応じた統一的なオフライン経験を提供するシステムであって、
    別のリダイレクタのプロトコルに対してそれぞれ別個のプロトコルに対応する複数のリダイレクタと、
    前記リダイレクタのそれぞれと通信するように接続されている、ネットワークファイルのファイルデータをバッファに入れるバッファリングサービスと、
    クライアント側キャッシュ前処理ハンドラおよびクライアント側キャッシュ後処理ハンドラを含むクライアント側キャッシュ機構と、
    ネットワークファイルのための作成要求を受信し、前記作成要求に基づいて、前記クライアント側キャッシュ前処理ハンドラ、前記複数のリダイレクタのうちの少なくとも1つ、および前記クライアント側キャッシュ後処理ハンドラを呼び出す多重プロバイダと
    を備えることを特徴とするシステム。
  56. 前記クライアント側キャッシュ前処理ハンドラは、データ構造を論理名前空間による前記ネットワークファイルのコピーに関連付け、前記クライアント側キャッシュ後処理ハンドラは、前記ネットワークファイルに関して前記ネットワーク接続ステータスがオフラインであることを決定し、前記オフラインのネットワーク接続ステータスに基づいて前記データ構造を構成することを特徴とする請求項55に記載のシステム。
  57. 前記多重プロバイダは、前記ネットワークファイルのためのその後のI/O要求を受信し、前記データ構造から前記ネットワーク接続ステータスがオフラインであると判断する前記クライアント側キャッシュ前処理ハンドラを呼び出し、前記その後のI/O要求をローカルに満たそうと試みることを特徴とする請求項56に記載のシステム。
  58. 前記クライアント側キャッシュ前処理ハンドラは、前記その後のI/O要求を前記バッファリングサービスに提供することによって前記その後のI/O要求をローカルに満たそうと試みることを特徴とする請求項57に記載のシステム。
  59. 前記バッファリングサービスは、リダイレクトされたバッファサブシステムおよびメモリキャッシュを管理するキャッシュ/メモリマネージャ構成要素を備え、前記キャッシュ/メモリマネージャ構成要素は、前記その後のI/O要求に対応するデータが前記メモリキャッシュに存在するかどうかを決定し、その結果前記バッファリングサービスが前記その後のI/O要求を完了することができることを特徴とする請求項58に記載のシステム。
  60. 前記バッファリングサービスは、前記その後のI/O要求を直接満たすことができず、前記クライアント側キャッシュ機構を呼び出して前記その後のI/O要求に対応するデータが前記クライアント側キャッシュ機構に関連するオフラインストアに存在するかどうかを決定し、その結果前記クライアント側キャッシュ機構は前記データを提供して前記その後のI/O要求を完了することができることを特徴とする請求項58に記載のシステム。
  61. 前記バッファリングサービスは、リダイレクトされたバッファサブシステムおよびメモリキャッシュを管理するキャッシュ/メモリマネージャ構成要素を備え、前記キャッシュ/メモリマネージャ構成要素は、前記その後のI/O要求に対応するデータが前記メモリキャッシュに存在しないかどうかを決定し、ページングI/O読取り要求を発行することによって前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項60に記載のシステム。
  62. 前記リダイレクタされたバッファサブシステムは、前記ページングI/O要求を受信し、それに応答して前記ネットワークファイルに関連するディスパッチテーブル内のポインタに基づいてルーチンを呼び出すことを特徴とする請求項60に記載のシステム。
  63. 前記ディスパッチテーブル内の前記ポインタは、前記クライアント側キャッシュ機構のルーチンを示すことを特徴とする請求項62に記載のシステム。
  64. コンピューティング環境において、プログラムモジュールをコンピュータが実行することによって、サーバーのタイプに応じた統一的なオフライン経験を提供する方法であって、
    前記プログラムモジュールは、前記コンピュータに、
    サーバー上でネットワークファイルを作成する、または開くためのI/O要求を多重プロバイダが受信すること、
    論理名前空間による前記ネットワークファイルのコピーへのパスを要求し、データ構造および前記ネットワークファイルの前記コピーに対応するファイルベースのデータ構造に基づいて論理接続を作成または検索するクライアント側キャッシュ前処理を前記多重プロバイダが呼び出すこと、および
    a)クライアント側キャッシュ前処理によって接続がオフラインであることがわかっている場合、前記クライアント側キャッシュ前処理は、リダイレクタを呼び出すことなくクライアント側キャッシュ後処理が呼び出されるステータスを戻し、前記クライアント側キャッシュ後処理は、前記クライアント側キャッシュ後処理において前記その後のI/O要求がオフラインで処理されるように前記データ構造を準備すること、
    b)接続がオフラインであることがわかっていない場合、
    1)前記多重プロバイダが、少なくとも1つのリダイレクタが呼び出されるステータスを戻すこと、
    2)前記多重プロバイダが、前記I/O要求に基づいて少なくとも1つのリダイレクタを呼び出すこと、
    i)リダイレクタが物理名前空間による前記ネットワークファイルのコピーへの前記パスを要求しない場合、前記クライアントキャッシュ後処理においてその後のI/O要求が処理されるように前記データ構造を準備する前記クライアント側キャッシュ後処理を前記多重プロバイダが呼び出すこと、
    ii)対応するリダイレクタが物理名前空間による前記ネットワークファイルへのコピーへのパスを要求する場合、前記リダイレクタは、バッファリングサービスが前記リダイレクタをコールバックできるように前記ネットワークファイルに関連するリダイレクタ情報を提供し、前記多重プロバイダが前記クライアント側キャッシュ後処理を呼び出し、前記クライアント側キャッシュ後処理は、前記バッファリングサービスが前記クライアント側キャッシュ機構にコールバックするように、前記ネットワークファイルに関連する前記リダイレクタ情報を変更することを含めて、前記パスを要求した対応する前記リダイレクタと前記バッファリングサービスとに対して通信する情報をキャッシュするクライアント側キャッシュ機構を設定すること
    を含むことを特徴とする方法。
  65. 前記接続はオンラインであり、前記ネットワークファイルのデータのためのI/O要求を受信すること、前記I/O要求を前記リダイレクタに提供すること、およびメモリキャッシュ内で前記要求されたデータを探すキャッシュ/メモリマネージャ構成要素を含み、データが見つかった場合は前記要求を完了し、見つからなかった場合は前記クライアント側キャッシュ機構を呼び出す前記バッファリングサービスを前記リダイレクタから呼び出すことをさらに含むことを特徴とする請求項64に記載の方法。
  66. 前記クライアント側キャッシュ機構を介して前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供することをさらに含むことを特徴とする請求項65に記載の方法。
  67. 前記クライアント側キャッシュ機構は、クライアント側キャッシュストア内で前記要求されたデータをシークし、見つからなかった場合は、前記サーバーに前記要求されたデータを要求するために前記リダイレクタを呼び出すことを特徴とする請求項65に記載の方法。
  68. 前記リダイレクタは前記データを見つけ、前記クライアント側キャッシュは、前記バッファリングサービスの前記クライアント側キャッシュ機構の呼出しに応答してデータを前記バッファリングサービスに戻すことを特徴とする請求項67に記載の方法。
  69. 前記バッファリングサービスは、前記キャッシュ/メモリマネージャ構成要素によって生成される第2の要求を介して前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項65に記載の方法。
  70. 前記バッファリングサービスは、前記第2の要求を受信し、前記ネットワークファイルに関連するディスパッチテーブル内の情報を介して前記クライアント側キャッシュ機構を呼び出すことによって前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項69に記載の方法。
  71. 前記接続はオフラインであり、前記ネットワークファイルのデータのためのI/O要求を受信すること、前記I/O要求を前記クライアント側キャッシュ前処理に提供すること、前記クライアント側キャッシュ前処理からメモリキャッシュ内で前記要求されたデータを探すキャッシュ/メモリマネージャ構成要素を含む前記バッファリングサービスを呼び出すこと、およびデータが見つかった場合、前記バッファリングサービスは前記要求を完了し、データが見つからなかった場合、前記バッファリングサービスは前記クライアント側キャッシュ機構を呼び出すことをさらに含むことを特徴とする請求項64に記載の方法。
  72. 前記クライアント側キャッシュ機構を介して前記要求されたデータを取得すること、および前記クライアント側キャッシュ機構から前記要求されたデータを前記バッファリングサービスに提供することをさらに含むことを特徴とする請求項71に記載の方法。
  73. 前記バッファリングサービスは、前記キャッシュ/メモリマネージャ構成要素によって生成される第2の要求を介して前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項71に記載の方法。
  74. 前記バッファリングサービスは、前記第2の要求を受信し、前記ネットワークファイルに関連するディスパッチテーブル内の情報を介して前記クライアント側キャッシュ機構を呼び出すことによって前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項73に記載の方法。
  75. 請求項64に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読記憶媒体。
  76. コンピューティング環境において、プログラムモジュールをコンピュータシステムが実行することによって、サーバーのタイプに応じた統一的なオフライン経験を提供する方法であって、
    前記プログラムモジュールは、前記コンピュータシステムに、
    ネットワークファイルのデータに対応するI/O要求を多重プロバイダが受信すること、および
    前記ネットワークファイルに関するネットワーク接続がオフラインとして確立されているかどうかをクライアント側キャッシュ機構が決定すること、
    a)前記ネットワークファイルに関する前記接続がオフラインとして確立されている場合、リダイレクタがバッファリングサービスを呼び出して、前記バッファリングサービスが前記要求を前記コンピュータシステム上のメモリバッファ内で処理することができるかどうかを決定し、バッファに入れられる場合、前記バッファリングサービスが前記I/O要求を完了し、バッファに入れられない場合、前記バッファリングサービスが前記クライアント側キャッシュ機構を呼び出し、前記クライアント側キャッシュ機構は、前記要求に対応するデータがクライアント側キャッシュストア内に存在しているかどうかを決定し、前記データが存在している場合、前記バッファリングサービスが前記クライアント側キャッシュストアから前記要求に対応するデータを取得して前記I/O要求を完了すること、
    b)前記ネットワークファイルに関する前記接続がオフラインとして確立されていない場合、前記リダイレクタが前記バッファリングサービスを呼び出して、前記バッファリングサービスが前記要求を前記コンピュータシステム上のメモリバッファ内で処理することができるかどうかを決定するために、前記I/O要求に基づいて前記ネットワークファイルを含むサーバーに関連する前記リダイレクタを前記多重プロバイダが呼び出し、前記バッファリングサービスが前記要求に対応するファイルデータが前記コンピュータシステム上のメモリキャッシュ内にバッファされるかどうかを決定し、バッファに入れられる場合は、前記バッファリングサービスが前記I/O要求を完了し、バッファに入れられない場合は、前記要求に対応するデータがクライアント側キャッシュストアに存在するかどうかを決定するクライアント側キャッシュ機構を前記バッファリングサービスが呼び出し、データが存在する場合、前記クライアント側キャッシュストアから前記要求に対応するデータを前記クライアント側キャッシュ機構が取得し、データが存在しない場合は、前記クライアント側キャッシュ機構が前記サーバーを介して前記要求を処理するよう前記リダイレクタに要求すること
    を含むことを特徴とする方法。
  77. 前記バッファリングサービスは、前記バッファリングサービスの前記キャッシュ/メモリマネージャ構成要素によって生成される第2の要求を介して前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項76に記載の方法。
  78. 前記バッファリングサービスは、前記第2の要求を受信し、前記ネットワークファイルに関連するディスパッチテーブル内の情報を介して前記クライアント側キャッシュ機構を呼び出すことによって前記クライアント側キャッシュ機構を呼び出すことを特徴とする請求項77に記載の方法。
  79. 前記ネットワークファイルに関する前記ネットワーク接続が確立されるかどうかを決定することは、前記ネットワークファイルに関連するデータ構造を評価することを含むことを特徴とする請求項76に記載の方法。
  80. 請求項76に記載の方法を実行するコンピュータ実行可能命令を有することを特徴とするコンピュータ可読記憶媒体。
JP2004071768A 2003-03-12 2004-03-12 プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法 Expired - Fee Related JP4613023B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/387,972 US7349943B2 (en) 2003-03-12 2003-03-12 Protocol-independent client-side caching system and method

Publications (2)

Publication Number Publication Date
JP2004280826A JP2004280826A (ja) 2004-10-07
JP4613023B2 true JP4613023B2 (ja) 2011-01-12

Family

ID=32771622

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004071768A Expired - Fee Related JP4613023B2 (ja) 2003-03-12 2004-03-12 プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法

Country Status (5)

Country Link
US (1) US7349943B2 (ja)
EP (1) EP1457893A3 (ja)
JP (1) JP4613023B2 (ja)
KR (1) KR101109340B1 (ja)
CN (1) CN1531303B (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7739363B1 (en) * 2003-05-09 2010-06-15 Apple Inc. Configurable offline data store
US9083765B2 (en) * 2004-07-02 2015-07-14 Oracle International Corporation Systems and methods of offline processing
US8127024B2 (en) * 2004-10-29 2012-02-28 Oracle International Corporation Parameter passing in web based systems
DE602004028137D1 (de) * 2004-12-03 2010-08-26 Research In Motion Ltd Verfahren und Vorrichtung zum effizienten wiederholten Senden von Nachrichten mittels einer Nachrichten ID
CN1787511B (zh) * 2004-12-07 2010-07-21 联想(北京)有限公司 实现计算机离线应用的方法及系统
WO2006102295A2 (en) * 2005-03-18 2006-09-28 Cvt Ventures Llc Child-oriented computing facilities
US20080307339A1 (en) 2006-03-20 2008-12-11 Kidzui, Inc. Child-oriented computing system
US8135741B2 (en) * 2005-09-20 2012-03-13 Microsoft Corporation Modifying service provider context information to facilitate locating interceptor context information
US7937534B2 (en) * 2005-12-30 2011-05-03 Rajesh Sankaran Madukkarumukumana Performing direct cache access transactions based on a memory access data structure
US7836079B2 (en) * 2006-04-07 2010-11-16 Microsoft Corporation Virtual universal naming convention name space over local file system
US20080028033A1 (en) * 2006-07-28 2008-01-31 Kestrelink Corporation Network directory file stream cache and id lookup
US8868741B2 (en) 2008-03-03 2014-10-21 Leapfrog Enterprises, Inc. Method and apparatus for custodial monitoring, filtering, and approving of content
US7991734B2 (en) * 2008-03-07 2011-08-02 Microsoft Corporation Remote pointing
US8185566B2 (en) 2009-01-15 2012-05-22 Microsoft Corporation Client-based caching of remote files
US8898324B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
JP2012093826A (ja) * 2010-10-25 2012-05-17 Panasonic Corp 通信システム
US8463762B2 (en) * 2010-12-17 2013-06-11 Microsoft Corporation Volumes and file system in cluster shared volumes
US9152732B2 (en) 2011-11-02 2015-10-06 Microsoft Technology Licensing, Llc. Browser cache assist for accessing web-based content
GB2503452A (en) * 2012-06-26 2014-01-01 Nds Ltd Supplying a request for content together with a caching recommendation to cloud equipment
CN103840910A (zh) * 2012-11-22 2014-06-04 深圳市腾讯计算机系统有限公司 一种数据传输控制方法及装置
US20140222866A1 (en) * 2013-02-01 2014-08-07 Google Inc. Accessing objects in hosted storage
US8954679B2 (en) * 2013-02-12 2015-02-10 Facebook, Inc. Management of cached data based on user engagement
US20150032690A1 (en) * 2013-07-25 2015-01-29 Microsoft Corporation Virtual synchronization with on-demand data delivery
US9942352B2 (en) * 2014-10-07 2018-04-10 Sap Portals Israel Ltd. Method and system for a crowd service store
CN104519139B (zh) 2014-12-31 2018-10-30 华为技术有限公司 缓存方法、缓存边缘服务器、缓存核心服务器和缓存系統
US9986060B2 (en) 2015-03-30 2018-05-29 General Electric Company Persistent caching of map imagery and data
CN105897865B (zh) * 2016-03-29 2019-01-11 北京轻元科技有限公司 一种协议无关的网络文件服务管理系统和方法
US10721331B2 (en) * 2016-05-13 2020-07-21 ZenDesk, Inc. Using an integration service to facilitate interactions between software systems
US20190138236A1 (en) * 2017-11-09 2019-05-09 Dell Products, Lp System and Method to Reserve Persistent Memory Space in an NVDIMM for NVDIMM Namespace Support
CN114221995B (zh) * 2021-11-11 2024-04-09 中国建设银行股份有限公司 服务调用方法、装置及电子设备
US11909583B1 (en) 2022-09-09 2024-02-20 International Business Machines Corporation Predictive dynamic caching in edge devices when connectivity may be potentially lost

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003530646A (ja) * 2000-03-30 2003-10-14 マイクロソフト コーポレイション トランザクショナルファイルシステム
JP2003333076A (ja) * 2002-04-30 2003-11-21 Microsoft Corp ネットワークスタックをオフロードする方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0713183A3 (en) * 1994-11-18 1996-10-02 Microsoft Corp Network-independent shadow files
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US6604143B1 (en) * 1998-06-19 2003-08-05 Sun Microsystems, Inc. Scalable proxy servers with plug-in filters
US6757705B1 (en) * 1998-08-14 2004-06-29 Microsoft Corporation Method and system for client-side caching
US6553376B1 (en) 1998-11-18 2003-04-22 Infolibria, Inc. Efficient content server using request redirection
US6772225B1 (en) * 1999-09-30 2004-08-03 International Business Machines Corporation Policy enabled web caching
US6654748B1 (en) * 1999-12-07 2003-11-25 Rwd Technologies, Inc. Dynamic application browser and database for use therewith
CN1291747A (zh) * 2000-11-24 2001-04-18 李楠甍 高速缓存设备及其使用方法
US7437429B2 (en) 2001-02-13 2008-10-14 Microsoft Corporation System and method for providing transparent access to distributed authoring and versioning files including encrypted files
WO2002087235A1 (en) * 2001-04-19 2002-10-31 Vividon, Inc. System for applying metric to multimedia files over network
US20050091226A1 (en) * 2003-10-23 2005-04-28 Yun Lin Persistent caching directory level support

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003530646A (ja) * 2000-03-30 2003-10-14 マイクロソフト コーポレイション トランザクショナルファイルシステム
JP2003333076A (ja) * 2002-04-30 2003-11-21 Microsoft Corp ネットワークスタックをオフロードする方法

Also Published As

Publication number Publication date
EP1457893A3 (en) 2007-09-26
EP1457893A2 (en) 2004-09-15
KR20040081384A (ko) 2004-09-21
JP2004280826A (ja) 2004-10-07
KR101109340B1 (ko) 2012-08-23
CN1531303A (zh) 2004-09-22
US20040181576A1 (en) 2004-09-16
US7349943B2 (en) 2008-03-25
CN1531303B (zh) 2010-05-12

Similar Documents

Publication Publication Date Title
JP4613023B2 (ja) プロトコル独立型クライアント側キャッシュ(protocol−independentclient−sidecaching)システムおよび方法
US9076012B2 (en) Access requests with cache intentions
JP4317361B2 (ja) 原子ファイル検索のための方法及び装置
EP2317732B1 (en) Data communication protocol
US6385701B1 (en) Method, system and program products for sharing data between varied clients using token management
JP4297790B2 (ja) 物理的ストレージを抽象するプラグ可能なアーキテクチャを有するパーシステントなキーと値とのリポジトリ
US20030065796A1 (en) Enforcing uniform file-locking for diverse file-locking protocols
KR101036751B1 (ko) 데이터 통신 프로토콜
US20080244738A1 (en) Access control
US20080307138A1 (en) Method and system for locking resources in a distributed environment
JP3037924B2 (ja) マルチメディア・システムでデータストリームを効率的に転送するためのシステム及び方法
JPH0619771A (ja) 異種のクライアントによる共用ファイルのファイル管理機構
JP2007503658A (ja) 共有読み出し専用ファイルシステムにおけるウイルス検出及び警報
US7827194B2 (en) Access to shared disk device on storage area network
Borr Secureshare: Safe unix/windows file sharing through multiprotocol locking
JP4492569B2 (ja) ファイル操作制御装置、ファイル操作制御システム、ファイル操作制御方法及びファイル操作制御プログラム
KR101130475B1 (ko) 데이터 통신 프로토콜
US9934230B1 (en) Delegations for non-regular files
Adam Samba’s Way Toward SMB 3.0
Borr 2nd USENIX Windows NT Symposium [Technical Program]
Smith Protocol work melds storage methods.

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100903

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101012

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101018

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131022

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees