JPH07104808B2 - 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置 - Google Patents

設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置

Info

Publication number
JPH07104808B2
JPH07104808B2 JP2227905A JP22790590A JPH07104808B2 JP H07104808 B2 JPH07104808 B2 JP H07104808B2 JP 2227905 A JP2227905 A JP 2227905A JP 22790590 A JP22790590 A JP 22790590A JP H07104808 B2 JPH07104808 B2 JP H07104808B2
Authority
JP
Japan
Prior art keywords
file system
storage medium
file
system driver
volume
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 - Lifetime
Application number
JP2227905A
Other languages
English (en)
Other versions
JPH03171238A (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 JPH03171238A publication Critical patent/JPH03171238A/ja
Publication of JPH07104808B2 publication Critical patent/JPH07104808B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)
  • Information Transfer Between Computers (AREA)

Description

【発明の詳細な説明】 本明細書には、385個のフレームを含むマイクロフィッ
シュの4枚のシートからなる付録I(Appendix I)が含
まれている。
本発明はコンピュータ制御システムの分野に関し、より
詳しくは、コンピュータシステムを備えた装置間の通信
を行う方法及び手段に関する。
通常、コンピュータシステムは、中央処理装置、ランダ
ムアクセスメモリ、リードオンリメモリ、データ入力装
置、データ出力装置、フロッピディスク及び固定ディス
ク又はハードディスク等の種々の不揮発性データ記憶装
置等の種々の周辺装置を備えている。一般に、それぞれ
の装置間の通信は、コンピュータオペレーティングシス
テムにより制御される。よく知られた1つのコンピュー
タオペレーティングシステムとして、マイクロソフト社
(Microsoft Corporation)から市販されているMS−DOS
オペレーティングシステムがある。
MS−DOSオペレーティングシステムでは、単一のファイ
ルシステムが、周辺装置に記憶されたファイルの編成を
記載しかつ規定する。コンピュータシステム及びそれぞ
れの周辺装置の両者により認識されたフォーマット中の
データをコンピュータシステムが読取り又は書込みでき
るようにするには、データは、このファイルシステムに
従って編成されなくてはならない。例えば、MS−DOSオ
ペレーティングシステムに使用される従来のフロッピデ
ィスクを用いた周辺装置においては、フロッピディスク
のデータは、FAT(ファイル割当てテーブル(file allo
cation table)を用いていることから、このように命名
されている)ファイルシステムとして知られているファ
イルシステムに従って構成されている。FATファイルシ
ステムは、今日世界中で最も広範囲に使用されているフ
ァイルシステムの1つである。テープ記憶装置のような
周辺装置の他の形式のデータ記憶装置には、他のファイ
ルシステムを接続することもできる。
ファイルシステムにより、オペレーティングシステムの
カーネルとデバイス従属ドライバ(device dependant d
rivers)との間の通信を容易に行うことができる。ま
た、ファイルシステムは、オペレーティングシステムの
カーネルにより発せられた読取り及び書込みコマンド
(並びに、ファイルを開閉する機能)を、デバイスドラ
イバが認識できるフォームに変換することに応答するこ
とができる。
MS−DOSオペレーティングシステムを用いる場合には、
オペレーティングシステムは、コンピュータシステムに
用いらていれる特定の周辺装置に使用できる適合ファイ
ルシステムを構成しなければならない。一旦ファイルシ
ステムが構成されたならば、このファイルシステムは、
オペレーティングシステムが変更されない限りそのまま
であり、即ち変更されない。このため、一般に、広範囲
のプログラム作成努力と多大の消費時間とが要求され
る。また、コンピュータオペレーティングシステムにつ
いての広範囲の知識が必要であり、オペレーティングシ
ステムの詳細をアクセスできない人は、ファイルシステ
ムを容易に変更することができない。
また、従来のシステムにおいては、異種ファイルシステ
ム(foreign file systems)のファイルを収容している
ディスクメディアを、固有システム(native system)
に使用することはできない。例えば、多数の製造業者
(各製造業者は別々のファイルシステム構成に準拠して
いる)により多くのコンピュータシステムが多年に亘っ
て開発されている。現在のスタティックファイルシステ
ムの技術では、一般に、或る1つのシステムからのディ
スクメディアを別の形式のシステムで機能させることは
できない。コンピュータは、一層ポピュラーなものとな
っているため、あらゆる形式のコンピュータシステムの
間でファイルを共用できるようにすることの重要性が増
大している。事実上知られているあらゆるコンピュータ
システムからのディスクメディアを、単一のオペレーテ
ィング環境において自動的に認識しかつ読取ることがで
きるシステムは未だ存在しない。また、コンピュータオ
ペレーティングシステムのカーネルを変える必要なく、
有るシステムに付加(又は変更)できるファイルシステ
ムが未だ存在していない。
本発明は、コンピュータシステムに使用されるメディア
を自動的に識別しかつそのメディアを認識するファイル
システムを自動的かつダイナミックにマウントできる方
法及び手段に関する。本発明の好ましい実施例によれ
ば、省略時ファイルシステム(default file system)
を備えていて、リンクされたシーケンスに従ってファイ
ルシステムを編成するように構成されたコンピュータシ
ステムに、1つ以上のデータ記憶装置及び複数のファイ
ルシステムドライバを設けることができる。このコンピ
ュータシステムは、該コンピュータシステムの全ての周
辺装置を連続的にモニタリングしていて、周辺記憶装置
におけるメディアのあらゆる変化を検出するようになっ
ている。データ記憶装置のメディアが変更されるあらゆ
る場合、又は最初にコンピュータシステムがデータ記憶
装置にアクセスする場合には、ファイルシステムドライ
バのリストにおいて識別された最初のファイルシステム
ドライバがローディングされ、ローディングされたファ
イルシステムドライバによりボリューム識別子(volume
identifier)の位置が特定化されているメディアから
ボリューム識別子が読み取られる。メディアから読み取
られたこのボリューム識別子は、次に、ファイルシステ
ムドライバに関連している識別子と比較され、この識別
子とボリューム識別子とが一致するときにはファイルシ
ステムドライバがマウントされる。両識別子が一致しな
い場合には、ファイルシステムドライバのリンクされた
リストにおいて識別された次のファイルシステムドライ
バがローディングされる。
その後、このプロセスは、ファイルシステムドライバの
リンクされたリストにおける各ファイルシステムドライ
バが試験されるまで、又は一致が見出されるまで繰り返
される。一致が見出されない場合には、省略時ファイル
システムがマウントされる。
従って、本発明の目的は、コンピュータシステムが、多
数のメディア形式の全てを識別できるようにし、かつ適
正なファイルシステムをマウントしてそのメディアに使
用できるようにする方法及び手段を提供することにあ
る。
本発明の他の目的は、不確実メディアにファイルシステ
ムを自動的にマッピングする方法及び手段を提供するこ
とにある。
本発明の他の目的は、ユーザからのインタラクションな
しに、自動的に不確実メディアに適用できるコンピュー
タシステムを提供することにある。
本発明の他の目的は、オペレーティングシステムのカー
ネルを変更する必要なしに、ファイルシステムを変更で
き又はコンピュータオペレーティングシステムに付加で
きるようにコンピュータオペレーティングシステムを改
善することにある。
本発明の他の目的は、メディアのフォーマットのあらゆ
る従属性が適当なファイルシステム内に密閉(encapsul
ated)されている不確実なメディアにファイルシステム
を自動的にマッピングできる方法及び手段を提供するこ
とにある。
本発明の更に他の目的は、任意に設置できるファイルシ
ステムをコンピュータシステムに設けることができるよ
うにする方法及び手段を提供することにある。
本発明にこれらの目的及び他の目的は、添付図面を参照
して以下に述べる本発明の詳細な説明により明らかにな
るであろう。
第1図には、本発明の原理に従って構成されたコンピュ
ータシステム100が示されている。このコンピュータシ
ステム100は、中央処理装置即ちマイクロプロセッサ10
2、ランダムアクセスメモリ104、リードオンリメモリ10
6、マウス108及びキーボード110のような入力装置、デ
ィスプレイ112及びプリンタ114のような出力装置、フロ
ッピディスクドライブ116、ハードディスクドライブ12
0、CD−ROMドライブ122及びテープドライブ124等からな
る種々の不揮発性記憶装置を備えている。また、このコ
ンピュータシステム100は、ネットワーク126と通信でき
るようになっている。不揮発性記憶とは、装置の電源を
遮断してもデータが消去されないことをいう。
従来のシステムにおいては、オペレーティングシステム
は、各周辺装置が単一のメディア形ファイルシステムド
ライバのみと互換性をもつファイルシステムドライバに
よりスタティックに構成されている。指定のファイルシ
ステムドライブとの互換性のないドライブにメディアが
供給されると、メディアは首尾良くアクセスすることが
できない。以下に説明するように、本発明は、周辺装置
とは独立してかつメディアに関するデータのフォーマッ
ト又は位置についての条件を賦課することなくして、関
連するファイルシステムにメディアを自動的にマッピン
グする方法及び手段を提供するものである。例えば、フ
ロッピドライブユニット(フロッピディスクドライブ)
116は、多数のファイルシステムに従ってフォーマット
化されたボリューム(例えば、FATファイルシステムに
従ってフォーマット化されたボリューム128、よく知ら
れたHigh Sierraファイルシステムに従ってフォーマッ
ト化されたボリューム132、及びもう1つのファイルシ
ステムに従ってフォーマット化されたボリューム130)
に使用することができる。同様に、ハードディスク(ハ
ードディスクドライブ)120の種々の区分(パーティシ
ョン)は、ボリューム134、136、138として表した多数
のファイルシステムに従ってフォーマット化することが
できる。同様に、CD−ROMドライブ122及びテープシステ
ム(テープドライブ)124は、ボリューム140、142(こ
れらは、それぞれのファイルシステムに従ってフォーマ
ット化されている)に使用することができる。また、ネ
ットワーク126は、サーバ(該サーバは、それら自体の
ファイルシステムに従って作動する)を備えた任意の数
のネットワークに接続することができる。
コンピュータシステム100の作動(オペレーション)
は、良く知られた多数のオペレーティングシステムのう
ちの任意のオペレーティングシステムにより調整するこ
とができる。しかしながら、本発明は特に、マイクロソ
フト社により開発されたOS/2オペレーティングシステム
に使用するのに適している。本発明の操作環境の構成を
第1B図に示す。一般に、アプリケーション152は、カー
ネル154により処理されるファイルシステムのリクエス
トを発生する。次いで、カーネル154は、このリクエス
トを適当なファイルシステムドライバ(FSD)156〜170
に導く、任意のファイルシステムドライバを、多数のハ
ードウェア装置と協働させることができる。例えば、ボ
リューム172、174についてファイルシステム作動をそれ
ぞれ行う場合には、High Sierraファイルシステム156
は、CD−ROMプレーヤ(CD−ROMドライブ)122及びディ
スクドライブ116に使用することができる。同様に、FAT
ファイルシステム160及びHPFSファイルシステム162の両
者は、ボリューム176、178(これらの各々は、ハードデ
ィスク120にある)についてのファイルシステム作動を
行うのに使用することができる。また、ボリューム180
についてファイルシステム作動を行う場合には、ディス
クドライブ116にファイルシステムドライバを使用する
ことができる。従って、本発明によれば、ファイルシス
テムの形式及びフォーマットの如何に係わらず、適当な
ファイルシステムに不確実メディアを自動的にかつダイ
ナミックにマッピングする方法及び手段が提供される。
第2A図は、従来技術によるMS−DOSオペレーティングシ
ステムのファイルシステム構成を示すものである。MS−
DOSオペレーティングシステム200においては、オペレー
ティングシステムのカーネル204内にFATファイルシステ
ム202が埋設されている。このFATファイルシステム202
はオペレーティングシステムのカーネル204内に一体化
されているため、変更することは困難である。また、付
加的なファイルシステムが必要な場合には、オペレーテ
ィングシステムのカーネル204を書換えてそれらのファ
イルシステムに適合できるようにしなければならない。
本発明によれば、第2B図に示すシステム技術により上記
問題点を解決することができる。本発明のコンピュータ
システム100においても、OS/2カーネル252内には、FAT
ファイルシステム202が埋設されている。しかしなが
ら、本発明によれば、オペレーティングシステムのカー
ネル252に対して外部装置であるFATファイルシステムド
ライバ254、256、258をダイナミックに取付ける方法及
び手段が提供される。図面には、設置可能な3つのファ
イルシステムドライバを備えたシステム100が示されて
いるが、実際には、本発明は、ファイルシステムドライ
バの数に制限されることはない。
設置可能(installable)なファイルシステムドライバ
(file system driver,「FSD」)は、多くの点でデバイ
スドライバに類似している。FSDは、ダイナミックリン
クライブラリ(dynamic−link library、「DLL」、一般
には、SYS当はIFSエクステンションを備えている)のよ
うに構成されたファイルのディスク上に存在し、CONFI
G.SYSファイルにおけるIFS=ステートメント(statemen
ts)によるシステムの初期化中にローディングされる。
IFS=宣言(directives)は、それらが出合う順番で処
理され、また、デバイスドライバについてのDEVICE=文
(statements)の順番に対して敏感である。これによ
り、ユーザが、非標準デバイス用のデバイスドライバを
ローディングし、該デバイスのボリュームからファイル
システムドライバをローディングすること等が可能にな
る。一旦FSDが設置されかつ初期化されると、カーネル
は、ファイルの開放、読取り、書込み、シーク(seek
s)、閉鎖等についての論理的リクエスト(logical req
uest)の言語で、FSDと通信する。FSDは、ボリュームそ
れ自体に見出される制御構成及びテーブルを用いて、こ
れらのリクエストをファイルシステムヘルパ(File Sys
tem Helpers、FsHlps」)と呼ばれる特別なカーネルエ
ントリ点を呼び出すことができるセクタ読取り及び書込
み(sector reads and writes)用のリクエストに変換
する。カーネルは、セクタI/Oに対するデマンド(deman
ds)を適当なデバイスドライバに渡してその結果をFSD
に戻す。
ボリュームをFSDs(複数のFSD)に対応付けるべくオペ
レーティングシステムにより用いられる手順は、ダイナ
ミックボリュームマウンティング(dynamic volume mou
nting)と呼ばれ、次のように作動する。ボリュームが
最初にアクセスされるとき、或いは、直接アクセスにつ
いてボリュームがロックされ次いでアンロックされた
(例えばFORMATオペレーションにより)後に、オペレー
ティングシステムのカーネルは、FSDがこの情報を識別
するまで順次、ボリュームからFSDsの各々へ識別情報を
与える。FSDがボリュームをクレームすると、ボリュー
ムがマウントされ、ボリュームに対する全ての連続ファ
イルI/Oリクエストが、ボリュームをクレームしたFSDに
導かれる。
この構成は、従来技術にはない幾つかの利点を提供す
る。例えば、不確実メディアがコンピュータシステムに
与えられる場合に、コンピュータシステムは、このメデ
ィアを認識するファイルシステムドライバを位置付ける
べく利用可能なファイルシステムドライバを走査して、
これにより、メディアへのファイルシステムドライバの
自動マッピングを提供する。更に、オペレーティングシ
ステムのカーネルを変更する必要なしで、ファイルシス
テムドライバが更新される。更に、新しい形式の周辺装
置が開発されたときに、既存システムソフトウェアを乱
すことなく、適当なファイルシステムドライバがオペレ
ーティングシステムに付加され得る。
コンピュータシステム100のより詳細なダイアグラムが
第3図に示してある。コンピュータシステム100は、ア
プリケーションプログラム302とディスク装置304のよう
なデータ記憶装置との間の通信を行うことができるオペ
レーティングシステムのカーネル252を有している。こ
のコンピュータシステム100は、ファイルシステムドラ
イバ254〜258に関連して作動するデバイスドライバ306
を有している。図面には単一の周辺装置304を備えたコ
ンピュータシステム100が示されているが、本発明は、
任意の数の論理的又は物理的周辺装置と共に使用できる
ように構成されている。
作動に際し、アプリケーションプログラム302は、所望
の機能についてのエントリ点を呼び出すことにより、オ
ペレーティングシステムのカーネル252に論理的ファイ
ルリクエストを発行する。これらの機能には、ファイル
を開放すること(DosOpen)、ファイルを読取ること(D
osRead)、ファイルに書込むこと(Doswrite)等のリク
エストを含めることができる。オペレーティングシステ
ムのカーネル252は、これらのリクエストを、ファイル
を保持(ホールディング)する特定のボリュームについ
ての適当なファイルシステムドライバ254〜258に渡す。
次に、適当な設置可能なファイルシステムドライバが、
論理的ファイルリクエストを、指示されたメディアの論
理的セクタの読取り又は書込みのためのリクエストに変
換して、これらのリクエストを適当なデバイスドライバ
306に渡すべくオペレーティングシステムのカーネルの
ファイルシステムヘルパ308を呼出す。ファイルシステ
ムヘルパ(Fsh−lps)308については、以下により詳細
に説明する。
デバイスドライバ(ディスクドライバ)306は、オペレ
ーティングシステムのカーネルからの論理的セクタリク
エストを、特定の物理的ユニット(メディアのシリン
ダ、ヘッド及びセクタ)についてのリクエストに変形し
て、ディスクメディアとランダムアクセスメモリ310と
の間でデータを転送すべくディスク装置にコマンドを発
行する。
特に、特定のファイルシステムに物理的装置をマッピン
グすることについて以下に詳細に説明する。MS−DOS環
境においては、フロッピディスクはボリュームと称され
る。固定ディスク(又はハードディスク)は、多数のボ
リュームに区分され得る。この用語(terminology)
が、本発明においても適用される。簡単に云えば、コン
ピュータシステムが最初にブート(boot)されるとき、
ボリュームが最初にアクセスされるとき、又はコンピュ
ータシステムが、ディスク装置304内に不確実メディア
が存在することを決定するときにはいつでも、コンピュ
ータシステムは、ファイルシステムドライバのリンクさ
れたリストにおける最初のファイルシステムドライバを
試験(検査)する。もしファイルシステムドライバがデ
ィスク装置にロードされたボリュームを認識したならば
ファイルシステムドライバはマウント(装填)される。
そうでない場合には、コンピュータシステムは、メディ
アを認識するファイルシステムドライバが位置付けされ
るまで、利用できるファイルシステムドライバを連続的
にポール(ポーリング)する。もし関心のあるメディア
を認識する設置可能なファイルシステムドライバが見出
されない場合には、省略時ファイルシステムドライバが
マウントされる。本発明の好ましい実施例においては、
省略時ファイルシステムは、上記のFATファイルシステ
ムである。
不確実メディアは、幾つかの方法により検出することが
できる。ディスク装置には機械的なラッチ機構が設けら
れており、該ラッチ機構は、ディスクがディスク装置か
ら取り出されるとき又はディスク装置に装填されるとき
に作動する。一般にラッチ機構は、ドライブの次の作動
が、ドアが開放されたことを示すように機能する。デバ
イスドライバがこの表示(指示)を受け取ると、エラー
不確実メディア(ERROR_UNCERTAIN_MEDIA)がオペレー
ティングシステムに戻される。機械的なラッチ機構がな
いシステムにおいては、予め決められた時間間隔よりも
少ない時間間隔内にメディアを変更できないと考えられ
る。本発明の好ましい実施例においては、この(時間)
間隔は2秒であると考えられる。従って、予め決められ
た(時間)間隔以上について特定のボリュームがアクセ
スされない場合には、このメディアは不確実であると推
定される。
第4図は、FATファイルシステムのディスクフォーマッ
トのダイアグラムである。FATファイルシステムは、MS
−DOSオペレーティングシステムの初期から該MS−DOSオ
ペレーティングシステムに使用されている。FATファイ
ルシステムについての詳細な説明は、Duncan著、「アド
バンスMS DOSプログラミング(“Advance MS DOS Progr
amming")」(Microsoft Press社刊、1986、1988)に記
載されている。次に、FATファイルシステムの概略を説
明する。FATファイルシステムは、ファイル割当てテー
ブル(File Allocation Table)を中心題目としてい
る。各論理的ボリュームは、それ自体のFATと対応付け
られており、2つの重要な機能を供する。即ち、各論理
的ボリュームは、割当てユニット(allocation units)
のリンクされたリストの形態でボリューム上の各ファイ
ルについての割当て情報(allocation information)を
包含しており、そして各論理的ボリュームは、どの割当
てユニットには、生成又は拡大されているファイルへの
割当て(assignment)がないかということを示す。
FATファイルシステムに従ってディスクが書式化(フォ
ーマット化)されると、ブートセクタ(boot sector)
は、セクタゼロに書き込まれる。これは、1つまたはそ
れ以上のファイル割当てテーブルによって追尾られる。
ファイル割当てテーブルは、ルートディレクトリ(root
directory)によって追尾される。このルートディレ
クトリは、ボリュームファイルによって追尾される。ブ
ートセクタは、ブートパラメータブロック又はBPBと呼
ばれる、或る領域におけるボリュームに関する種々の記
述情報(descriptive information)、ドライブの数及
びボリュームI.D.のような情報、及びブートストラップ
ルーチン(bootstrap routine)を包含する。
ファイル割当てテーブルは、ディスク上の割当て可能な
クラスタ(これらのクラスタは、セクタを2乗したもの
である)に直接相当(対応)するフィールド(欄)に分
割される。一般に、これらのフィールドは、16ビットの
幅を有している。FATの最初の2つのフィールドは、保
留されている。最初の保留されたFATエンリーは、BPBで
も見出されるメディア記述バイト(media descriptor b
yte)のコピーを含む。リザーブされた残余のフィール
ドはOFFHを含む。残余のFATエントリ(または記入項
目)(FAT entries)には、それらの対応するディスク
クラスタ(corresponding disk clusters)の使用が記
述されている。ディレクトリの各ファイルのエントリ
(記入項目)は、そのファイルに割り当てられる最初の
クラスタの数を含み、それはFATへのエントリ点として
使用される。エントリ点から、各FATスロット(FAT slo
t)は、最初クラスタマークに出合うまで、ファイル内
の次のクラスタの番号を含む。また、FATファイルシス
テムは、読取りエラー等によるFATのセクタへのアクセ
スが失敗した場合に用いることができる最初のファイル
割当てテーブルの複製を維持するというオプションを提
供する。
ファイル割当てテーブルの後には、ルートディレクトリ
が続く。このルートディレクトリは、ファイル、他のデ
ィレクトリ、及びオプションとしてのボリュームラベル
を記述する32バイトのエントリ(記入項目)を含む。
ルートディレクトリの後の残余のボリュームは、クラス
タのプールとして見ることができるファイル領域として
知られており、各ファイル領域は1つ以上の論理的セク
タを含んでいる。各クラスタは、その現在の使用を記述
するFATにおいて対応しているエントリを有する。ここ
で、現在の使用とは、利用可能なこと、リザーブされて
いること、ファイルに割り当てられていること、又は使
用できないことである。
FATファイルシステムは、1Mb以下のボリュームで優れた
性能を提供する。しかしながら、ボリュームのサイズが
1Mbを超えると、FATファイルシステムの性能は急激に低
下する。このことは、容易に入手可能なハードディスク
のサイズが急激に増大しているため、ますます重要な問
題となっている。
ボリュームが1Mb以下の場合には、FATは、いつでもラン
ダムアクセスメモリ内に保持される程充分に小さく、従
って、ファイルのいずれの部分へも非常に高速なランダ
ムアクセスを許す。しかしながら、ハードディスク又は
固定ディスクに適用した場合には、FATはあまりにも大
きいのでメモリに保持できなくなり、かつ、ばらばらに
メモリ内にページ付けしなければならない。このため、
多くの余分なディスクヘッドの動きが必要になり、コン
ピュータシステムのスループットを低下する。また、デ
ィスクの空きスペース(free space)についての情報
が、FATの多数のセクタにわたって分散されるため、連
続的にファイルスペースを割り当てることは非実用的で
あり、ファイルが細分化され、更に、コンピュータシス
テムのスループットを低下する。また、ハードディスク
上での相対的に大きなクラスタの使用は、多くの無駄な
スペースを生ずる。
第5A図〜第5H図は、設置可能なファイルシステムの1つ
の場合のディスクフォーマットを示す一連のダイアグラ
ムである。このファイルシステムは、高性能ファイルシ
ステム(High performance file system、HPFS)と呼ば
れている。本発明の高性能ファイルシステムは、FATフ
ァイルシステムに伴う上記問題を解消でき、かつあらゆ
る形式のディスクメディアに優れた性能を提供する。第
5A図に示すように、HPFSボリュームは、予め定められた
FATパーティション形の側面に沿って固定ディスク上に
設けることができる。HPFSボリュームは、512バイトの
セクタサイズを用いており、2199Gb(232のセクタ)の
最大サイズを有している。HPFSは固定ディスクに使用す
ることを主として設計されているが、実際上、あらゆる
形式のディスクメディアとの互換性を有している。
HPFSボリュームは、ごくわずかな固定された構造を有す
ることを要求される。ボリューム(8Kb)のセクタ0〜1
5は、ブートブロック502に割り当てられており、ボリュ
ームのネームフィールド(名前欄)504、32ビットボリ
ュームのIDフィールド506、BIOSパラメータブロック50
8、及びディスクブートストラッププログラム510を含
む。ディスクブートストラッププログラム510は、オペ
レーティングシステムファイルが見出される限り、これ
らのオペレーティングシステムファイルを位置付けしか
つ読取るべく限定モードで使用することができる。
ブートブロック(BootBlock)502の後には、スーパーブ
ロック(SuperBlock)512及びスペアブロック(SpareBl
ock)514が続いている。スーパーブロック512は、ディ
スクメインテナンスユーティリティによってのみ変更さ
れる。スーパーブロック512は、空きスペースのビット
マップを指すポインタ516、バッドブロックリスト518、
ディレクトリブロックバンドを指すポインタ520、ルー
トディレクトリを指すポインタ522を含む。更に、スー
パーブロック512は、ボリュームがCHXDSKにより最終チ
ェック及び修復されたデート(日付け)を含むデートフ
ィールド(日付け欄)524をも含んでいる。CHXDSKは、
ディスクの悪い部分を検出しかつ目録を作るためのよく
知られたOS/2ディスクユーティリティである。
スペアブロック514は、種々のフラグ及びポインタを含
んでおり、これらについては以下に詳述する。スペアブ
ロック514は、コンピュータシステムが実行されるとき
に変更される。
残余のボリュームは、8Mbバンドに区分される、例え
ば、ファイルを記憶するために使用されるバンド516〜5
22である。第5A図には4つの8Mbバンドが示されている
が、HPFSは、非常に多数のバンドを提供(供給)する。
各バンドには、それ自体の空きスペースビットマップが
設けられている。例えば、ビットマップ524〜534参照。
空きスペースビットマップの各ビットは、セクタを表し
ている。セクタが使用されている場合にはビットは、0
であり、セクタが使用可能(アベイラブル)である場合
には、ビットは、1である。ビットマップは、バンドの
ヘッド又はテールに位置付けされるため、2つのビット
マップは、交互にバンドの間に隣接している。ビットマ
ップのバンドサイズは、任意のサイズのファイルを収容
できるように変更できるが、これ(上記構成)は、ファ
イルに割当てることができる最大の連続空きスペースを
16Mbになるようにさせる。ディスクのシークセンタにお
いて又はシークセンタに向かって位置付けされた1つの
バンドは、ディレクトリブロックバンドと呼ばれ、後述
するような特別の待遇(扱い)を受ける。
HPFSボリュームの全てのファイル又はディレクトリは、
第5B図及び第5C図に示すFanodeと呼ばれる基本的なファ
イルシステムオブジェクトに固定(アンカー;anchor)
される。Fnode 530は、ファイル又はディレクトリに割
当てられた最初のセクタであり、スーパーブロック504
のフィールド522により指示されている。各Fnodeは、単
一のセクタを占拠し、かつ、第5B図に示すように、ファ
イルシステムにより内部で用いられる制御及びアクセス
情報フィールド540、拡大属性(extended attribute、
「EA」)及びアクセス制御リスト(access control lis
ts、「ACLs」)を記憶する領域542、関連するファイル
又はディレクトリのネームの長さ及び最初の15文字を表
示したい場合にはそのためのフィールド544、及び割当
て構成(構造)546を含む。Fnodeは、それが表わすファ
イル又はディレクトリの近くに常に記憶されている。
第5C図に示す割当て構成(構造)546は、ファイル又は
ディレクトリの連続性のサイズ及び度合に基づいて幾つ
かの形態をとる。本発明のHPFSは、1つ又はそれ以上の
連続的なセクタの1つ又はそれ以上の実行(runs)又は
エクステント(extent)の収集として、ファイルを検分
(view)する。各実行は、1対の二重ワードにより記号
化される:セクタにおける32ビットのスターティングセ
クタ数及び32ビットの長さ(これは、実行長さエンコー
ディングと称される)。アプリケーションプログラムの
観点からすると、エクステントは目で見ることはできな
い;ファイルはバイトの継ぎ目のない流れであると思わ
れる。
Fnodeにおける割当て情報にリザーブされたスペース
は、各16Mbまでのセクタの8回の実行と同数のポインタ
を保持することができる。従って、高度に連続的なサイ
ズのかなり小さなファイルは、Fnodeの中で完全に記述
され得る。
HPFSは、Fnodeにとっては多き過ぎるか細分され過ぎか
つ8回以上の実行よりなるファイルの位置を表わすため
の新しい方法を採用している。Fnodeの割当ては、割当
てセクタのB+ツリー(木)のルート(根)となり、こ
のルートは、第5D図に示すように、ファイルのセクタ実
行への実際のポインタを包含する。B+ツリー及びB−
ツリーの概念については後で詳述する。Fnodeのルート
は、12のエレメントのためのメモリ空間(ルーム;roo
m)を有する。各割当てセクタは、種々の制御情報に加
えて、セクタ実行への40程のポインタを包含することが
できる。従って、本発明の好ましい実施例においては、
2レベル割当てのB+ツリー(two level allocation B
+Tree)が、7.68Gb(12*40*16Mb)の理論的な最大サ
イズをもつ480(12*40)のセクタ実行のファイルを記
述することができる。
高度に細分化されたファイルを記述するには2レベル割
当てのB+ツリーが充分でないという非現実的な場合に
は、HPFSファイルシステムは、要求されたようにツリー
に付加的レベルを導入する。中間レベルにおける割当て
セクタは、60程の内部(端部ではない)B+ツリーノー
ドを保持することができ、このことは、この構成の記述
能力が極めて大きな数に急速に成長することを意味して
いる。例えば、3レベル割当てB+ツリーは、28,800
(12*60*40)のセクタ実行を記述することができる。
割当てセクタの実行長さエンコーディング(run−lengt
h encoding)及びB+ツリーは、ファイルのサイズ及び
位置を特定するための記憶効率的方法(memory efficie
nt way)であり、従来技術に比べ幾つかの優れた長所を
有している。論理的ファイルオフセットをセクタ数へ変
換することは、極めて速い:ファイルシステムは、正し
い範囲が見出されるまで実行サイズを要約し、実行ポイ
ンタ(run pointers)のリスト(またはリストのB+ツ
リー)を単に横切るだけである。そのとき、簡単な計算
により、実行(run)の中でセクタを識別することがで
きる。また、新たに割り当てられたセクタがファイルの
前の最終セクタと連続している場合には、実行長さエン
コーディングは、論理的にファイルを拡大することを自
明にしてしまう;このファイルシステムは、ファイルの
最終実行ポインタのサイズ二重ワード(size double−w
ord)を単に増大させるだけであり、適当な空きスペー
スのビットマップにおけるセクタのビットをクリアす
る。
ファイルと同様に、ディレクトリはFnodesにアンカーさ
れる。ルートディレクトリについてのFnodeへのポイン
タは、スーパーブロック512において見出される。第5E
図は、本発明によるディレクトリ構成を示しており、こ
こにはディレクトリFnode 550が示されている。ルート
以外のディレクトリについてのFnodeは、それらの親デ
ィレクトリにおけるサブディレクトリエントリを通って
到達する。
ディレクトリは、2Kbのディレクトリブロックから構成
されており、ディスク上に4つの連続セクタ(consecut
ive sectors)として割当てられており、かつ任意のサ
イズに成長することができる。例えば、ディレクトリブ
ロック552、554、556を参照されたい。このファイルシ
ステムは、ディスクのシークセンタ又はその近くに位置
付けされたディレクトリバンドにディレクトリブロック
を割当てることを試みている。ディレクトリバンドが満
たされると、スペース(空間)が利用できる限り、ディ
レクトリブロックが割当てられる。
各2Kbのディレクトリブロックは、1つから多数のディ
レクトリエントリを包含できる。例えば、エントリ558
〜568を参照されたい。ディレクトリエントリは幾つか
のフィールド(欄)を包含し、これらのフィールドに
は、第5E図に示すように、時間及び日付スタンプのため
のフィールド570、Fnodeポインタを包含するフィールド
572、ディスクメインテナンスプログラム(このプログ
ラムはよく知られたものである)による使用のための用
法カウントフィールド(usagecount field)574、ファ
イル長さ又はディレクトリネームを包含するフィールド
576、ネーム自体のフィールド578、B−ツリーポインタ
を包含するフィールド580が含まれている。各ディレク
トリエントリは、エントリの長さを包含するワード582
で始まる。これは、各エントリの終時におけるフレック
ススペースの可変量を提供する。この可変量は、ファイ
ルシステムの特別なバージョンによって使用でき、かつ
ディレクトリブロックを極めて迅速に横切らせる。
ディレクトリブロックのエントリの数は、ネームの長さ
によって変化する。平均的なファイルネームの長さが13
文字であるときには、平均的なディレクトリブロック
は、ほぼ40のエントリを保持する。ディレクトリブロッ
クのエントリは、それらのネームフィールド(名前欄)
の2進字句順序(binary lexical order)により分類さ
れる。最終エントリは、ブロックの終了をしるすダミー
レコードである。
ディレクトリが大きくなり過ぎて1つのブロック内に記
憶されなくなった場合には、B−ツリーとして編成され
る2Kbブロックの付加によりサイズを大きくできる。特
定のネームをサーチする場合には、それ(ファイルシス
テム)が一致を見出すか、目的とするネームよりも字句
的に多いネームを見出すまで、ファイルシステムは、デ
ィレクトリブロックを横行する。後者の場合、ファイル
システムが、エントリからB−ツリーのポインタを抽出
する。このポインタがどこも指示しないならば、サーチ
は失敗する;さもなければ、ファイルシステムは、ツリ
ーにおける次のディレクトリブロックへの次のポインタ
までポインタをたどって、サーチを続行する。
ブロック当り40のエントリがあるものと仮定すれば、デ
ィレクトリブロックの2レベルツリーは1,640のディレ
クトリエントリを保持でき、3レベルツリーは65,640の
エントリを保持することができる。換言すれば、最大限
3つのディスクアクセスを有する65,640のファイルの一
般的なディレクトリにおいて、特定のファイルを見出す
ことができる(又は、それが存在しないことを示すこと
ができる)。ディスクアクセスの実際の数は、キャッシ
ュの内容(cache contents)及びディレクトリブロック
のB−ツリーにおけるファイルネームの位置に基づく。
これは、同数のファイルを包含しているディレクトリに
ファイルが存在するか否かを画定するために、最悪の場
合、4,000のセクタを読取らなければならないFATファイ
ルシステムに対して顕著な改善を与える。
HPFSのB−ツリーディレクトリ構成は、開(操作)及び
見出し操作にその影響を及ぼす興味ある含意(implicat
ions)を有している。ディレクトリブロックが付加又は
解放されるか、或いはツリーのバランスを保つべくネー
ムが一つのブロックから他のブロックに移動されて、フ
ァイルの生成、リネーミング又は削除により、複雑な作
業のカスケードを生じさせるかもしれない。実際、ファ
イル自体が成長することはないけれども、リネーム作業
は、ディスクスペースの不足により失敗するであろう。
この問題を回避するには、HPFSが、ディレクトリの緊急
時に引き出すことができる空きブロックの小さなプール
を確保する;このプールを指すポインタは、スペアブロ
ックに記憶されるのが好ましい。
ファイル属性は、ファイルの明白な記憶領域の外でオペ
レーティングシステムにより維持されるファイルについ
ての情報である。
本発明のHPFSは、拡大属性(Extended Attributes、「E
As」)を支持し、 ネーム(name)=バリュー(value) の形態をとる。但し、バリュー部分は、空で終わる列
(null−terminated string、「ASCIIZ」)又は2進デ
ータのいずれかであることを除く。本発明の好ましい実
施例においては、各ファイル又はディレクトリは、これ
に取付けられたEAsの64Kbの最大値をとることができ
る。但し、この制限は容易に変更することができる。
EAsについての記憶方法は変えることができる。所与の
ファイル又はディレクトリと関連するEAsが充分に小さ
い場合には、これらのEAsはFnodeに記憶されるであろ
う。もしEAsの全体のサイズが非常に大きいならば、こ
れらのEAsはセクタ実行においてFnodeの外に記憶され
て、実行を記述すべく割当てセクタのB+ツリーが生成
される。もし単一のEAが非常に大きくなったならば、そ
れ(該EA)は、Fnodeの外に押し出されて、それ(該E
A)自体のB+ツリー内に押し込まれる。
本発明は、アプリケーションプログラムにファイルにつ
いて拡大属性(extended attributes)を操作させるOS/
2カーネルのAPI機能DOSQFileInfo及びDosSetFileInfoへ
の改善を提供する。更に、本発明は、任意のパスネーム
(パス名)に関連するEAsを読取る又は書込むために用
いることができる2つの新たな機能DOSQPathInfo及びDo
sSetPathInfoを提供する。アプリケーションプログラム
は、特定のEA(一致させるべきネームを供給する)のバ
リューを要求するか、ファイル又はディレクトリについ
ての全てのEAsを一度に得ることができる。EAsの支持
は、オブジェクト指向アプリケーションプログラムの使
用を容易にする。ファイルを所有するアプリケーション
のネームから、従属ファイルのネーム、アイコン及び実
行コード(executable code)に至る殆ど全ての形式の
情報は、EAsに記憶され得る。
HPFSは、複数レベルでのディスクスループットの潜在的
なボトルネックをアタックする。性能を向上させるた
め、HPFSは、進歩したデータ構成、連続セクタ割当て、
インテリジェントキャッシング、先読取り、及び据置き
書込み(deferred writes)を使用する。最初に、HPFS
は、そのデータ構成をタスクにすぐ一致させる:ファイ
ルネーム、ディレクトリネームへの高速ランダムアクセ
スのための複雑なデータ構成(B−ツリー及びB+ツリ
ー)、ファイル又はディレクトリに割り当てられたセク
タのリスト、及び適当なサイズの空きスペースのチャン
クを位置付けるための簡単でコンパクトなデータ構成
(ビットマップ)。これらのデータ構成を操作するルー
チンは、アセンブラ言語で記載されるのが好ましい。
HPFSの主目的は、可能な限り、連続セクタをファイルに
割当てることである。ディスクの読取り/書込みヘッド
を或るトラックから他のトラックに移動させるのに要す
る時間は、可能性のある他の遅延よりも遥かに重大であ
り、このため、HPFSは、ファイルスペースを連続的に割
当てることにより、そしてFnode及び該Fnodeが制御する
事柄の近くの空きスペースビットマップのような制御構
成を維持することにより、このようなヘッドの移動を回
避するか又は最小にする。高度の連続的なファイルは、
また、一度における多くのセクタに対するディスクドラ
イバのリクエストを少なくすべくファイルシステムを補
助し、ディスクドライバにディスクコントローラの多数
セクタ移送能力を活用させ、かつ、サービスされるべき
ディスクの完全な中断の数を低減する。
多数のファイルを同時に更新させるマルチタスキングオ
ペレーティングシステムにおいてファイルが細分化され
ないように維持することは、従来技術には見られない特
徴である。HPFSが用いている1つの方法(手順)は、新
しく生成されたファイルを別々のバンドのディスクにわ
たって分散して、できるならば、セクタが拡大されると
きにファイルに割当てられるセクタがインターリーブさ
れないようにすることである。他の方法は、ファイルを
拡大しなければならない度毎に、連続スペースの4Kbを
ファイルに予め割当てて、ファイルを閉じるときに全て
の過剰のスペースを戻す方法である。
アプリケーションが、新しいファイルの最終的サイズを
予め知ることができるならば、HPFSがファイルを生成す
るときに、初期ファイル割当てを特定することにより、
HPFSを補助することができるであろう。そうすれば、シ
ステムは、全ての空きスペースビットマップをサーチし
て、ファイルを充分に保持できる連続セクタの実行を見
出すことができるであろう。これが失敗ならば、システ
ムは、ファイルのサイズの1/2である2ラウンドをサー
チする、等である。
HPFSは、幾つかの異なる種類のキャッシングに頼って、
HPFSが要求する物理ディスク転送の数を最小限にしてい
る。HPFSは、FATファイルシステムが行ったようにし
て、セクタをキャッシュする。しかしながら、FATファ
イルシステムとは異なり、HPFSは非常に大きなキャッシ
ュを効率良く管理し、セクタキャッシングを、パーハン
ドルベーシス(per−handle basis)で、ファイルが用
いられる方法に調節するようになっている。また、HPFS
は、パスネーム及びディレクトリをキャッシングし、デ
ィスクディレクトリエントリを記憶表現(memory repre
sentation)において、よりコンパクトで効率のよいも
のに変形する。
性能を向上させるべくHPFSが用いる別の技術は、プログ
ラムが必要とすると考えられるデータを予め読取ること
である。例えば、ファイルが開かれるとき、ファイルシ
ステムは、Fnode及びファイルの内容の最初の幾つかの
セクタを予め読取りかつキャッシュする。ファイルが、
該ファイル中の実行プログラム(executable program)
又はヒストリー情報である場合には、Fnodeは、開放作
業が一般的に、全ファイルの即時逐次読取りによって後
続されていることを示し、ファイルシステムは、ファイ
ル内容のより多くを予め読取りかつキャッシュする。プ
ログラムが比較的少量の読取り要求を発行する場合に
は、ファイルシステムは2Kbのチャンクのファイルから
絶えずデータを取り出し、過剰のデータをキャッシュ
し、殆どの読取り作業がキャッシュから満足されるよう
にする。
本発明のHPFSは、能力を向上するために、OS/2の多重タ
スク処理機能(multitasking capabilities)に基づく
怠惰な書込み(lazy writes、デファード書込み又はラ
イトビハインド(write behand)とも呼ばれている)に
多いに依存している。例えば、プログラムがディスク書
込みを要求する場合には、データは、キャッシュ内に置
かれ、キャッシュバッファがダーティとしてフラグされ
る(即ち、ディスクのデータの状態と一致しないことを
示す)。ディスクがアイドル状態になるか或いはキャッ
シュがダーティバッファで飽和されると、ファイルシス
テムは、デーモンプロセス(daemon process)からのキ
ャプティブスレッド(captive thread)を用いて、最も
古いデータで開始して、バッファをディスクに書込む。
キャプティブスレッド及びデーモンプロセスについて
は、Hastings、他の著によるテキストシリーズ「マイク
ロソフト社のOS/2プログラマーズリファレンス(“Micr
osoft OS/2 Programmers Reference")」(1989年、Mic
rosoft Press社刊)において説明されている。
一般に、怠惰な書込みは、それら(プログラム)の読取
りリクエストは、書込み要求が完了するまで待機するこ
とにより一般に機能を停止されないので、プログラムが
より高速で実行されることを意味している。記録(レコ
ード)の小さなワーキングセットを繰り返し読取り、変
更し、そして書込むプログラムについては、それはまた
多くの不必要な又は冗長な物理ディスク書込みは回避さ
れ得るであろうことを意味する。怠惰な書込みは、それ
らのある特定の危険(状態)を有しており、従って、本
発明は、DosOpenについてのOpenModeパラメータにライ
トスルーフラグ(write−throughflag)を設定すること
により、プログラムが、パーハンドルベーシス(per−h
andle basis)上で怠惰な書込みを負かすことができる
こと、或いは、DosBufReset機能により、それ(プログ
ラム)が、パーハンドルベーシス上のディスクにデータ
を委託(引渡:commit)できることを提供する。OS/2の
現行バージョンにおいても、DosOpen及びDosBufRestの
両機能は、利用可能である。
怠惰な書込み(lazy write)の広範囲な使用は、HPFSに
ついて、最も急を要する情況を除いてどのような情況の
下でも書込みエラーから優雅に回復できるように(強制
的に)させる。例えば、書込みの失敗が知られるときま
でに、アプレケーションは、それがデータをディスク記
憶装置内に安全に運び込んだという錯覚の下に、そのま
ま突っ走ってしまった(それ自体の道をかなりいってし
まった)。
エラーは、ハードウェアにより検出することができる
(ディスクアダプタにより戻される「セクタが見つから
ない」(“sector not found"error)のようなエラ
ー)、又は、そのようなエラーは、データのリードアフ
タライト検査(read−after−write verification)の
間にハードウェアにもかかわらずディスクドライバによ
り検出される。
書込みエラーを取り扱う主要機構は、ホットフィックス
(hotfix)と呼ばれる。エラーが検出されると、ファイ
ルシステムは、リザーブされたホットフィックスプール
から空きブロックを取り出し、該ブロックにデータを書
込んで、ホットフィックスマップを更新する。(ホット
フィックスマップとは、単に、一連の対をなす二重ワー
ドのことであり、二重ワードの各対は、そのホットフィ
ックス交換の番号と関連する悪いセクタの番号を包含し
ている。)次に、ホットフィックスマップのコピーがス
ペアブロック(SpareBlock)に書込まれ、ディスク装置
に問題があることをユーザに知らせるために警告メッセ
ージが表示される。ファイルシステムがディスクドライ
バからセクタ読取り又は書込みを要求する度に、それ
(ファイルシステム)は、ホットフィックスマップを走
査して、悪いセクタの番号を実際のデータを保持してい
る対応する良いセクタに置換える。
CHKDSKのデューティの1つは、ホットフィックスマップ
を空にすることである。ホットフィックスマップの各交
換ブロックに対し、それ(CHKDSK)は、データを所有す
るファイルについて好ましい位置にある新しいセクタを
割当て、データをホットフィックスブロックから新しく
割当てられたセクタに移動して、ファイルの割当て情報
を更新する(この情報には、再バランスしている割当て
ツリー及び他の精巧なオペレーションが含まれてい
る)。次いで、CHKDSKは、悪いブロックリストに悪いセ
クタを付加し、交換セクタを解放してホットフィックス
プールに戻し、ホットフィックスマップからホットフィ
ックスエントリを削除し、かつ、更新したホットフィッ
クスマップをスペアブロック(SpareBlock)に書込む。
HPFSは、各HPFSボリュームのスペアブロックにダーティ
FSフラグ(Dirty FS flag)を維持する。HPFSボリュー
ムの全てのファイルが閉じられるとき、及びキャッシュ
内の全てのダーティバッファが読出されたとき、或い
は、ブートボリュームの場合には、シャットダウン(Sh
utdown)が選択されかつその作業を完了したときに、フ
ラグがクリアされる。
OS/2のブートシーケンス中に、ファイルシステムが各HP
FSボリューム上のダーティFSフラグ(Dirty FS flag)
を検査して、フラグが設定されている場合には、CHKDSK
が実行されるまでブートボリュームへの更なるアクセス
をさせないようにする。ブートボリュームにダーティFS
フラグ(Dirty FS flag)が設定されている場合には、
システムは自動的にCHKDSKを実行する。
スーパーブロック又はルートディレクトリの損失という
ような真に重大な大事故の場合には、HPFSは、データ回
復に最も可能な成功の機会を与えるべく設計されてい
る。Fnode、割当てセクタ及びディレクトリブロックを
備えている、重要なファイル目的(オブジェクト)の殆
ど全ての型は、その親及び子の両方に二重にリンクされ
ており、かつ、ユニークな32ビットのサインを包含す
る。Fnodesも、また、それらのファイル又はディレクト
リのネームの最初の部分を包含する。従って、SHODS
は、Fnode、割当てセクタ及びディレクトリブロックに
ついて、ディスクを規則正しく走査し、ファイル及びデ
ィレクトリを再構成するためにそれら(Fnode、割当て
セクタ及びディレクトリブロック)を用い、そして最後
に空きスペースのビットマップを再発生(regeneratin
g)することにより、全ボリュームを再建(rebuild)で
きる。
上記のように、本発明は、ファイル及びディレクトリを
論理的に順序付けるためにB+ツリー及びB−ツリー
(2進ツリー)を用いる。2進ツリーは、データの物理
的な順序付けを気にすることなく、ポインタによってデ
ータ項目の集合に論理的順序付けを強要するための技術
である。
第5F図を参照すれば、簡単な2進ツリーにおいて、各ノ
ードは、ツリーにおけるノードの論理的位置を決定する
キー値を含むあるデータ、並びに、ノードの左右のサブ
ツリーを指すポインタを包含する。ツリーを開始するノ
ードは、ルート(根)として知られており、ツリーの枝
の端部に位置するノードは、ときどきリーフ(葉)と呼
ばれている。
データの特定のピースを見出すために、2進ツリーはル
ートから横断される。各ノードにおいて、所望のキーが
ノードのキーと比較される;もし両キーが一致しない場
合には、所望のキーがノードのキーより小さいか或いは
大きいかに基づいて、ノードのサブツリーの1つのブラ
ンチ又は別のブランチが選択される。このプロセスは、
一致が見出されるまで、又は第5F図に示すように空のサ
ブツリーに出合うまで続けられる。
このような簡単な2進ツリーは、理解及び実施すること
は容易であるが、実用では欠点を有している。キーが非
ランダムな態様でツリーに首尾良く分散されなかったり
付加されなかったりすると、ツリーが全く非対称的にな
り、ツリーの横断時間に広範囲な変化をもたらす。
アクセス時間を均一にするため、多くのプログラムは、
第5図に示すようなB−ツリーとして知られているバラ
ンス形ツリーを好む傾向にある。B−ツリーについての
重要な点は、データが全てのノードに記憶され、1つ以
上のデータ項目が1つのノードに記憶され、かつ、ツリ
ー全てのブランチが同じ長さをもっているということで
ある。
B−ツリーの最悪の場合の挙動(behavior)は予測可能
であり、簡単な2次ツリーの挙動より遥かに良好である
が、B−ツリーのメインテナンスは、かなり複雑であ
る。新しいデータ項目の付加、キーバリューの変更、又
はデータ項目の削除により、ノードのスプリッティング
(分割)又はマージング(併合)が生じ、これにより、
(それを)再び均衡にするためにツリーには他の作業の
カスケードが強制される。
第5G図に示すように、B+ツリーは、ノードの2つの型
を有するB−ツリーの特殊化されたフォームである:内
部ノードは、他のノードを指すだけであり、外部ノード
は、実際のデータを有している。
B−ツリーよりもB+ツリーの優れている点は、B+ツ
リーの内部ノードが、B−ツリーの中間レベルノードよ
り非常に多くの決定バリューを保持でき、そのため、ツ
リーの外のファンが高速になりかつブランチの平均長さ
が短くなることである。これにより、必要データを見出
すにはB+ツリーのブランチがその端部に続かなければ
ならないという事実を補償でき、一方、B−ツリーにお
いては、データは、中間ノード或いはルート(根)にお
いても見出される。
本発明は、OS/2オペレーティングシステムを改善したも
のであり、多くのユーティリティとOS/2の現行バージョ
ンにおいて利用できるサブルーチンを用いて実施するこ
とができる。本発明は、主としてOS/2オペレーティング
システムに使用することを意図しているが、本発明の原
理は、実際のあらゆるコンピュータのオペレーティング
システムに適用できるものである。こで説明する新しい
ユーティリティ及びサブルーチンを除き、他の全てのユ
ーティリティ及びサブルーチンは現在利用されていてよ
く知られたものである。OS/2オペレーティングシステム
の詳細な説明については、前述のOS/2プログラマ用参考
書を参照されたい。
本発明の改善されたOS/2のオペレーティングシステムの
ボリュームマネージメントは、OS/2の従来のバージョン
において行われているものと同じデューティ、即ち、悪
いボリュームがドライブにインサートされたときの検
出、ボリュームが除去されたときの検出、ボリュームパ
ラメータブロック(VPB)を介してドライブ内に置かれ
た新しいメディアに関する新しい情報の生成、適当なデ
バイスドライバとの通信、新しいインサートメディアに
アクセスする必要のあるデバイス情報をシステムに与え
ること、バッファ及びCDS機構とのインタフェース、及
び特定ボリュームへの変更をシステムに知らせること等
に応答することができる。
OS/2の従来のバージョンにおいては、僅かに1つのファ
イルシステムがあったに過ぎない。本発明によれば、統
一された環境内に多数のファイルシステムを備えること
ができる。ボリュームマネージャは、どのファイルシス
テムが特定のボリュームにアクセスするべきかを決定
し、ファイルシステムドライバ(FSDs)が特定のボリュ
ームについてのそれらの資源を管理できるようにする機
構を提供し、かつボリュームの管理のために過去に設け
られた全てのFSDsに対して同じサポートを提供する。本
発明は、良く知られている既存のOS/2呼び出し並びに以
下に説明する幾つかの新しい機能に依存している。本発
明の設置可能なファイルシステムについての完全な説明
は、マイクロフィッシュの形態で本願に添付されかつ参
考として提示する付録I(Appendix I)において述べら
れている。
本発明は、個々のボリュームについての正しいファイル
システムドライバの識別及びローディングが容易に行え
るマウントプロセス及びアンマウトトプロセスを用いる
ことを意図している。
マウントプロセスは、幾つかの異なる事象が生じたとき
に開始される: 1. ボリュームへの最初のアクセス。
2. ドライブのボリュームが不確実になるときはいつで
も。(このことは、通常、ユーザが新しいメディアをド
ライブに入れることを意味する) 3. ドライブ内にないボリュームへのアクセスが要求さ
れるときはいつでも。
マウントプロセスへの入力は、ドライブパラメータブロ
ック(DPB)の指すポインタであり、このドライブパラ
メータブロックは、デバイスドライブにI/Oを行うこ
と、及びドライブ内にあると現在考えられているボリュ
ームのVPBにハンドルを記憶させることに使用される。
マウント操作によりこれが更新される。ローカルVPBが
スタック上に割当てられ、DPBポインタと共に初期化さ
れる。
第6図に示すように、項目602で示すようにメディアの
論理的セクタ0を読取ることにより、マウントプロセス
600が開始される。異なる形式のメディア(即ち、光学
ディスク又はシーディロム(CD−ROM))がトラック0
を読取り不能にできるので、デバイスドライバからエン
カウンタ(遭遇)されたどのエラーも無視される。論理
的セクタ0を読取る前に、テンポラリマウントバッファ
が0に初期化される。ボリュームのラベルテキストフィ
ールドが「UNLABELED」に初期化される。セクタ0がチ
ェックされ、特定バリュー(41)に対してサインバイト
(signature byte)を比較することにより、フォーマッ
トが認識されているか否かを決定する。フォーマットが
認識されていない場合には、VPBに直接関係のある情報
がスタック上に充填される(即ち、32ビットボリューム
連続番号)。
次に、項目604により、BUILDBPB呼び出し(BUILDBPB ca
ll)が、DPBにおいて特定化されたデバイスドライバに
発行される。BUILDBPBは、デバイスドライバによりエク
スポート(移出)される手順である。このBUILDBPB手順
については、付録Iにおいて詳細に説明されている。BU
ILDBPBは、装置の物理的パラメータ(バイトパーセクタ
(byte pet sector)、セクタパーラック(sector per
track)等)を学習するために呼出される。デバイスド
ライバは、ボリュームの物理的パラメータを決定するの
に用いることができる情報を包含するバッファを指すべ
くポインタを移行する。殆どのドライバにとっては、こ
れはセクタ0であり、非常に古い幾つかのドライバにと
っては、FATの最初のセクタである。装置が、セクタ0
から読み取られるデータを解釈できない場合(例えば、
この場合のフロッピがFATではなく、従ってFAT IDバイ
トが意味をもたない場合)には、装置は最小のBPBを戻
し、カーネル及びFSDsが必要なI/Oを行ってボリューム
を完全に識別できるようにする。
前に生成されたBPBからの適合フィールド(relevant fi
eld)は、スタックのローカルVPB(即ち、Sectors/trac
k、Numberoflleads、Total Sectors、Sector Size)に
コピーされる。新しいVPBが割当てられ、ローカルVPBか
らの情報がそれにコピーされる。
次に、本発明によれば、ループ606に入り、項目608で示
すように、新しく創出されたVPB、論理的セクタ0を指
すポインタ、及びVPBのVPBファイルシステム独立及び従
属領域(independent and dependent areas)を指すポ
インタの処理と共にFS_MOUNT(フラグ=0)のエントリ
点を呼び出すことにより、各FSDをポール(poll)す
る。FSDは、FSH_DoVolIOを呼出し、ボリュームから他の
セクタを読取る(それ自体のバッファを割り当てなくて
はならない)。もしFSDがERROR_ENCERTAIN_MEDIAをリタ
ーンしたならば、エラーがリターンされ、プロセスは、
決定(decision)610によって示されるように再スター
トされる。もしFSDがブートセクタをサポートするなら
ば、FSDは、ブートセクタのファイルシステムのネーム
フィールドをチェックして、これがネームフィールドを
認識しているか否かを決定する。もしFSDがブートセク
タをサポートしないならば、FSDがボリュームを認識す
るか否かを決定すべく装置へのI/Oが実行される。ひと
たびFSDがボリュームを認識したならば、項目612で示す
ように、VPBファイルシステム独立及び従属領域におけ
る関連フィールドを更新する。VPBファイルシステム独
立及び従属領域は、第7図に関連して更に詳細に説明す
る。この時点においては、FSDは、FS Helper(FSH)機
能を発行し、新しいボリュームが、本発明が管理する他
の任意のボリュームと同じであるか否かを決定する。こ
のFS Helperは、ファイルシステム独立及び従属領域を
指すポインタをリターンする。次いでFSDは、項目614で
示すように、新しく生成されたVPBから古いVPBへ情報を
コピーする。新しく生成されたVPBは、MOUNTの呼出しを
行った後に破棄される。次に、ドライブからボリューム
が除去されていることがあるので、FSDは、あらゆるバ
ッファを無効にするような、古いVPBに対してあらゆる
クリーンアップ作業(cleanup work)を行う。
ひとたびFSDがボリュームを認識し、もしリスト内に一
致するものが見出されたならば、本発明は新しいVPBを
除去する。リスト内に一致するものが見出されない場合
には、VPBはマウントされたFSDsのリストにリンクされ
る。もしFSDsが認識されないならば、決定614及び項目6
16に示すように、VPBが空にされかつFATファイルシステ
ムが装填される。
新しいボリュームがドライブにインサートされかつ古い
ボリュームに対してカーネルがもはや関与しない場合に
は、本発明は、FSDにFS_MOUNT(フラグ=2)を発行し
て、そのボリュームに割り振られた資源は、割り振りを
解除される。
本発明により、新しくインサートされたボリュームが、
ドライブの最終ボリュームとは異なるものであることが
検出された場合には、FSDにFS_MOUNT(フラグ=1)の
呼出しが発行されて、除去されたボリュームに関するバ
ッファ無効のような、あらゆるクリーンアップ形式の作
業が実行されるであろう。ボリュームに対してもはやカ
ーネルが関与しない場合には、FS_MOUNT(フラグ=2、
UNMOUNT)が続く。新しくインサートされたボリューム
が、ドライブにおいて最後に見られたボリュームと同じ
ものである場合には、この呼出しは発行されない。
本発明は、FSDにより要求される機能に対する既存のカ
ーネル資源を利用するために、効率のよい機構の使用を
企図する。特に、FSDがカーネル内に存在する機能を要
求する場合には、FSDは、ファイルシステムヘルパ(FS
H)を呼出す(invoke)ファイルシステムヘルパ呼出し
(call)を発行する。呼び出されたFSHは、次に、要求
された情報を戻す。以下に、ファイルシステムヘルパに
ついて簡単に説明する。以下に述べる要約においては幾
つかの重要なファイルシステムヘルパがリストアップさ
れているけれども、必要に応じて付加的なファイルシス
テムヘルパが供給されるように企図されている。ファイ
ルシステムヘルパは、Appendix Iにおいて詳細に説明さ
れている。
ファイルシステムヘルパ(File System Helers) FSH_GETVOLPARM:多くのFS呼出し時に、VPBへのハンドル
がFSDに渡されて、FSDが、VPBのファイルシステム独立
及び従属領域にアクセスすることがしばしば必要にな
る。このヘルパは、そのようなサービスを与えるもので
ある。
FSH_DOVOLIO:FSDが、特定のボリュームに対してI/Oを行
う必要があるときには、FSDは、このヘルパを使用し
て、要求されたボリュームが実際にドライブ内にあるこ
とを保証し、適当なデバイスドライバを呼出し、かつハ
ードエラーを取り扱う。このヘルパは、PSD内で常時用
いることができる。FS_MOUNT呼出しの範囲内で呼出され
るとき、FSDは、ドライブのボリュームに適用される。
しかしながら、FSDがFS_MOUNT呼出しに戻るまでは、ボ
リュームの認識が完了していないので、ERROR_UNCERTAI
N_MEDIAが戻される場合には、FSDは注意しなければなら
ない。このことは、ドライブにおけるメディアの識別を
試みる間に、メディアが不確実になっていることを示す
ものである。また、このことにより、FSDが認識を試み
ていたボリュームが除去されたことを示すであろう。こ
の場合には、FSDは、FS_MOUNT呼出しで渡されたhVPBに
取り付けられた(attached)全ての資源を解放し、ERRO
R_UNCERTAIN_MEDIAがFS_MOUNT呼出しに戻される。これ
は、マウントプロセスを再スタートすべく、ボリューム
トラッキング論理を指導する。
FSH_DUPLICATEVPB:FS_MOUNT呼出しの間、入力VPBは、管
理されている他の1つのボリュームと同じボリュームで
あろう。新しいボリュームに関する更新情報を創出しか
つ古い複製VPB(older duplicate VPB)へその情報をコ
ピーすることが、FSDの責任である。このヘルパは、古
い複製VPBが存在しているか否かを決定し、存在してい
る場合には、古い複製VPBのファイルシステム独立及び
従属領域を指すポインタが戻されて、これらの領域がFS
Dによって更新され得る。次いで、FSDは、ボリュームが
除去されているので、古いボリュームについてあらゆる
クリーンアップ作業を行う。
上記のように、本発明は、可能な限り、予め存在してい
るOS/2資源を使用することを企図する。以下のリスト
は、本発明の動作中に呼び出される機能の階層(hierar
chy)の要約である。
1 DoVollo 1.1 WhatVolume 1.1.1 ProbeChange 1.1.2 ResetMedia 1.1.3 GenhVPB 1.1.3.1 LockVBuf 1.1.3.2 ReadBoot 1.1.3.3 BuildBPB 1.1.3.4. FSMountVolume 1.1.3.4.1 Pmp_Ger 1.1.3.4.2 VPBCopy 1.1.3.4.3 VPBLink 1.1.3.4.4 VPBFind 1.1.3.4.5 VPBFree 1.1.3.5 SetVPB 1.1.3.6 FindVID 1.1.3.7 DiskIO 1.1.3.8 CRC 1.1.3.6 VPBFIND 1.1.3.10 Bmp_Ger 1.1.3.11 VPBCopy 1.1.3.12 VBPLink 1.1.3.13 UnlockVBuf 1.1.3.14 Buflnvalidate(Redetermine Media) 1.1.3.15 FlushBuf(Redetermine Media) 1.1.4 IncVPBRef 1.1.5 DecVPBRef 1.1.5.1 VPBFrce 1.1.6 ResetCurrency 1.1.6.1 NextCDS 1.1.6.2 PointComp 1.1.6.3 Buflnvalidate テーブル1. 本発明は、メディアが不確実であるとき又はメディアが
最初にアクセスされるときはいつでも、呼出される。本
発明のボリュームマネージメント機能(ボリューム管理
機能)はライン1.により表される。最初のプロセスは、
ライン1.1で示すように、どのボリュームがシステムに
与えられたかを決定することである。ライン1.1.1のPro
beChangeは、デバイスドライバにアクセスすべく呼出さ
れ、メデイアの変化をデバイスドライバが検出したか否
かを決定する。メディアの変化が検出されたときは、ラ
イン1.1.2においてResetMediaが呼出されて、メディア
へのI/Oを許容すべくデバイスドライに命令する。次
に、ライン1.1.3においてGenhVPBが呼出され、ボリュー
ムパラメータブロックが生成される。このプロセスは、
Lock−GBufが呼出されてオペレーティングシステムのカ
ーネル内のバッファをクリアしかつ直列化(serializ
e)するライン1.1.3.1と共に開始する。ライン1.1.3.2
においては、メディアブートセクタのデータは、オペレ
ーティングシステムのバッファに読取られる。システム
はライン1.1.3.3に進み、該ライン1.1.3.3においては、
BuildBPBが呼出されて(invoked)、ディスクドライバ
を呼出し(call)、ブートパラメータブロックを作る。
次に、FS_MOUNTがライン1.1.3.4で呼出される。FS_Moun
tにおける最初のステップは、ライン1,1,3,4,1のBmp_Ge
tを呼出す。ライン1.1.3.4.1は、BPBについてのバッフ
ァを設定すべく呼出されるカーネルにおけるメモリマネ
ージメントユーティリティである。ライン1.1.3.4にお
いては、FSMountVolumeが呼出されると、FSMount Volum
eは、FSDsのリストを介して反復し、サクセスを戻すか
リストの終部(エンド)に到達するまで、各FSDのFS_Mo
unt手順を呼出す。ライン1.1.3.4.2においてFSDがサク
セスを戻すと、VPBCopyが呼出されて、BPBのコピーのた
めのテンポラリバッファを生成する。次に、ライン1.1.
3.4.3におけるVPBLinkが呼出され、VPBをチェーンにリ
ンクさせ、該チェーンにおける次のVPBを指すべくBPBを
設定し、リストの開始に現在のVPBを初期化する。VPBFi
ndがライン1.1.3.4.4に呼出されてVPBsのチェーンを試
験し、プロセス中のVPBと同じボリューム識別子を所有
しているVPBを見出す。複製VPBの識別子が見出された場
合には、ライン1.1.3.4.5にVPBfreeが呼び出され、複製
VPBがVPBsのリスト内に見出された場合には、試験を受
けてVPBがBPBから自由になる。FSMountVolumeが完了す
ると、VPBに適当なフィールドを設定するライン1.1.3.5
にSetVPBが呼出される。ライン1.1.3.6において、FindV
IDが呼出され、ボリューム識別子が見出される。メディ
アのセクタ0にブートブロックが見出されない場合に
は、ライン1.1.3.7にDiskIOが呼出され、ボリュームのB
PBが位置付けされる。FSDのFS_Mountルーチンがサクセ
スを戻さない場合には、(残留)FATファイルシステム
のFS_Mount手順と論理的に等価のインラインコードが呼
出される。ライン1.1.3.8においては、古いFATボリュー
ムの最初のディレクトリを検査合計(checksum)すべ
く、CRCが呼出され、それらのブートセクタで連続番号
をもたないボリュームについてのユニークなボリューム
連続番号が生成される。次に、ライン1.1.3.9〜ライン
1.1.3.13にリストアップされた機能が呼出されて、新し
いボリューム識別子が生成されかつボリューム識別子バ
ッファが空にされる。ライン1.1.2.14においてはBufInv
alidateが呼出されて、プロセス開始以来メディアが変
化している場合にはバッファ内の全てのデータを無効に
する。その場合には、ライン1.1.3.15にFlushBufが呼出
され、新しいメディアに対してバッファをフラッシュさ
せる。
ボリュームについて前から存在しているVPBが見出され
ない場合には、ライン1.1.4のIncVPBRefが呼出されて、
現在のVPBの基準カンウタが増大(increment)される。
この基準カウンタは、ここで問題にしているボリューム
が、オペレーティングシステムのカーネルに対して依然
として解放しているか否かを記録するのに使用される。
ライン1.1.5においては、DecVPBRefが呼出され、前のVP
Bの基準カウンタが減少(decrement)される。基準カウ
ンタがゼロに減少された場合には、VPBFreeがライン1.
1.5.1に呼出され、VPBが空にされる。ライン1.1.6にはR
esetCurrencyが呼出され、現在のディレクトリ構成にお
ける位置データを無効であるとしてマークする。NextCD
S(ライン1.1.6.1)及びPointComp(ライン1.1.6.2)
は、現在のディレクトリ構成(CDSs)を列挙するのに用
いられる内部ルーチンである。ライン1.1.6.3においてB
ufInvalidateが呼出され、ファイルシステムのバッファ
プールから、(現在は陳腐化している)VPB基準が除去
される。
上記のように、VPBは、コンピュータシステムに使用さ
れている特定のボリュームについての情報を記憶するシ
ステムにより用いられるボリュームは、ブロック装置に
おけるメディアとして規定され、メディアに関する情報
は、このボリュームを他の全てのボリュームから区別す
る。
VPBsは、BMPとしてセグメントに維持される。従って、
システムは記録が使用されているトラックのみを必要と
しかつ空のリストを管理する。
新しいボリュームに出合う度毎に、即ち、ボリュームの
VPB作製(VPB built)がシステムに既存のいかなるVPBs
とも一致しない場合に、新しいエントリ(new entry)
が、BMP管理されたセグメント内で割当てられ、メディ
アからの適切なデータで充填される。システムがVPBで
完了する度毎に、即ちシステムのRefCountがゼロになる
場合に、BMP管理されたセグメントのエントリが空にな
り、BMPは、この空になった記憶機構(storage)を再使
用のためにトラックする。テーブルIの機能により用い
られた構成を以下に説明する。
VPBは、次の3つの部分に分割される。
1. カーネルのプライベート部分。この部分は、カーネ
ルがVPB(例えば、基準カウント)を管理するために必
要な情報を維持するのに使用される。これは、カーネル
にとってのプライベートなものであり、FSDsは決してこ
のプライベート部分にアクセスしないし、かつそれを変
更しないことを意味している。
2. ファイルシステムの独立部分。この部分は、全ての
ファイルシステムにより使用されかつ特定のあらゆるフ
ァイルシステムから独立している。この部分は、或るフ
ァイルシステム(file system、「FS」)コールに対し
て設置可能なファイルシステムに渡される。
3.おVPBを用いているファイルシステムに特有の部分。
この部分は、必要に応じてファイルシステムが使用でき
る「作業領域」として設定される。この部分は、或るFS
コールに対してIFSに渡される。VPBのレイアウトは第7
図に示される。
次の構成は、VPBのファイルシステム独立部分を規定す
る。この構成は、ファイルシステムの形式の如何に係わ
りなく、あらゆるファイルシステムにより使用できるも
のである。
下記の構成は、VPBのファイルシステム従属部分を規定
する。この構成は、適合すると考えられるファイルシス
テムにより使用される。
vpbfsd STRUC vpd_work DB VODWORKAREASIZE DUP(?) vpbfsd ENDS 下記の構成は、ボリュームパラメータブロック(VPB)
の構成を定めるものである。
vpb STRUC 全てのファイルシステムについてカーネルにより使用さ
れるフィールド(欄) vpb_flink DW ?;前方リンクのハンドル vpb_blink DW ?;後方リンクのハンドル vpb_IDsector DD ?;IDのセクタ数 vpb_ref_count DW ?;VPBを指す目的のカウント vpb_search_count DE ?;VPBを指すサーチのカウント vpb_first_access DB ?;これは、メディアを強制すべ
く−1に初期化される vpb_signature DW ?;VPBの有効性を明記するサイン vpb_flags DB ?;フラグ vpb_FSC DD ?;ファイルシステム制御ブロック(FSC)
を指すポインタ 下記のフィールド(欄)は、ファイルシステム従属作業
に使用される。
vpb_fsd DB SIZE vpbfsd DUP(?) 下記のフィールドは、ファイルシステム独立作業に使用
される。
vpb_fsi DB SIZE vpbfsd DUP(?) vpb ENDS 下記の構成は、FSH_GETVOLPARMにより使用される。これ
は、VPBハンドルからVPBデータを得るのに使用される。
下記の構成は、FSH_DOVOLIOにより使用される。これ
は、ボリュームベース形のセクタ配向転送(volume−ba
sed sector−oriented transfers)に使用される。
下記の構成は、FSH_DUPLICATEVPBにより使用される。こ
れは、複製(古い)VPBへのVPBデータを得るのに使用さ
れる。
RedetermineMediaは、下記に示すような特殊な組のエン
トリパラメータ(entry parameters)を有している。
下記の呼出しは、ボリューム管理の内部コンポーネント
インタフェースに使用される。
GenhVPBは、特定のドライブの内部VPBの決定に使用され
る。戻された全てのエラーは、ユーザに送られる。
全てのレジスタは、変更することができる。
BuildBPBは、古いディスク用の正しいBPBを生成すべく
呼出される(即ち、認識されたプートセクタを有してい
ないディスク)。新しいディスクは、プートセクタ内に
KNOWN(既知)で正しいすなわち正当なBPB(VALID BP
B)を有している。デバイスドライバへのバッファは、B
uildBPB呼出しの一部である。
FSMountVolumeは、IFSドライバが、関心をもつボリュー
ムを認識しているか否かを決定すべくチェックする。
FSMountVolumeは、各FSドライバのFS_Mountエントリ点
を呼出すFSDチェーンを通してループし、IFSが関心をも
つボリュームを認識しているか否かを決定する。このル
ープは、最初のIFSがボリュームを認識するとき、又は
システム内に設置されたFSドライバの番号のループカウ
ンタが0に減少するときに終端する。
VPBFreeは、リンクリストからVPBを除去して、セグメン
トからそのブロックを空にする。
ENTRY(BP);VPBへのハンドル EXIT リンクされておらずかつ空にされたVPB USES bx、bp、cx、di、ds、es VPBLinkは、リストの開始時に新しいVPBをインサート
し、新しいVPB及び古い最初のVPBの前方及び後方のリン
クフィールドを調節する。
ENTRY ES;DI=新しいVPB EXIT リストにリンクされたVPB USES DS、SI VPBFindは、内部リストを走査して、入力VPBと同じボリ
ュームIDをもつVPBを探す。
ENTRY DS;SI=入力VPBのボリュームIDを指すポインタ EXIT AX=hVPB、見出された場合 AX=0、見出されない場合 USES AX、BX、CX、DI、DS、ES VPBCopyは、ローカル領域からBMPを管理領域にVPBをコ
ピーし、かつ正当であるとしてVPBをスタンプする。
ENTRY SI=スタックのLocalVPBのオフセット ES;DI−>新しいVPB EXIT なし USES AX、CX、DS、SI ボリューム管理、即ち、悪いボリュームがマウントされ
たときにこれを検出してオペレータに正しい処置をとる
ように知らせることは、オペレーティングシステムのカ
ーネル及び適当なデバイスドライバを介して直接行われ
る。本発明の原理によれば、各ファイルシステムドライ
バ(FSD)は、ボリュームラベルと、ファイルシステム
に使用される各ボリュームについての32ビットのボリュ
ーム連続番号とを生成する。これらは、ボリュームがフ
ォーマット化されるときに、論理的セクタゼロのリザー
ブされた位置に記憶されるのが好ましい。この情報を記
憶するのに、特別なフォーマットは必要ない。オペレー
ティングシステムのカーネルは、FSDを呼出して、それ
を含むであろう動作を実行する。FSDは、ボリュームラ
ベル又は連続番号が変更された場合にはいつでも、ボリ
ュームパラメータブロック(VPB)を更新する。
FSDがI/OリクエストをFSヘルパルーチンに渡すと、デバ
イスドライバは、32ビットのボリュームを連続番号及び
ボリュームラベルを(VPBを介して)渡す。ボリューム
に関してI/Oが実行されるとき、オペレーティングシス
テムのカーネルは、リクエストされたボリュームの連続
番号を、装置を維持している現在のボリュームの連続番
号と比較する。これは、ドライブにマウントされたボリ
ュームのドライバパラメータブロック(DPB)のVPBをチ
ェックすることによって行われるイン−ストレージ試験
(in−storage test)であり、いかなるI/Oも必要とさ
れない。比較の結果、等しくない場合には、オペレーテ
ィングシステムのカーネルは、クリティカルエラーハン
ドラに信号を送って、特定の連続番号及びラベルを有す
るボリュームを挿入すべくユーザを促す。
メディアの変化が検出されるか或いは、アプリケーショ
ンプログラムのインタフェース(API)の機能呼出しの
代わりに、ドライブがアクセスされたときには、本発明
は、そのボリュームへのI/Oを管理するために応答する
ファイルシステムドライバ(FSD)を決定する。次に、
本発明は、ボリュームパラメータブロック(VPB)を割
当て、設置されたFSDsをポーリング(poll)する。FSD
は、これがメディアを認識することを示す。FSDsは上記
のようにしてポーリングされる。
FAD FSDは、FSDsのリストの最後にあり、全てのメディ
アを認識することにより、他のFSDの認識が生じない場
合には省略時FSDとして作用する。
本発明の原理によれば、ファイルシステムドライバの2
つの分類がある: 1. ローカルすなわち遠隔に(仮想ディスク)装置に対
してI/Oを行うブロックデバイスドライバを用いているF
SD(これは、ローカルファイルシステムと呼ばれてい
る)、 2. ブロックデバイスドライバを用いることなくして遠
隔システムにアクセスするFSD(これは、遠隔ファイル
システムと呼ばれている)。
ドライブレター(ドライブ文字)と遠隔ファイルシステ
ムとの間の連結は、プログラムのインタフェースを介し
て行われる。DosFSAttachシステムコールは、システム
のネームスペース(例えば、ドライブ)の目的とFSDと
の間の結合を生成するのに用いられる。
疑似文字装置(pseudo−character device)と遠隔ファ
イルシステムとの間の連結も、DosFsAttachインタフェ
ースを介して行われる。DosFsAttachインタフェース
は、DosFsAttach呼出し及びDosQFsAttach呼出しで構成
されており、これらは、Appendix Iにおいて詳細に説明
されている。
ローカルボリュームが最初に参照されたとき、本発明で
は、FSDチェーンの各ローカルFSDを連続的に尋ねて(as
k)、各FSDのFS_MOUNTエントリ点への呼出しを介してメ
ディアを受け入れるようになっている。どのFSDもメデ
ィアを受け入れない場合には、メディアは、省略時ファ
イルシステムに割当てられる。FORMAT以外による、認識
されないメディアにアクセスするために行われる他の全
ての試みは、「無効メディアフォーマット(INVALID ME
DIA FORMAT)」のエラーメッセージを結果として生じ
る。
ひとたびボリュームが認識されると、ドライブと、FSD
と、ボリュームの連続番号と、ボリュームのラベルとの
間の関係が記憶される。ボリュームの連続番号及びラベ
ルは、ボリュームのバラメータブロック(VPB)に記憶
される。VPBは、開放ファイル(ファイルハンドルに基
づくI/O)、サーチ及びバッファリファレンス(buffer
references)についてのオペレーティングシステムによ
り維持される。
除去されたボリュームに対する連続リクエストは、FS_M
OUNTを呼出すことによりボリューム認識についての設置
されたFSDsのポーリングを必要とする。認識しているFS
Dにより戻されたVPB及び既存のVPBのボリューム連続番
号及びボリュームラベルが比較される。試験が成功した
場合には、ボリュームにFSDがアクセスされる。試験が
失敗した場合には、オペレーティングシステムがクリテ
ィカルエラーハンドラに信号を送り、正しいボリューム
にユーザを促す。
メディアとVPBとの間の連結は、ボリュームの全ての開
放ファイルが閉じられるまでセーブされ、サーチリファ
レンス及びキャッシュバッファリファレンスが除去され
る。ボリュームの変化のみが、次のアクセス時における
メディアの再決定をならしめる。
ブート可能で論理的に区分(partition)されたメディ
アに関するオペレーティングシステムの区分へのアクセ
スは、OS/2オペレーティングシステムで利用可能な機能
セットのようなフルオペレーティングシステムの機能セ
ットを介して行われる。
ディスクの区分化の設計(disk par−titioning desig
n)についての詳細な説明は、前述のOS/2プログラマ用
参考書で入手可能である。
本判明によれば、ネットワークを介してオペレーティン
グシステムと通信する遠隔装置を識別するためのDosQFs
Attach機能が提供される。DosQFsAttachの目的は、取付
けられた遠隔ファイルシステム、ローカルファイルシス
テム、文字装置(character device)、又は、ローカル
FSD又は遠隔FSDに取付けられた疑似文字装置ネームに関
する情報を問合せることである。
DosQFsAttachを呼出すシーケンスは:次の通りである。
ここで、DeviceNameは、コロン(:)が付された駆動文
字(drive letter)を指すか、或いは文字又は疑似文字
装置ネームを指すか、或いはFSAInfoLevelのいくつかの
バリューについては無視される。DeviceNameがドライブ
であるときには、DeviceNameは、コロンが付された駆動
文字の形態を有するASCIIZストリングである。DeviceNa
meが、文字又は疑似文字の装置ネームであるときには、
そのフォーマットは、呼出されたサブダイレクトリのフ
ァイルネームのフォーマットにおけるASCIIZストリング
のフォーマットであり、\DEV\のように示すのが好ま
しい。
オーディナル(序数:Ordinal)は、文字装置、疑似文字
装置又はドライブの組のリストのインデックスである。
序数は常に1からスタートする。リストの1つの項目の
序数位置は重要でない。序数は、リスト全体を厳格にス
テップするのに使用される。序数から項目へのマッピン
グは揮発性であり、DosQFsAttachに対する或る呼出しか
ら次の呼出しまで変化しうる。
FSAInfoLevelは、要求される情報のレベルであり、Data
Bufferのデータがどの項目に関するものであるかを決定
する。
レベル0×0001は、DeviceNameにより名付けられた特定
のドライブ又は装置ネームのデータを戻す。序数のフィ
ールド(欄)は無視される。
レベル0×0002は、序数により選択された文字又は疑似
文字装置のリストのエントリのデータを戻す。DeviceNa
meのフィールドは無視される。
レベル0×0003は、序数によって選択されたドライブの
リストのエントリのデータを戻す。DeviceNameのフィー
ルドは無視される。
DataBufferは戻り情報バッファ(return information b
uffer)であり、次のフォーマット内にある: struct{ unsigned short iType; unsigned short cbName unsigned char szName〔〕; unsigned short cbFSDName; unsigned char szFSDName〔〕; unsigned short cbFSAData; unsigned char rgFSAData〔〕; }; iType項目の形式 1=常駐文字装置(Resident character device) 2=疑似文字装置 3=ローカルドライブ 4=FSDに取付けられた遠隔ドライブ sbName 項目ネームの長さ、ゼロ(null)は数えない szName 項目ネーム、ASCIIZストリング cbFSDName FSDネームの長さ、ゼロは数えない szFSDName ASCIIZストリングに取付けられたFSD項目の
ネーム cbFSAData FSDにより戻されたFSDアタッチデータの長
さ rgFSAData FSDにより戻されたFSDアタッチデータ szFSDNameは、FSDにより移出(エクスポート)されたFS
Dネームであり、このネームは、必ずしもプートセクタ
のFSDネームと同じネームである必要はない。
ローカル文字装置(iType=1)については、cbFSDName
=0であり、szFSDNameは、ゼロで終わるバイトのみを
含んでいて、cbFSAData=0である。
ローカルドライブ(iType=3)については、szFSDName
は、呼出しの時点でドライブに取付けられたFSDのネー
ムを含んでいる。この情報はダイナミックに変化する。
ドライブがオペレーティングシステムのカーネルの常駐
ファイルシステムに取付けられている場合には、szFSDN
ameに“FAT"又は“UNKNOWN"が含まれる。常駐ファイル
は、他のFSDsがMOUNT(マウント)することを拒む任意
のディスクに取付けられているので、認識可能なファイ
ルシステムを含んでいないディスクを有することができ
るが、常駐ファイルシステムに取付けることもできる。
この場合、差異を検出することができ、この情報は、適
格に認識されなかったディスク上のデータを破壊しない
ようにプログラムを助ける。
DataBufferLenは、戻りバッファのバイト長さである。
戻りにおいて、この長さは、FSDによりDataBufferに戻
されたデータの長さである。
全てのブロック装置及び全ての文字及び疑似文字装置に
ついての情報は、DosQFsAttachにより戻される。この呼
出しにより戻される情報は、揮発性が高い。
好ましくは、呼出しプログラムは、戻された情報が呼出
しプログラムに戻されるまでに既に変化されていること
を気付くべきである。カーネルの常駐ファイルシステム
に取付けられたディスクに戻された情報は、ディスクが
ファイルシステムを備えたものであることをカーネルが
明確に認識しているか否か、又は、他のFSDsがディスク
を取付けていないのでカーネルがそのファイルシステム
をカーネルに取付けたか否かを決定するために使用する
ことができる。
全てのFSDsに対する一般的なエラー信号についてのエラ
ーコードの組は、0×EE00−0×EEFFである。必要に応
じて他のエラーを付加できるが、次のエラーが定められ
ている: ERROR_VOLUME_NOT_MOUNTED=0×EE00−FSD は、ボリュームを認識しなかった。
各FSDにより定められるエラーコードの組は、0×EE00
−0×EEFFである。
ディスクメディア及びファイルシステムのレイアウト
は、次の構成により記述される。ファイルシステムに与
えられるデータは、ブロック装置に取付けられたデバイ
スドライバにより与えられるファイルシステムサポート
のレベルに基づきうる。これらの構成は、ローカルファ
イルシステムについてのみ関連する。
/“file system independent−volume params"/atruct
vpfsi{ unsigned long vpi_vid;/“32ビットボリュームID"/ unsigned long vpi_hDEV;/“デバイスドライバへのハン
ドル"/ unsigned short vpi_bsize;/“バイトのセクタサイズ"/ unsigned long vpi−totses;/“セクタの全数"/ unsigned short vpi_trksec;/“セクタの全数"/ unsigned short vpi_nhead;/“セクタの全数"/ chart vpi_text〔12〕;/“asciizボリュームネーム"/ };/“vpfsi"/ /“file system dependent−volume params"/ struct vpfsd{ char vpd_work〔36〕;/“作業領域"/ };/“vpfsi"/ 上記のように、FS_MOUNT機能は、ボリュームをマウント
及びアンマウント(UNMOUNT)するために呼出され、そ
して、その目的は、FSDがファイルシステムのフォーマ
ットを認識するか否かを決定するためにボリュームを試
験することにある。FS MOUNTを呼出すシーケンスは下記
の通りである: int far pascal FS_MOUNT(flag、pvpfsi、pvpfsd、pBo
ot) unsigned short flag; struct vpfsi far"pvpfsi; struct vpfsd far"pvpfsd; unsigned short hVPB; char far"pBoot; ここで、フラグは、要求された作業を示す。
flag=0は、ボリュームをマウント又は受け入れるため
にFSDが要求されることを示す。
flag=1は、特定のボリュームが除去されたことをFSD
がアドバイスされていることを示す。
flag=2は、ボリュームがそのドライバから除去される
ときにそのボリュームに割当てられた全ての内部記憶装
置及びそのボリュームが除去されたことへの最後のカー
ネル管理されたリファレンスを開放するために、FSDが
要求されることを示す。
flag=3は、FSDに使用するためのフォーマット化の準
備において、認識の如何に係わらずボリュームを受け入
れることをFSDが要求されることを示す。
他の全てのバリューは確保(reserve)される。FSDに渡
されたバリューは有効である。
pvpfsi−VPBのファイルシステム独立部分を指すポイン
タ。もしメディアが、オペレーティングシステム−認識
可能なブートセクタを包含するならば、vpi_vidフィー
ルドは、そのボリュームについての32ビット識別子を包
含する。もしメディアがそのようなブートセクタを包含
しないならば、FSDは、メディアに対してユニークなラ
ベルを生成して、該ラベルをvpi_vidフィールドに配置
する。
pvpfsd−VPBのファイルシステム従属部分を指すポイン
タ。FSDは必要に応じて情報をこの領域に記憶しうる。
hVPB−ボリュームへのハンドル。
pBoot−メディアから読み取られたセクタ0を指すポイ
ンタ。このポインタは、フラグ==0のときにのみ有効
である。ポインタが参照するバッファは、「MUST NOT B
E MODIFIED(変更されてはならない)」。ポインタは常
に有効であり、フラグ==0のときには確かめる必要は
ない;もし読取りエラーが生じたならば、バッファはゼ
ロを包含する。
FSD、提供されたボリュームを試験し、ボリュームがフ
ァイルシステムを認識するか否かを決定する。もしボリ
ュームがファイルシステムを認識するならば、vpfsi及
びvpfsdの適当な部分を充填した後に、ゼロを戻す。vpi
_vid及びvpi_textのフィールドは、FSDにより充填され
る。もしFSDがオペレーティングシステムのフォーマッ
トセクタを有するならば、FSDは、メディアをラベルか
らasciizフォームに変換する。vpi_hDevのフィールド
は、オペレーティングシステムにより充填される。もし
ボリュームが認識されないならば、ドライバは非ゼロ
(non−zero)を戻す。
vpi_text及びvpi_vidは、これらのバリューが変化する
度毎に、FSDにより更新される。
vpfsdの内容は次の通りである。
FLAG=0 FSDはFSD_FINDDUPHVPBを発行して、複製VPBが存在して
いるか否かを決定する。もし複製VPBが存在しているな
らば、新しいVPBのVPB fs従属領域が無効であり、FSDが
FS_MOUNTの呼出しから戻った後に、新しいVPBがアンマ
ウントされる。FSDは、古い複製VPBのfs従属領域を更新
する。
もし複製VPBが存在しないならば、FSDは、fs従属領域を
初期化する。
FLAG=1 VPB fs従属部分は、FSDが最後に変更したものと同じで
ある。
FLAG=2 VPB fs従属部分は、FSDが最後に変更したものと同じで
ある。
メディア認識プロセスの後で、FSH_GETVOLPARM呼出しを
用いて、ボリュームパラメータは試験されうる。ボリュ
ームパラメータは、メディア認識プロセスの後に変更す
べきではない。
マウントリクエストの間、I/Oを行うために、FSDは、FS
H_DOVOL−IOを用いることによりメディアの他のセクタ
を試験しうる。もし不確実メディアの戻りが検出された
ならば、FSDは「cleans−up(クリーンズアップ)」で
あり、ERROR_UNCERTAIN_MEDIA戻して、新しくインサー
トされたメディアに関してボリュームマウント論理が再
スタートできるようにする。付加されるI/Oに使用する
ためにFSDは、バッファを提供する。
オペレーティングシステムのカーネルは、上記レフカウ
ント(refcount)カウンタを介してVPBを管理する。全
てのボリューム特定目的(volume−specific objects)
は、適当なボリュームハンドルでラベリングされて、VP
Bへの基準を表わす。ボリュームに対する全てのカーネ
ル基準が消滅すると、フラグ=2でFS_MOUNTが呼出さ
れ、ディスマウントリクエストを示す。
ボリュームがそのドライブから除去されたことをカーネ
ルが検出し、かつ、依然としてボリュームに対する未決
定の基準(outstanding references)が存在するときに
は、FS_MOUNTがフラグ=1で呼出されて、FSDに、ボリ
ュームについてのクリーンなデータ(又は、他の再生可
能なデータ)を記憶させる。ダーティで再生不可能なデ
ータは保持されて、それがドライブ内にリマウントされ
るときに、そのデータがボリュームに書き込まれる。本
発明の目的に対して、クリーンデータは、変化されない
データであり、ダーティなデータは、変更されたデータ
である。
FSDに使用するためにボリュームがフォーマット化され
るときには、オペレーティングシステムのカーネルは、
フラグ=3でFSDのFS_MOUNTエントリを呼出し、FSDにフ
ォーマット作業の準備をさせる。フォーマットがボリュ
ームに関してファイルシステムを変化させるので、FSD
は、ボリュームがFSDの認識するボリュームでない場合
でもボリュームを受け入れる。もしフォーマット化が完
了できないならば(例えば、FSDがCD−ROMのみをサポー
トする場合)には、作業は失敗しうる。
殆どのコンピュータシステムのハードウェアは、メディ
アのカーネル媒体除去(Kernel−mediated removal of
media)を許容しないので、ボリュームがどのドライブ
にも存在しないときに、アンマウントリクエストが発行
されることは確実である。
FSH_DOVOLIOは、特定のボリュームに対するI/Oを実行す
る。FSH_DOVOLIOは、リクエストされたI/Oに対するデバ
イスドライバのリクエストバケットをフォーマット化
し、データ転送領域をロックし、デバイスドライバを呼
出し、そして、FSDに戻る前に、あらゆるエラーをハー
ドエラーデーモンに報告する。
ハードエラーデーモンにより示された全ての再試行(re
tries)又はDOSERRORにより示されたアクションは、FSH
_DOVOLIOへの呼出し内に行われる。
次に、FSH_DOVOLIOに対する呼出しフォーマットについ
て記載する。
int far pascal FSH_DOVOLIO(opertion,hVPB,PData,pc
Sec,iSec) unsigned short operation; unsigned short hVPB; char far pData; unsigned short far pcSec; unsigned long iSec; ここで、オペレーションビットマスク(operation bit
mask)は、実行されるべきread/read−by pass/write w
rite−bypass/verify−after−write/write−through及
びノーキャッシュ作業(no−cacheope−ration)を示
す。
Bit 0×0001 offは、読取りを表示する。
Bit 0×0001 onは、書込みを表示する。
Bit 0×0002 offは、no−bypassを表示する。
Bit 0×0002 onは、casche bypassを表示する。
Bit 0×0004 offは、no verify−after−wirte作業を表
示する。
Bit 0×0004 onは、verify−after−writeを表示する。
Bit 0×0008 offは、ハードエラーエーモンに信号を送
られたエラーを表示する。
Bit 0×0008 onは、ハードエラーが直接戻されることを
表示する。
Bit 0×0010 offは、I/Oが“Write−through"でないこ
とを表示する。
Bit 0×0010 onは、I/Oが“write−through"であること
を表示する。
Bit 0×0020 offは、このI/Oに対するデータを変更すべ
きことを表示する。
Bit 0×0020 onは、このI/Oに対するデータを変更すべ
きではないことを表示する。
リザーブされた他の全てのビットはゼロである。
「cache bypass(キャッシュバイパス)」と、「no cac
he(ノーキャッシュ)」ビットとの間の相違は、デバイ
スドライバが渡されるところのリクエストパケットの形
式においてである。「cacheb−ypass」では、コマンド
コード24、25又は26でパケットが得られ、「no cache」
では、システムは、コマンドコード4、8又は9に対す
る拡大されたパケット得る。
hVPB I/Oの資源に対するボリュームハンドル。
pData ユーザの転送領域(transfer area)の長いアド
レス。
pcSec 転送すべきセクタ数を指すポインタ。戻り時に
は、これは首尾良く転送されたセクタ数である。
iSec 転送の最初のセクタ数。
Returns−作業が失敗した場合には、0以外のエラーコ
ード。
ERROR_PROJECTION_VIOLATION−供給されたadd−ress/le
ngthは有効ではない。
ERROR_ENCERTAIN_MEDIA−メディアが変更されていると
きには、デバイスドライバは信頼性をもって告げること
はできない。このことは、FS_MOUNTのコンテクスト内に
おいてのみ生じる。
ERROR_TRANSFER_TOO_LONG−デバイスにとって転送が非
常に長い。
FSH_DOVOLIOは、常時、FSD内で使用することができる。
FS_MOUNT呼出しの範囲内で呼出されるとき、FSH_DOVOLI
Oは、ボリュームの如何に係わらず、ドライブのボリュ
ームに適用される。しかしながら、FSDがFS_MOUNTの呼
出しを戻すまでは、ボリュームの認識が完了しないの
で、FSDは、ERROR_UNCERTAIN_MEDIAが戻されたいときに
は、特別な注意を払わなければならない。これは、ドラ
イブにおけるメディアを識別するのに、メディアが不確
実な試みを行ったことを示す。また、これは、FSDが認
識を試みたボリュームが除去されたことを示しうる。こ
の場合、FSDは、FS_MOUNTの呼出しで渡されたhVPBに取
付けられたあらゆる資源を解放し、かつERROR_UNCERTAI
N_MEDIAをFS_MOUNT呼出しに戻す。これは、マウントプ
ロセスを再スタートするように、ボリュームトラッキン
グ論理を仕向ける。
FSDsは、I/O作業から独立してデバイスドライバの作業
を制御するために、FSH_DOVOLIO2を呼出す。このルーチ
ンは、IOCTL作業に対するボリューム管理をサポートす
る。FSDに戻る前に、全てのエラーはハードエラーデー
モンに報告される。ハードエラーデーモンにより示され
るすべての再試行又はDOSERRORにより示されるアクショ
ンは、FSH_DOVOLIO2への呼出し内に行われる。
int far pascal FSH_DOVOLIO2(hDev,sfn,cat,func,pPa
rm,cbParm,pData,cbData) unsigned long hdev; unsigned short sfn; unsigned short cat; unsigned short func; char far pParm; unsigned short cbParm; char far pData; unsigned short cbData; ここで、 hDev−VPBから得られたデバイスハンドル。
sfn−FSH_DEVIOCTL呼出しを引き起こしたオープンイン
スタンス(open instance)からのシステムファイルの
数。このフィールドは、変化されない状態で、sfi self
sfnフィールドから渡されるべきである。どのオープン
インスタンスもこの呼出しに一致しないときには、この
フィールドは、0×FFFF cat−実行すべきIOCTLのカテゴリ。
func−IOCTLのカテゴリ内での機能。
pParm−パラメータ領域へのロングアドレス。
cbParm−パラメータ領域の長さ。
pData−データ領域へのロングアドレス。
cbData−データ領域の長さ。
Returns−エラーが検出されないときには0以外のエラ
ーコード。
供給された機能が、ここに述べているシステムとの互換
性をもたない場合には、ERROR_INVALID_FUNCTIONが呼出
される。メディアが不確実になるときにはいつでも、新
しいVPBが割当てられる(メディアが変更されていない
ことがもはや確かではないことを、デバイスドライバは
認識している)。このVPBは、FS_MOUNT呼出しが戻るま
で、(メディアの再インサートにより)前に割当てられ
たVPBと共に崩壊することはない。しかしながら、前のV
PBは、メディア(このメディアは、該メディアが除去さ
れている間に書込むことができる)から更新されなけれ
ばならない幾つかのキャッシュデータをもつことができ
る。古いVPBについてのキャッシュ情報(cached inform
ation)を更新するため、FSH_FINDDUPHVPBは、FSDにボ
リュームのこの前の発生(this previous occurrence)
を見出させる。このボリュームについて他の古いVPBが
存在するならば、新しく生成されたVPBは、アンマウン
トされる。
FSH_FINDDUPHVPBについての呼出しフォーマットは、次
の通りである。
int far pascal FSH_FINDDUPHVPB(hVPB,phVPB)unsign
ed short hVPB; unsigned short far phVPB; ここで、 hVPB−見出すべきボリュームに対するハンドル。
phVPB−マッチングボリュームのハンドルをどこに記憶
させるかを指すポインタ。
Returns−マッチングVPBが見出されないときにはエラー
コード。それ以外は、0。
ERROR_NO_ITEMS−マッチングhVPBは存在しない。
FSH_GETVOLPARMは、FSDに、VPBからファイルシステム独
立及び従属データを検索させる。FSルータはVPBハンド
ル内を通るので、個々のFSDsは、関連部分を指すポイン
タ内にハンドルをマッピングする。FSH_GETVOLPARMにつ
いての呼出しシーケンスは次の通りである: void far pascal FSH_GETVOLPARM(hVPB,ppVPB−fsi,pp
VPBfsd) unsigned short hVPB; struct vpfsi far far pVPBfsi; struct vpfsi far far pVPBfsd; ここで、 hVPB−関心のあるボリュームハンドル。
ppVPBfsi−ファイルシステム独立データ指すポインタが
記憶されている位置。
ppVPBfsd−ファイルシステム従属データを指すポインタ
が記憶されている位置。
Returns−なし。
FSD_Volumeのマッピングはダイナミックであり、かつFS
D−DD連結は、FSD及びDDの独立方法により、オペレーテ
ィングシステムのカーネルを介して行われるので、あら
ゆるFSD、DDsがこのFSDからローディングされたボリュ
ームを含むあらゆるボリュームにアクセスできる。ボリ
ュームは、除去可能なメディアの特定のピース(片)、
又は区分できる任意のメディアの任意の区分にマッピン
グするので、多数のFSDsは、特定のハードディスク又は
他のメディアへのアクセスを有しうるということが企図
される。
ボリュームファイル作業は、2つのカテゴリに分けられ
る:それらは、ネームベース作業(named−based opera
tions)及びハンドルベース作業(handle−based opera
tions)である。ネームベース作業は一般にユーザによ
って開始され、システム100がファイルについてネーム
作業を行うことをユーザがシステム100に命令(instruc
t)する。ハンドルベース作業は、一般に、システムの
バックグラウンド作業中に開始される。通常、ハンドル
ベース作業は、ネームベース作業の後に行われる。
第8図に示すように、コンピュータシステム100が名前
付きに基づくオペレーションを行っているときに、ルー
チン800が呼出される。名前付きオペレーションは、文
字ネームにより指示されたオペレーションである。即
ち、このオペレーションは、ファイル又はディレクトリ
のネームにより特定される。「Open file‘xxx'」は、
名前付きに基づくオペレーションの一例である。プロセ
ス802は、ネームをパーズ(parse)すべく呼出されて、
3つの変数、即ち、PathNameType、TCBThishVPB及びTCB
ThisFSCを戻す。このプロセス802については、第9図に
関連して詳細に説明する。(注、hはハンドルをいい、
TCBは、TCHThichVPBが現に関心をもっているVPBへのハ
ンドルでありそしてTCBThisFCHが関心のあるファイルシ
ステムを指すポインタであるようなスレッド制御ブロッ
ク(thread control block)をいう。)次に、項目804
は、プロセス802により戻された変数PathType、TchThis
hVPB及びTCBThisFCHに基づいて適当な機能に制御をルー
チング(route)する。UNC FSDが呼出されるユニバーサ
ルネーミングコンベンション(Universal Naming Conve
ntion、「UNC」)のグローバルネットワーク名を表示す
る「\\」で経路(path)が始まる場合には、制御は項
目806に渡される。ローカル装置が表示される場合に
は、制御が項目808に渡されて、カーネル内でリクエス
トが処理される。疑似装置又は遠隔ファイルが表示され
るときには、制御は項目810に渡されて、疑似装置又は
遠隔ファイルが取付けられた遠隔FSDに対するリクエス
トをルーチングする。名前付けされたパイプ(named pi
pe)が検出された場合には、制御は項目812に渡され
て、カーネル内で局所的な名前付けされたパイプコード
(local named pipe code)を呼出す。ローカルファイ
ルが表示される場合には、制御は項目814に渡される。
この項目814は、項目816におけるFSHDOVOLIOを呼出すこ
とによりボリュームへの読取り及び書込みを行うFSDに
おけるFSDワーカーである。FSHDO−VOLIOについては、
第11図に関連して更に詳細に説明する。
次に、第9図を参照して、構文解析処理802を説明す
る。呼出しがあると、項目902は、現在のドライブ、現
在のディレクトリ及びネーム自体に基づいて、関心のあ
るネームを基準形(canonical form)に変形する。次
に、変数TCBTHISFSC、TCHThisVPB及びpathnamet−ypeが
下記のようにして決定される。デシジョン904は、ユー
ザのネームが「\\」で始まっているか否かを決定し
て、UNCネームが表示されているか否かを決定する。UNC
ネームが表示されていれば、制御が項目905に渡され
て、ここで、変数PathType、TchThishVPB及びTCBThisFC
Hが初期化され、ユーザのネームを適当な位置にルーチ
ングする。UNCネームが表示されていなければ、デシジ
ョン906は、関心をもつネームが、カーネルにより維持
された装置ネームリスト中のネームであるか否かを決定
する。装置のネームリストに載ったネームであるときに
は、デシジョン908は、それが疑似文字装置であるか否
かを決定する。疑似文字装置であれば、項目910は表示
されたように変数を設定する。疑似文字装置でないとき
は、制御は、表示されたように変数を設定する項目912
に渡される。
デシジョン914は、ネームの始めにおける「\pipe\」
を探すことにより、そのネームが、名前付けされたパイ
プであるか否かを決定する。そのネームが名前付けされ
たパイプであるときは、項目916は、表示のように変数
を設定する。名前付けされたパイプでないときは、デシ
ジョン918は、そのネームがローカルドライブ又は遠隔
ドライブのパスネーム(pathname)を表示するか否かを
決定する。遠隔ドライブが表示されているときは、制御
は、表示されたように変数PathType、TchThishVPB及びT
CBThisFCHを設定する項目920に渡される。それ以外のと
きは、制御は、項目922に導かれ、ここでは、どのボリ
ュームから適当なデータを読取るかが呼出される。What
Volumeが戻ると、制御は、表示されたように変数PathT
ype、TchThishVPB及びTCBThisFCHを設定する項目924に
渡される。
第10図を参照すると、ハンドルに戻づくオペレーション
に関するプロセス1000が呼出される。プロセス1000が呼
出されたときに、項目1002は、SFTエントリを検索す
る。SFTエントリ及びハンドルは、両方ともDosOpenによ
り設定される。次いで、TCBThisFSCが表示されたように
設定される。次に、項目1004は、FSCが指し示すファイ
ルシステムについて適合FSDワーカーを呼出す。hVPB
は、SFTエントリから次々に渡される。次いで、項目100
6は、項目1016を呼出し、必要に応じて項目1016を呼出
すことにより、呼出し者(caller)によりリクエストさ
れたあらゆるI/Oを実行する。
第11図を参照すると、FSH Do Vol IOが示されている。
項目1102において呼出されると、hVPBが使用されて、ど
のようなボリュームがドライブにあり関心のあるボリュ
ームであるのかを決定する。次に、デシジョン1104は、
ドライブにおけるボリュームが関心のあるボリュームで
あるか否かを決定する。関心のあるボリュームであると
きは、項目1106が呼出されて、デバイスドライバが呼出
されかつ特定されたパラメータでI/Oを実行する。次に
デシジョン1108は、オペレーション中にメディアが不確
実に移行したか否かを決定する。不確実に移行していな
いときには、プロセスは項目1114に戻る。デシジョン11
08が、メディアは不確実ではないと決定するときには、
制御は項目1112に渡されて、ここでは、WhatVolumeが呼
出されてメディアを確実にする。次いで、制御はデシジ
ョン1104に戻る。ドライブにおけるボリュームが関心の
あるボリュームに一致しないときには、項目1110が呼出
されて、HardErrorが呼出され、ドライブに正しいボリ
ュームを置くことをユーザに知らせる。次に制御は上記
項目1112に渡される。
付録(Appendix)IIからVIは、設置可能なファイルシス
テムの資源の一例としてここに包含される。ここで、 付録IIは、本発明の教示に従ってサポートすることが期
待されるファイルシステムを移出インタフェース(expo
rted interfaces)のリストである。
付録IIIは、ファイルシステムが用いうるカーネルによ
り移出されるインタフェースのリストである。
付録IVは、本発明に従って構成された設置可能なファイ
ルシステムの一例の資源コードである。
付録Vは、付録IVのFSDを作るべくOS/2リンカにより用
いられる定義ファイル(definitions file)のリストで
ある。
付録VIは、付録IVのIFSによって用いられる構造及びパ
ラメータを定義するヘッダファイルである。
以上、設置可能なファイルシステムにおいてダイナミッ
クボリュームトラッキングに関する改善された方法及び
システムが説明された。本発明の教示によれば、コンピ
ュータシステムは、リンクされたリストで編成された複
数のファイルシステムドライバを備える。コンピュータ
システムは、更に、省略時ファイルシステムドライバを
備える。コンピュータシステムに新しいボリュームが与
えられたとき、又はメディアが不確実になったときには
いつでも、コンピュータシステムは、ファイルシステム
ドライバがボリュームを受け入れるまで、自動的かつダ
イナミックにファイルシステムドライバを呼び出す。ど
のファイルシステムドライバもボリュームを受け入れな
い場合には、省略時ファイルシステムがマウントされ
る。従って、当業者には、本発明の他の用法及び変更が
可能であり、そのようなあらゆる用法及び変更は本発明
の範囲及び精神に含まれるものである。
【図面の簡単な説明】
第1A図は、本発明の原理に従って構成されたコンピュー
タシステムのブロックダイアグラムである。 第1B図は、第1A図のコンピュータシステムの作業及びフ
ァイルシステムアーキテクチュアを示すブロックダイヤ
グラムである。 第2A図は、MS−DOSオペレーティングシステムのファイ
ルシステム構成の詳細を示すブロックダイアグラムであ
る。 第2B図は、本発明の設置可能なファイルシステムのファ
イルシステム構成の詳細を示すブロックダイヤグラムで
ある。 第3図は、第2B図のファイルシステムのより詳細なブロ
ックダイヤグラムである。 第4図は、FATファイルシステムのディスクフォーマッ
トを示すブロックダイヤグラムである。 第5A図〜第5H図は、本発明に使用できるように構成され
た設置可能なファイルシステムのディスクフォーマット
を示すブロックダイヤグラムである。 第6図は、本発明のマウントプロセスの全作業の詳細を
示すフローチャートである。 第7図は、本発明の設置可能なファイルシステムの構成
を示すブロックダイヤグラムである。 第8図は、本発明の原理に従がうネームベース作業の実
行の詳細を示すフローチャートである。 第9図は、ネームベース作業プロセスにより呼出されう
パーシングプロセスを示すフローチャートである。 第10図は、本発明の原理に従がうハンドルベース作業の
実行を示すフローチャートである。 第11図は、第8図及び第10図に関連して説明したプロセ
スにより呼出されるFSH_DoVolloプロセスを示すフロー
チャートである。 100……コンピュータシステム、 102……マイクロプロセッサ、 104……ランダムアクセスメモリ、 106……リードオンリメモリ、 108……マウス、 110……キーボード、 112……ディスプレイ、 114……プリンタ、 116……フロッピディスクドライブ、 120……ハードディスクドライブ、 122……CD−ROMドライブ、 124……テープドライブ、 126……ネットワーク。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェイムズ ジー レツウィン アメリカ合衆国 ワシントン州 98033 カークランド ノースイースト ワンハン ドレッドアンドフォース ストリート 11428 (72)発明者 ラジェン ジャヤンティラル シャー アメリカ合衆国 ワシントン州 98005 ベルヴィュー ワンハンドレッドアンドト ゥエンティサード アベニュー ノースイ ースト 517

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】データ記憶装置とコンピュータシステムと
    の通信に用いるファイルシステムドライバを装填する方
    法であって、前記方法は、 (a)省略時ファイルシステムドライバモジュールを含
    むコンピュータオペレーティングシステムに複数のファ
    イルシステムドライバモジュールを含み、 前記ファイルシステムドライバモジュールが順次に編成
    され、前記複数のファイルシステムドライバのそれぞれ
    及び前記省略時ファイルシステムモジュールが識別子と
    対応付けられており、 (b)データ記憶装置を前記コンピュータシステムに結
    合し、 (c)前記データ記憶装置での媒体の変化又は最初に前
    記コンピュータシステムが前記データ記憶装置をアクセ
    スするときを検出し、 (d)ロードされたファイルシステムドライバモジュー
    ルとして前記複数のファイルシステムドライバモジュー
    ルの一つを識別し、 (e)前記媒体からボリューム識別子を読み取り、前記
    ボリューム識別子の位置が前記ロードされたファイルシ
    ステムドライバモジュールによって特定され、 (f)前記媒体から読み取られたボリューム識別子を前
    記ロードされたファイルシステムドライバモジュールに
    対応付けられた識別子と比較し、 (g)もし前記識別子が一致するならば、前記ロードさ
    れたファイルシステムドライバモジュールを前記媒体に
    対応付け、 (h)もし前記識別子が一致しないならば、前記ロード
    されたファイルシステムドライバモジュールとして前記
    複数のファイルシステムドライバモジュールのリストの
    中の次のファイルシステムドライバモジュールを識別
    し、 (i)前記リストの中の前記複数のファイルシステムド
    ライバモジュールのそれぞれがテストされるまで又は一
    致が見出されるまで前記段階(e)へ戻り、 (j)もし一致が見出されないならば、前記省略時ファ
    イルシステムドライバモジュールを前記媒体に対応付け
    る段階を具備することを特徴とする方法。
  2. 【請求項2】ファイルシステムドライバを記憶媒体に対
    応付けるべくコンピュータシステムを動作する方法であ
    って、前記コンピュータシステムは、少なくとも第1及
    び第2のファイルシステムドライバを含んでおり、もし
    前記ファイルシステムドライバが前記記憶媒体を認識す
    るならば、各前記第1及び第2のファイルシステムドラ
    イバは、ある一定の媒体信号を供給すべく装填指令に応
    答するように構成されており、前記方法は、 (a)前記記録媒体を読み出すのに必要な前記記憶媒体
    の基礎的特性を識別すべく一時的なボリュームパラメー
    タブロックを生成し、前記ボリュームパラメータブロッ
    クを識別すべくブロックポインタを供給し、 (b)前記第1のファイルシステムドライバへ前記装填
    指令及び前記ブロックポインタを供給し、ある一定の媒
    体信号について前記第1のファイルシステムドライバを
    監視し、そして、もし前記ある一定の媒体信号が供給さ
    れたならば、前記第1のファイルシステムドライバを前
    記記録媒体に対応付け、もし前記ある一定の媒体信号が
    供給されなければ、段階(c)を実行し、 (c)前記第2のファイルシステムドライバへ前記装填
    指令及び前記ブロックポインタを供給し、ある一定の媒
    体信号について前記第2のファイルシステムドライバを
    監視し、そして、もし前記ある一定の媒体信号が供給さ
    れたならば、前記第2のファイルシステムドライバを前
    記記憶媒体に対応付ける段階を具備することを特徴とす
    る方法。
  3. 【請求項3】前記方法は、更に、 (e)前記記憶媒体に対応付けられたファイルシステム
    を識別すべく、前記記憶媒体の一時的なボリュームパラ
    メータブロックにファイルシステムドライバ識別ワード
    を記憶し、 (f)前記一時的なボリュームパラメータブロックを前
    記記憶媒体に対応付け、それによって前記ファイルシス
    テムドライバ識別ワードにより識別された前記ファイル
    システムドライバを前記記憶媒体に対応付ける段階を備
    えていることを特徴とする請求項2に記載の方法。
  4. 【請求項4】予め識別された媒体について複数の永久的
    なボリュームパラメータブロックが存在する請求項2に
    記載の方法であって、前記方法は、更に、 (g)それが記述する前記記憶媒体が前記ファイルシス
    テムドライバに対応付けられた後、前記一時的なボリュ
    ームパラメータブロックに前記記憶媒体の付加的な特性
    を供給し、 (h)いずれかの永久的なボリュームパラメータブロッ
    クが前記一時的なボリュームパラメータブロックと同一
    の記憶媒体を記述するかどうかを決定すべく、前記一時
    的なボリュームパラメータブロックの前記予め決められ
    た特性及び前記付加的な特性を前記複数の永久的なボリ
    ュームパラメータブロックの特性と比較し、もしそうで
    あれば、前記永久的なボリュームパラメータブロックの
    情報を更新しかつ前記一時的なボリュームパラメータブ
    ロックを削除し、もしそうでなければ、前記一時的なボ
    リュームパラメータブロックを前記永久的なボリューム
    パラメータブロックに変換する段階を具備することを特
    徴とする方法。
  5. 【請求項5】前記コンピュータシステムは、更に、取り
    外し可能な記憶媒体を受け取るためのディスクドライブ
    を含んでおり、前記ディスクドライブは、前記ディスク
    ドライブの記憶媒体が変更されたことを示すラッチ信号
    を供給すべく構成されている請求項2に記載の方法であ
    って、前記方法は、更に、 (i)前記段階(a)から(c)を実行すべく前記ラッ
    チ信号に応答する段階を具備することを特徴とする方
    法。
  6. 【請求項6】前記方法は、更に、 (j)前記記憶媒体のいずれのアクセスより以前に、記
    憶媒体への連続するアクセスの間で経過した時間間隔を
    決定し、もし時間間隔が予め決められた最大間隔を越え
    たならば、前記段階(a)から(c)を実行することを
    特徴とする請求項2に記載の方法。
  7. 【請求項7】第1及び第2のファイルシステムに従って
    書式化された記憶媒体とインタフェースするべくコンピ
    ュータシステムを動作する方法であって、前記方法は、 (a)コンピュータを第1及び第2のファイルシステム
    に従って書式化された記憶媒体とインタフェースするた
    めの第1及び第2のファイルシステムドライバをそれぞ
    れ供給し、 各前記第1及び第2のファイルシステムドライバは、前
    記記憶媒体を調べるために、かつ前記ファイルシステム
    ドライバが前記記憶媒体を認識するならばある特定の媒
    体信号を供給するために、装填指令に応答するように構
    成されており、 (b)前記記憶媒体を調べるために前記第1及び第2の
    ファイルシステムドライバを許容すべく前記記憶媒体の
    基本的特性を識別すべく一時的なボリュームパラメータ
    ブロックを生成し、 (c)前記第1及び第2のファイルシステムドライバに
    装填指令及びブロックポインタを逐次供給し、ある一定
    の媒体信号について前記第1及び第2のファイルシステ
    ムドライバを監視し、もし前記ある一定の媒体信号が前
    記第1のファイルシステムドライバによって供給された
    ならば、前記第1のファイルシステムドライバを前記記
    憶媒体に対応付け、もし前記ある一定の媒体信号が前記
    第2のファイルシステムドライバによって供給されたな
    らば、前記第2のファイルシステムドライバを前記記憶
    媒体に対応付け、そして (d)前記記憶媒体を前記コンピュータシステムとイン
    タフェースするべく、前記記憶媒体に対応付けられた前
    記ファイルシステムドライバを用いる段階を具備するこ
    とを特徴とする方法。
  8. 【請求項8】前記コンピュータシステムは、更に、第3
    のファイルシステムドライバを含んでおり、前記第1及
    び第2のファイルシステムドライバに装填指令及びブロ
    ックポインタを供給する前記段階(c)は、更に、 (e)もし前記ある一定の媒体信号が前記第1及び第2
    のファイルシステムドライバによって供給されなかった
    ならば、前記第3のファイルシステムドライバを前記記
    憶媒体に対応付ける副段階を具備することを特徴とする
    請求項7に記載の方法。
  9. 【請求項9】前記方法は、更に、 (f)前記記憶媒体に対応付けられたファイルシステム
    を識別すべく前記記憶媒体の一時的なボリュームパラメ
    ータブロックにファイルシステムドライバ識別ワードを
    記憶し、 (g)前記一時的なボリュームパラメータブロックを前
    記記憶媒体に対応付け、それによって前記ファイルシス
    テムドライバ識別ワードによって識別されたファイルシ
    ステムドライバを前記記憶媒体に対応付ける段階を具備
    することを特徴とする請求項8に記載の方法。
  10. 【請求項10】予め識別された媒体について複数の永久
    的なボリュームパラメータブロックが存在する請求項8
    に記載の方法であって、前記方法は、更に、 (h)それが記述する前記記憶媒体がファイルシステム
    ドライバに対応付けられた後、前記記憶媒体の付加的な
    特性を前記一時的なボリュームパラメータブロックに供
    給し、 (i)いずれかの永久的なボリュームパラメータブロッ
    クが前記一時的なボリュームパラメータブロックと同一
    の記憶媒体を記述するかどうかを決定すべく、前記一時
    的なボリュームパラメータブロックの前記予め決められ
    た特性及び前記付加的な特性を前記複数の永久的なボリ
    ュームパラメータブロックの特性と比較し、同一の記憶
    媒体を記述する場合には、前記永久的なボリュームパラ
    メータブロックを更新しかつ前記一時的なボリュームパ
    ラメータブロックを削除し、同一の記憶媒体を記述しな
    い場合には、前記一時的なボリュームパラメータブロッ
    クを前記永久的なボリュームパラメータブロックに変換
    する段階を具備することを特徴とする方法。
  11. 【請求項11】第1及び第2のファイルシステムに従っ
    て書式化された記憶媒体とインタフェースするコンピュ
    ータシステムであって、前記コンピュータシステムの動
    作を制御するデータプロセッサ手段と、第1及び第2の
    ファイルシステムドライバを記憶する第1の記憶手段
    と、装填ルーチンを記憶する第2の記憶手段とを備えて
    おり、各前記第1及び第2のファイスシステムドライバ
    は、前記データプロセッサ手段を前記第1及び第2のフ
    ァイルシステムに従って書式化された記憶媒体とインタ
    フェースするための命令をそれぞれ含んでおり、各前記
    第1及び第2のファイルシステムドライバは、更に、装
    填指令に応答して前記記憶媒体を読み出すべく、かつ、
    もし前記ファイルシステムドライバが前記記憶媒体を認
    識するならば、ある一定の媒体信号を提供すべく、前記
    データプロセッサ手段を制御する装填命令を含んでお
    り、前記装填ルーチンは、前記第1の記憶手段の前記第
    1及び第2のファイルシステムドライバの装填命令を連
    続的にアクセスすべく、もし前記ある特定の媒体信号が
    前記第1のファイルシステムドライバによって供給され
    るならば前記第1のファイルシステムドライバを前記記
    憶媒体に対応付けるべく、そしてもし前記ある特定の媒
    体信号が前記第2のファイルシステムドライバによって
    供給されるならば前記第2のファイルシステムドライバ
    を前記記憶媒体に対応付けるべく前記データプロセッサ
    手段を制御する命令を含むことを特徴とするコンピュー
    タシステム。
  12. 【請求項12】前記コンピュータシステムは、更に、取
    り外し可能な記憶媒体を受け取るディスクドライブ手段
    を備えており、前記ディスクドライブ手段は、当該ディ
    スクドライブでの記憶媒体が変更されたことを示すため
    のラッチ信号を供給すべく構成されており、 前記データプロセッサ手段は、前記第2の記憶手段の装
    填ルーチンをアクセスすべく前記ラッチ信号に応答する
    ことを特徴とする請求項11に記載のコンピュータシステ
    ム。
  13. 【請求項13】第1及び第2のファイルシステムに従っ
    て書式化された記憶媒体とインタフェースすべくコンピ
    ュータシステムを動作する方法であって、前記方法は、
    第1及び第2のファイルシステムドライバを供給し、前
    記第1及び第2のファイルシステムドライバは、前記第
    1及び第2のファイルシステムにそれぞれ対応付けられ
    ており、各前記第1及び第2のファイルシステムドライ
    バは、記憶媒体が、前記ファイルシステムドライバが対
    応付けられているファイルシステムに従って書式化され
    たかどうかを決定するための命名の集合を含んでおり、
    記憶媒体が、前記第1及び第2のファイルシステムドラ
    イバにそれぞれ対応付けられた、前記第1及び第2のフ
    ァイルシステムに従って書式化されたかどうかを決定す
    べく、前記第1及び第2のファイルシステムドライバの
    前記命令の集合を逐次実行し、もし前記記憶媒体が前記
    第1のファイルシステムに従って書式化されたならば、
    前記第1のファイルシステムドライバを前記記憶媒体に
    対応付け、もし前記記憶媒体が前記第2のファイルシス
    テムに従って書式化されたならば、前記第2のファイル
    システムドライバを前記記憶媒体に対応付ける段階を具
    備することを特徴とする方法。
  14. 【請求項14】前記方法は、更に、第3のファイルシス
    テムに対応付けられた第3のファイルシステムドライバ
    を供給し、もし前記記憶媒体が前記第1及び第2のファ
    イルシステムに従って書式化されないならば、前記第3
    のファイルシステムドライバを前記記憶媒体に対応付け
    る段階を具備することを特徴とする請求項13に記載の方
    法。
  15. 【請求項15】前記コンピュータシステムは、更に、取
    り外し可能な記憶媒体を受け取るディスクドライブを含
    んでおり、前記ディスクドライブは、当該ディスクドラ
    イブでの記憶媒体が変更されたことを示すためのラッチ
    信号を供給すべく構成されており、前記方法は、更に、
    前記ディスクドライブでの前記記憶媒体が、前記第1又
    は第2のファイルシステムに従って書式化されたかどう
    かを決定するラッチ信号に応答する段階を具備すること
    を特徴とする請求項13に記載の方法。
  16. 【請求項16】前記方法は、更に、前記記憶媒体のいず
    れのアクセスより以前に、当該記憶媒体への連続するア
    クセスの間で経過した時間間隔を決定し、もし時間間隔
    が予め決められた最大間隔を越えたならば、前記ティス
    クドライブでの記憶媒体が前記第1又は第2のファイル
    システムに従って書式化されたかどうかを決定する段階
    を具備することを特徴とする請求項13に記載の方法。
JP2227905A 1989-08-29 1990-08-29 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置 Expired - Lifetime JPH07104808B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/400,531 US5363487A (en) 1989-08-29 1989-08-29 Method and system for dynamic volume tracking in an installable file system
US400531 1989-08-29

Publications (2)

Publication Number Publication Date
JPH03171238A JPH03171238A (ja) 1991-07-24
JPH07104808B2 true JPH07104808B2 (ja) 1995-11-13

Family

ID=23583983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2227905A Expired - Lifetime JPH07104808B2 (ja) 1989-08-29 1990-08-29 設置可能なファイルシステムにおいてダイナミックボリュームトラッキングを行う方法及び装置

Country Status (6)

Country Link
US (1) US5363487A (ja)
EP (1) EP0415346B1 (ja)
JP (1) JPH07104808B2 (ja)
AU (1) AU631452B2 (ja)
CA (1) CA2024125C (ja)
DE (1) DE69032517T2 (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618540B1 (en) * 1993-04-01 2001-12-12 Microsoft Corporation Common name space for long and short filenames
US6286013B1 (en) * 1993-04-01 2001-09-04 Microsoft Corporation Method and system for providing a common name space for long and short file names in an operating system
US5692128A (en) * 1993-06-23 1997-11-25 Microtest, Inc. Computer network with reliable and efficient removable media services
JP3197403B2 (ja) * 1993-09-07 2001-08-13 富士通株式会社 計算機システムのアプリケーションプログラム障害発生時の制御方法
JP3315779B2 (ja) * 1993-11-16 2002-08-19 富士通株式会社 ディスク装置間のファイル転送装置およびファイル転送方法
JP3796551B2 (ja) * 1994-04-25 2006-07-12 ソニー株式会社 情報記憶処理装置
US5574903A (en) * 1994-05-13 1996-11-12 Apple Computer, Inc. Method and apparatus for handling request regarding information stored in a file system
US5668970A (en) * 1994-06-20 1997-09-16 Cd Rom, U.S.A., Inc. Method and apparatus for generating a file allocation table for a storage medium with no file allocation table using file storage information
US5624265A (en) * 1994-07-01 1997-04-29 Tv Interactive Data Corporation Printed publication remote contol for accessing interactive media
US5711672A (en) * 1994-07-01 1998-01-27 Tv Interactive Data Corporation Method for automatically starting execution and ending execution of a process in a host device based on insertion and removal of a storage media into the host device
JPH0830397A (ja) * 1994-07-20 1996-02-02 Sony Corp 情報記憶装置
US5590320A (en) * 1994-09-14 1996-12-31 Smart Storage, Inc. Computer file directory system
US5689701A (en) * 1994-12-14 1997-11-18 International Business Machines Corporation System and method for providing compatibility between distributed file system namespaces and operating system pathname syntax
US5930831A (en) * 1995-02-23 1999-07-27 Powerquest Corporation Partition manipulation architecture supporting multiple file systems
US6108759A (en) * 1995-02-23 2000-08-22 Powerquest Corporation Manipulation of partitions holding advanced file systems
US5706472A (en) * 1995-02-23 1998-01-06 Powerquest Corporation Method for manipulating disk partitions
US5675769A (en) * 1995-02-23 1997-10-07 Powerquest Corporation Method for manipulating disk partitions
US5740469A (en) * 1995-04-24 1998-04-14 Motorola Inc. Apparatus for dynamically reading/writing multiple object file formats through use of object code readers/writers interfacing with generalized object file format interface and applications programmers' interface
US5715455A (en) * 1995-05-18 1998-02-03 International Business Machines Corporation Apparatus and method for storing file allocation table efficiently in memory
US5680303A (en) * 1995-06-07 1997-10-21 Compuserve Incorporated Communication device sharing on a local area network
US5727205A (en) * 1995-06-28 1998-03-10 Canon Information Systems, Inc. File installation system for displaying bitmaps during file installation
US5633843A (en) * 1995-07-24 1997-05-27 International Business Machines, Corporation User friendly compact disk (CD) read only memory (ROM) player
US5778383A (en) * 1995-08-08 1998-07-07 Apple Computer, Inc. System for dynamically caching and constructing software resource tables
US5923876A (en) * 1995-08-24 1999-07-13 Compaq Computer Corp. Disk fault prediction system
US5819276A (en) 1995-10-06 1998-10-06 International Business Machines Corporation Method for supporting multiple file-systems in file input/output operations
US5721948A (en) * 1996-02-29 1998-02-24 Sun Microsystems, Inc. System for creating mount command from verified programmable options compatible with file system types to attach media file system to an existing file system
US5983283A (en) * 1996-04-15 1999-11-09 Sun Microsystems, Inc. Storage manager independent configuration interface translator and method
US5668996A (en) * 1996-04-29 1997-09-16 Microsoft Corporation Rendering CD redbook audio using alternative storage locations and formats
US6119118A (en) * 1996-05-10 2000-09-12 Apple Computer, Inc. Method and system for extending file system metadata
US5673382A (en) * 1996-05-30 1997-09-30 International Business Machines Corporation Automated management of off-site storage volumes for disaster recovery
US6424991B1 (en) 1996-07-01 2002-07-23 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server communication framework
US5999972A (en) * 1996-07-01 1999-12-07 Sun Microsystems, Inc. System, method and article of manufacture for a distributed computer system framework
US6266709B1 (en) 1996-07-01 2001-07-24 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server failure reporting process
US6434598B1 (en) 1996-07-01 2002-08-13 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6272555B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system
US5987245A (en) * 1996-07-01 1999-11-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework
US6038590A (en) * 1996-07-01 2000-03-14 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system
US5848246A (en) * 1996-07-01 1998-12-08 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system
US5832213A (en) * 1996-07-03 1998-11-03 Sun Microsystems, Inc. Flexible mounting and unmounting of user removable media
US5991542A (en) * 1996-09-13 1999-11-23 Apple Computer, Inc. Storage volume handling system which utilizes disk images
US5832501A (en) * 1996-12-31 1998-11-03 Apple Computer, Inc. Method and system for filtering file manager attribute values
US5956745A (en) * 1997-04-23 1999-09-21 Novell, Inc. System and method for automatically resizing a disk drive volume
US6119212A (en) * 1997-04-23 2000-09-12 Advanced Micro Devices, Inc. Root size decrease on a UNIX based computer system
US5991777A (en) 1997-09-19 1999-11-23 Microsoft Corporation System and method for performing defined actions when grafting the name space of one storage medium into the name space of another storage medium
US6125373A (en) * 1997-09-19 2000-09-26 Microsoft Corporation Identifying a driver that is an owner of an active mount point
US6226711B1 (en) 1998-06-09 2001-05-01 International Business Machines Corporation Method, apparatus and frame format to prevent data loss in a removable media library system due to incorrect configuration of devices
US6732303B1 (en) * 1998-10-22 2004-05-04 Matsushita Electric Industrial Co., Ltd. Information recording medium, and method and apparatus for managing defect thereof
ES2618230T3 (es) * 1998-11-16 2017-06-21 Microsoft Technology Licensing, Llc Procedimiento de ejecución de una aplicación sin estar instalada
US7296060B2 (en) * 1998-12-24 2007-11-13 Intel Corporation System and method for automatically identifying and attaching related documents
US6578054B1 (en) * 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US7167867B1 (en) * 1999-10-05 2007-01-23 Emc Corporation Self-describing file system
GB0102515D0 (en) * 2001-01-31 2001-03-21 Hewlett Packard Co Network adapter management
US6850929B2 (en) * 2001-03-08 2005-02-01 International Business Machines Corporation System and method for managing file system extended attributes
US6988101B2 (en) * 2001-05-31 2006-01-17 International Business Machines Corporation Method, system, and computer program product for providing an extensible file system for accessing a foreign file system from a local data processing system
US7640582B2 (en) 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US20040139125A1 (en) * 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US6757695B1 (en) * 2001-08-09 2004-06-29 Network Appliance, Inc. System and method for mounting and unmounting storage volumes in a network storage environment
US6697924B2 (en) 2001-10-05 2004-02-24 International Business Machines Corporation Storage area network methods and apparatus for identifying fiber channel devices in kernel mode
US6909910B2 (en) 2002-02-01 2005-06-21 Microsoft Corporation Method and system for managing changes to a contact database
US7917466B2 (en) * 2002-02-21 2011-03-29 Hewlett-Packard Development Company, L.P. Automatically processing digital assets of a digital camera
US20040024856A1 (en) * 2002-07-30 2004-02-05 Gary Gere Method and system for a services environment management engine
US8001088B2 (en) * 2003-04-04 2011-08-16 Avid Technology, Inc. Indexing media files in a distributed, multi-user system for managing and editing digital media
US7644376B2 (en) 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
US7698744B2 (en) * 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US9639554B2 (en) * 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US8290901B2 (en) * 2005-03-07 2012-10-16 Novell, Inc. Techniques for remote resource mounting
US7640292B1 (en) * 2005-04-29 2009-12-29 Netapp, Inc. Physical server to virtual server migration
US9971776B1 (en) * 2006-06-29 2018-05-15 Veritas Technologies Llc Method and apparatus for extending functionality of an operating system
JP5033095B2 (ja) * 2008-09-29 2012-09-26 株式会社日立ソリューションズ ストレージ管理媒介サーバ及びその制御方法
US8234316B2 (en) * 2008-09-30 2012-07-31 Microsoft Corporation Nested file system support
US8200895B2 (en) * 2009-05-04 2012-06-12 Microsoft Corporation File system recognition structure
US8589913B2 (en) * 2009-10-14 2013-11-19 Vmware, Inc. Tracking block-level writes
US9558074B2 (en) * 2010-06-11 2017-01-31 Quantum Corporation Data replica control
US8984032B2 (en) * 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US20170083630A1 (en) * 2015-09-21 2017-03-23 Egemen Tas Method to virtualize large files in a sandbox
US9542277B2 (en) * 2014-09-30 2017-01-10 International Business Machines Corporation High availability protection for asynchronous disaster recovery
US10496607B2 (en) * 2016-04-01 2019-12-03 Tuxera Inc. Systems and methods for enabling modifications of multiple data objects within a file system volume
US10307649B1 (en) 2017-12-06 2019-06-04 Acushnet Company Multi-material iron golf club head
JP7362349B2 (ja) * 2019-08-23 2023-10-17 キヤノン株式会社 制御装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4158865A (en) * 1975-01-24 1979-06-19 Olympus Optical Company Ltd. Automatic switching device for cassette tape recorder
DE2938937C2 (de) * 1978-09-27 1985-12-12 Hitachi, Ltd., Tokio/Tokyo Einstellvorrichtung und Verfahren für ein Magnetband-Aufzeichungs- und Wiedergabegerät
JPS5570915A (en) * 1978-11-24 1980-05-28 Pioneer Electronic Corp Detection method for optimum recording bias for magnetic recording and reproducing unit
US4589063A (en) * 1983-08-04 1986-05-13 Fortune Systems Corporation Data processing system having automatic configuration
US4701848A (en) * 1984-11-19 1987-10-20 Clyde, Inc. System for effectively paralleling computer terminal devices
US4974151A (en) * 1985-02-21 1990-11-27 International Business Machines Corporation Configuration capability for devices in an open system having the capability of adding or changing devices by user commands
US4649479A (en) * 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
US4912627A (en) * 1985-08-14 1990-03-27 Apple Computer, Inc. Method for storing a second number as a command address of a first peripheral device and a third number as a command address of a second peripheral device
US4787028A (en) * 1985-09-03 1988-11-22 Ncr Corporation Multicommunication protocol controller
US4825354A (en) * 1985-11-12 1989-04-25 American Telephone And Telegraph Company, At&T Bell Laboratories Method of file access in a distributed processing computer network
US4975829A (en) * 1986-09-22 1990-12-04 At&T Bell Laboratories Communication interface protocol

Also Published As

Publication number Publication date
AU631452B2 (en) 1992-11-26
EP0415346B1 (en) 1998-07-29
CA2024125A1 (en) 1991-03-01
DE69032517T2 (de) 1998-12-10
AU6191390A (en) 1991-03-07
CA2024125C (en) 1995-11-14
DE69032517D1 (de) 1998-09-03
EP0415346A2 (en) 1991-03-06
JPH03171238A (ja) 1991-07-24
EP0415346A3 (en) 1992-10-21
US5363487A (en) 1994-11-08

Similar Documents

Publication Publication Date Title
CA2024125C (en) Dynamic volume tracking in an installable file system
US5608901A (en) Method and system for improving the contiguity of sectors of a file
US6792518B2 (en) Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
US6185575B1 (en) In-place disk partition canonization and storage optimization
US6934822B2 (en) Organization of multiple snapshot copies in a data storage system
US6957362B2 (en) Instantaneous restoration of a production copy from a snapshot copy in a data storage system
EP1918836B1 (en) Apparatus and method for a hardware-based file system
US7363540B2 (en) Transaction-safe FAT file system improvements
US5261088A (en) Managing locality in space reuse in a shadow written B-tree via interior node free space list
US7680836B2 (en) Systems and methods for a snapshot of data
US8055864B2 (en) Efficient hierarchical storage management of a file system with snapshots
US7882071B2 (en) Systems and methods for a snapshot of data
US7680842B2 (en) Systems and methods for a snapshot of data
US8296264B1 (en) Method and system for file-level continuous data protection
US6223269B1 (en) Stacked mapped storage system
KR100317691B1 (ko) 로그 구조화 목표 저장장치를 사전에 구성하여 볼륨을 효율적으로 복사하는 방법 및 장치
US20110082992A1 (en) Communication-link-attached persistent memory system
US20080046432A1 (en) Systems and methods for a snapshot of data
US7356493B2 (en) Apparatus and method for passing information between catalogs in a computer operating system

Legal Events

Date Code Title Description
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

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

Free format text: PAYMENT UNTIL: 20071113

Year of fee payment: 12

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

Free format text: PAYMENT UNTIL: 20081113

Year of fee payment: 13

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

Free format text: PAYMENT UNTIL: 20091113

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20091113

Year of fee payment: 14

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

Free format text: PAYMENT UNTIL: 20101113

Year of fee payment: 15

EXPY Cancellation because of completion of term