(58)【調査した分野】(Int.Cl.,DB名)
前記第1のホスト装置同期イベントが、前記ホスト装置がパーティションテーブル又はマスタブートレコード及びファイル割り当てテーブル(FAT)ブートブロックを読み取っていることを前記コントローラが検出することにより判別される、請求項9に記載の方法。
前記第1のホスト装置同期イベントが、前記コントローラがホスト装置による前記記憶装置のファイルシステムへのファイルシステム実装動作に一致するアクセスを認識することにより、別のイベントと区別される、請求項9に記載の方法。
前記孤立セクタが、前記ホスト装置が前記記憶装置にアクセスできないようにしながら読み取り/修正/書き込み動作を使用してマークを付けられる、請求項1に記載の方法。
前記記憶装置の削除閾値に達したこと、前記記憶装置に記憶されたファイルが一定数又は一定割合削除されたこと、或いは前記記憶装置内の指定した割合の記憶容量が新たなファイルの記憶に利用可能になったこと、という基準の少なくとも1つが満たされるまで削除処理が繰り返される、請求項1に記載の方法。
前記トリガイベントが、記憶媒体の利用閾値に達した又はこれを超えた旨の指示、プログラムされた動作、又は前記ホスト装置のユーザによる手動介入のうちの1つを含むことを特徴とする、請求項14に記載の記憶装置。
前記候補ファイルが、前記記憶媒体に記憶されている最も古いファイル、前記記憶媒体に記憶されている最後のアクセスからの時間が最も長いファイル、又は前記記憶媒体に記憶されている最もアクセス頻度の低いファイルのうちの1つであることを特徴とする、請求項14に記載の記憶装置。
前記コントローラが、ホスト装置による前記記憶装置のファイルシステムへのファイルシステム実装動作に一致するアクセスを認識することにより、前記第1のホスト装置同期イベントを認識するように構成される、請求項14に記載の記憶装置。
前記コントローラが、前記記憶装置の削除閾値に達したこと、前記記憶装置に記憶されたファイルが一定数又は一定割合削除されたこと、或いは前記記憶装置内の指定した割合の記憶容量が新たなファイルの記憶に利用可能になったこと、という基準の少なくとも1つが満たされるまで削除処理を実行するように構成される、請求項14に記載の記憶装置。
【発明を実施するための形態】
【0012】
米国特許出願公開第2007/0073937号に、DSC及びその他のデジタルメディア装置などのレガシー装置における従来のメディアカードに取って代わる、又はこれの代用となることができるコンテンツアウェアデジタルメディア記憶装置が記載されている。このデジタルメディア記憶装置は、デジタルメディア記憶装置と、互換性のある送信機/受信機/送受信機との間の無線通信を可能にするための無線周波数回路を含む。この記憶装置はまた、フラッシュメモリアレイと、フラッシュメモリアレイ対向及びホスト対向物理層インターフェイスロジックを含むコンピュータ可読命令を実行するように構成されたコントローラとを含む。本文脈では、デジタルメディア記憶装置を(画像、オーディオファイルなどの)デジタルデータの保存場所として使用する(カメラ、オーディオプレーヤ又はその他のホスト装置などの)装置を「ホスト」と呼ぶ。コントローラは、コンピュータ可読命令を実行して、記憶装置のホスト対向物理層インターフェイス(すなわち、DSC又はその他のデジタル装置とのインターフェイス)からフラッシュメモリアレイへのアクセスを代理し、フラッシュメモリアレイに記憶されたデジタルデータを、RF回路を介して遠隔コンピュータシステムにオフロードする。このようにして、ホストカメラから記憶装置を取り外す必要なく、又はホストカメラとコンピュータシステムの間の有線通信リンクを使用する必要なく、デジタル画像及びこれらの関連するメタデータを記憶装置からデジタルフォトアルバムなどに無線で転送することができる。また、記憶された画像がデジタルフォトアルバム又は遠隔コンピュータシステムに正常に転送され次第、これらの画像をメディアカードから自動的に削除することもできる。本明細書では、このような自律削除を容易にするための方法及びシステムについて説明する。なお、残りの説明部分は、フラッシュメモリ記憶媒体を有するメディアカードに関するが、本発明は、(磁気又は光学ディスク、固体記憶媒体又はその他の種類の記憶媒体などの)あらゆる種類の記憶媒体を有するあらゆる記憶装置に適用可能である。従って、本明細書に示すフラッシュメモリの例は、本発明の範囲を限定するためのものではない。
【0013】
図1に、本発明の実施形態により構成されたメディアカード10の形式のデジタルメディア記憶装置の例を示す。図示のように、メディアカード10は、(DSC又はその他のデジタル装置などの)ホストと通信するためのインターフェイス12を含む。インターフェイス12の物理的及び電気的構成は、使用するメディアカードの種類(SD、MMC、CFI、CFII、MS、xDなど)によって異なるが、当業界ではこのようなインターフェイスは周知であり、詳細に説明する必要はない。別の言い方をすれば、このようなインターフェイスは本質的に全く従来型であり、使用するメディアカードの種類に応じて関連業界の仕様に準拠する。
【0014】
ホストインターフェイス12は、メディアカード10内で電気信号を伝えるために使用されるバス14に結合される。場合によっては、バス14は、インターフェイス12と中央処理装置(CPU)16の間の専用バスであってもよく、また場合によっては、CPUと他の構成要素の間の通信に同様に使用される、より一般的なバスであってもよい。インターフェイス12と同様に、(バス14に通信可能に結合された)CPU16も、このようなメディアカードの従来機能である。いくつかの実施形態では、(SRAMなどの)読み取り/書き込みメモリ18を使用することができる。このメモリは、CPU16が計算などを行う場合の便利な記憶場所を提供する。SRAM18は、(図示のように)バス14に通信可能に結合することができ、或いは(別個のメモリバスなどの)プライベートインターフェイスを介して直接CPU16に通信可能に結合することができる。
【0015】
メモリコントローラ20及び関連するメモリアレイ22も存在し、コントローラ20は、バス14及びアレイ22に通信可能に結合される。図には、フラッシュメモリアレイ及びフラッシュメモリコントローラを示しているが、他の記憶媒体及び関連するコントローラを使用してもよい。例えば、比較的新しい形の記憶装置は、従来のCF−IIメディアカードと互換性のある物理フォーマットのミニハードドライブ及び関連するコントローラを内蔵する。このような記憶装置は記憶形式にとらわれず、本発明に関連してこれらを使用することもできる。
【0016】
メディアカード10には、CPU16と通信するためにバス14に通信可能に結合できる無線送受信機24も含まれる。無線機24は、上述した周辺機器の一例であり、この実施形態では、IEEE802.11a/b/g仕様などに準拠することが好ましいが、他の実施形態では、他の形式の無線機又はその他の周辺機器を使用することもできる。例えば、Bluetooth(登録商標)及び/又はGPS仕様に準拠する無線機を使用することができる。これとは別に又はこれに加えて、IEEE802.16規格に準拠する無線機を使用することもできる。周辺ポートの正確な種類は本発明にとって重要ではないが、後述する応用のいくつかでは、メディアカード10に無線通信を提供する周辺装置が必要である。
【0017】
この例では、メディアカード10の物理的寸法が、DSC及びなどの様々なホストの既存のメディアカードインターフェイスに適合する。これまで、無線ネットワーク機能を備えたメディアカードは、非無線対応の同じカードよりも大型であった。通常(又はしばしば)、DSC(及びその他のデジタル装置)は、そのメディアカードをホスト装置の本体に内包する。この結果、大型の無線対応メディアカードは、多くの既存のホスト装置に適合しなかった。しかしながら、様々な実施形態では、本メディアカード10は、レガシーなホストのメディアカードハウジングに収まるようなサイズである。
【0018】
無線機能を備えたメディアカードを様々なホストとともに使用することを阻んでいたその他の非互換性問題は、克服するのがさらに困難である。例えば、無線ネットワーク機能を備えたフラッシュメモリを組み込む従来のメディアカードは、ホスト装置が適当なソフトウェアドライバによってこれらのカードをサポートすることを必要とし、既存の及びレガシーなホストとの互換性がない。すなわち、既存のホストは、これらの機能を有するこれまで利用可能であったメディアカードとともに動作する必要があるファームウェアを単純に含んでいない。逆に、本メディアカードは「自己ホスト」型であり、すなわちこれらのカードは、ホスト装置からのこのようなファームウェアサポートを必要としない。或いは、本メディアカード自体が、オンボードネットワークインターフェイスを備えたホスト装置ではあるが、カードを従来のブロック記憶装置として使用するカメラ又はその他のデジタル装置に対して存在するホスト装置として動作する。このことは、本メディアカードとの間で画像ファイル、オーディオファイル、又はその他のデジタルコンテンツ及びメタデータの読み取り及び書き込みを行うために、既存の及びレガシーなホスト装置が使用するファームウェアを変更する必要がないことを意味する。
【0019】
また、メモリアレイ22の一部を、メディアカードから転送される画像のアップロード状態情報を記憶するために確保することもできる。例えば、無線機を備えたメディアカードをデジタル画像のアップロードに関連して使用する場合、無線ネットワークを介したあらゆるこのようなアップロードの状態に関する情報を維持することは、このような転送が中断された場合に、無線ネットワークとの通信が再確立された時点で正しい開始点から転送を再開できるようにするために重要となり得る。さらに、このような状態情報を維持することにより、いつメディアカードのメモリアレイからオリジナル画像を安全に削除できるかを判断する能力がメディアカードに与えられるようになる。当然ながら、メディアカード上に記憶することに加え、又はこの代わりに、ネットワーク側でアップロード状態を記憶することもできる。情報を「カード上」及び遠隔コンピュータシステム上の両方に記憶することにより、適切な送信中断処理が可能になる。
【0020】
図2に、本発明の別の実施形態により構成されたメディアカード26を示す。このメディアカード26では、フラッシュメモリコントローラ28が、例えば、SD又はCF−I/CF−IIインターフェイスなどのホストインターフェイス30を含む。コントローラ28は、フラッシュメモリアレイ34に通信可能に接続されたフラッシュアレイインターフェイス32も含む。この例では、NANDフラッシュメモリアレイを使用しているが、他の実施形態では、NORフラッシュメモリアレイを使用することができる。
【0021】
メディアカード26は、フラッシュコントローラ28及びメモリアレイ34に通信可能に結合された無線機36も含む。無線機36は、メディアアクセスコントローラ、(中間結果及びコンピュータ可読命令をそれぞれ記憶するための付随する読み取り/書き込みメモリ及びフラッシュメモリを含む)RISCプロセッサ及び無線機フロントエンドをいずれも含む、内蔵型802.11a/b/gなどに準拠する通信装置であってもよい。二次インターフェイス(ホスト装置とのインターフェイスをメディアカードの一次インターフェイスと見なす)の無線特質により、ホストのメディアカードスロットにメディアカードを内包したままで、メディアカードとの間でデジタルコンテンツ(画像など)を転送することができる。メディアスロット内から作業を行うことにより、メディアカードがホスト装置から電力を引き出すことができ、内蔵バッテリの必要性が排除される。ホストインターフェイス(12、30)を介して電力が供給される場合には、或いはメディアカードにバッテリを一体化した実施形態では、メディアカード及びその無線インターフェイスをホストの外部で動作させることもできる。上述したように、本メディアカードは、無線転送機能を可能にするために、従来のフラッシュコントローラ機能に(IEEE802.11a/b/gなどの無線機又はBluetooth無線機などの)無線機、メディアアクセスコントローラ(MAC)、及び組み込みホストCPUを追加している。この組み込みホストCPUが使用するために、ホストのファイルシステム及びメモリアレイに記憶されたデータを解釈するためのソフトウェア構成要素、ローカルエリアネットワーク及び/又は(TCP/IPプロトコルなどを介して)その他のネットワークに接続するためのソフトウェア構成要素、及び無線インターフェイスハードウェアの低水準ドライバタスクを管理するためのソフトウェア構成要素が全て含まれる。
【0022】
説明したように、本発明により構成されたメディアカードは、DSC、デジタルビデオカメラ、携帯電話機、パーソナルコンピュータ、携帯情報端末、及び同様の装置などの様々な装置に関連して使用することができる。以下の説明の大半は、このようなメディアカードをDSCとともに使用することに焦点を当てており、以下、本発明により構成されたデジタルメディア記憶装置にDSCが画像データを書き込むという特定の事例に関するファームウェア動作のさらなる詳細を示す。しかしながら、これは、本発明の一例を示すためだけに行うものであることを念頭に置かれたい。本発明の全体的な範囲は、この説明の後の特許請求の範囲に反映されており、この範囲を、本明細書に示すDSCの例の観点からいたずらに限定すべきではない。
【0023】
本発明による、記憶装置に無線通信システムを一体化したメディアカードは、様々なDSC及びその他のホストと互換性を有するように、あらゆる既存のメディアカードフォーマット(SD、MMC、CF、MS、又はxD)に準拠することができる。カメラホストの場合、無線通信装置を一体化することにより、ユーザは、カメラ又はメディアカードを(ユニバーサルシリアルバス(USB)ケーブル又はその他のインターフェイスなどの)物理インターフェイスにテザー接続する必要なく、画像を取り込んだ時点(無線通信が利用可能な場合)又は後の時点で、カメラ(すなわちメディアカード)から(パーソナルコンピュータ、ローカルエリアネットワークに関連するサーバ又は記憶場所、或いはインターネットベースのコンピュータ/記憶リソースなどの)別の装置に画像(又はその他のデータ)をアップロードできるようになる。インターネットベースのコンピュータ/記憶リソースに画像をアップロードする場合、パーソナルコンピュータ、テレビとセットトップボックスの組み合わせ、携帯電話機、又は同様の通信装置のいずれかを使用して、いずれかの従来のウェブブラウザを介してこれらの画像を管理することができる。
【0024】
このように、本発明により構成された様々なメディアカードについて説明しているが、ここで記憶媒体へのデジタルデータの書き込み及び削除方法について説明する。
【0025】
従来のフラッシュコントローラとは異なり、本コントローラ及び関連するファームウェアは、本発明により構成されたデジタルメディア記憶装置がフラッシュアレイに記憶されたデータを解釈して処理できるようにする。本ファームウェアは、フラッシュアレイに書き込まれたファイルシステム構造を使用して装置を「実装」し(コンピュータがあらゆる種類の記憶媒体を使用できるようになる前に、オペレーティングシステムは、この媒体をコンピュータのファイルシステムを通じてアクセス可能にしなければならない〜実装として知られている処理)、このフラッシュアレイに記憶されたファイルの在庫を取得し、これらのファイルのコンテンツを読み取り、(必要に応じて)ファイルシステムに修正を行う。このような修正は、以下に限定されるわけではないが、ファイルの削除及びリネーム、ファイル属性の更新、及び新規ファイルの作成を含む。このことは、情報が固定サイズの不透明なデータブロックの形で記憶アレイに書き込まれるようにして、このブロックをアレイに書き込むのに適した動作を行うにすぎない従来のフラッシュアレイコントローラとは全く対照的である。
【0026】
次に、1つの実施形態では、本デジタルメディア記憶装置は、外部ホストがフラッシュアレイのアドレスを直接指定するのを妨げる。或いは、ホスト装置による全てのアクセスを、フラッシュアレイ内の特定のデータブロックに帰着する前にファームウェアが代理して翻訳する。デジタルメディア記憶装置は、最初に必要に応じて装置を(従来の方法などで)フォーマットし、次に内部マッピングテーブルを初期化して、フォーマット動作中に書き込まれた全てのブロックを直接マッピングし、アレイ内の他の全てのブロックのマッピングを解除することにより、このような動作の準備を整えることができる。この結果、動作の終了後には、ファイル割り当てテーブル(FAT)、ルートディレクトリ構造及びパーティションブートレコードなどのファイルシステムメタデータを含むデータブロックのみが、ホストインターフェイスにおいて示される論理ブロックアドレスからデジタルメディア記憶装置内の物理アドレスへの有効な変換を有するようになる。他の全てのブロックは、未使用及び未割り当てと見なされ、ホスト装置が直接アクセスすることはできない。このようなフォーマット済みの記憶装置の構造を
図3に示す。
【0027】
図示のように、FATファイルシステム40は4つの区画を有する。最初の区画は、(パーティションブートレコードとも呼ばれる)ブートセクタを含むいくつかの予約セクタ42である。この予約セクタは、基本ファイルシステム情報及び他の区画の場所へのポインタのための領域を含む。次はFATセクタ46であり、実際のファイル割り当てテーブル54を含む。このセクタは、基本的にファイル及びディレクトリがどのクラスタを使用するかを示すデータ領域のマップである。次に、ルートディレクトリ領域48が、ルートディレクトリ内に存在するファイル及びディレクトリに関する情報を記憶するディレクトリテーブルを提供する。場合によっては、ルートディレクトリ領域が、ファイル及びその他のディレクトリとともにデータ領域50に記憶され、このような制約を伴わずに増大することができる。最後に、データ領域が、実際のファイル及びディレクトリ(及び、場合によってはサブディレクトリ)データを記憶する。ファイル及びディレクトリのサイズは、FAT内のファイルのチェーンにより多くのリンク56を単純に追加することによって(空きクラスタが存在する限り)任意に増加させることができる。ただし、ファイルはクラスタ52を単位として割り当てられる。
【0028】
この初期化状態から、デジタルメディア記憶装置は、フラッシュアレイ内の空き物理ブロック及び割り当てブロックの論理対物理マッピングの永続データベースを維持する。1つの実施形態では、外部ホストからのブロックアクセスを、以下の方法で阻止することができる。
1)外部ホストによりブロックの読み取りが要求され、そのブロックアドレスの論理対物理マッピングが存在する場合、対応するデータブロックをフラッシュアレイから読み取ってホストに戻す。
2)外部ホストによりブロックの読み取りが要求されたが、そのブロックアドレスの論理対物理マッピングが存在しない場合、デジタルメディア記憶装置は、全てがゼロのブロックデータ読み取り応答(又は他の応答)を作成して、データを外部ホストに戻す。フラッシュアレイは、アクセスを受けることも、新たな記憶又はマッピングが割り当てられることもない。
3)外部ホストによりブロック書き込みが要求され、そのブロックアドレスの論理対物理マッピングが存在する場合、ホストにより提供されたデータを、フラッシュメモリの対応する物理アドレスに書き込む。
4)外部ホストによりブロック書き込みが要求されたが、そのブロックアドレスの既存の論理対物理マッピングが存在しない場合、デジタルメディア記憶装置の空き物理ブロックの内部永続データベースから現在マッピングされていない物理ブロックを取り出し、ホストにより提供されたブロックアドレスから割り当てブロックの物理アドレスへの新しいマッピングを作成する。次に、ホストにより提供されたデータを、フラッシュアレイのその物理アドレスに書き込む。空き物理ブロックが利用可能でない場合、ブロックレベルの装置アクセスエラーをホストに戻す。
【0029】
この動的割り当て論理対物理ブロックアドレスマッピング方式により、本デジタルメディア記憶装置は、そのフラッシュメモリアレイ内のデータを、外部のホストから見える副作用を伴わずに再編成できるようになる。さらに、高水準FATファイルシステム動作をファームウェアが理解することによってこの方式を増補することにより、本記憶装置は、フラッシュアレイに記憶されたファイル又はフォルダのコンテンツを、外部ホスト装置のソフトウェアからのいずれの明確な協調又は同期も伴わずに操作できるようになる。別の言い方をすれば、本発明によってもたらされる利点(フラッシュメモリに記憶されたデータを操作する能力)により、物理ホストの既存のファームウェア又はアプリケーションレベルソフトウェアを変更する必要がなくなる。
【0030】
本発明の実施形態により提供されるアクセス制御をより良く理解するには、従来の取り外し可能媒体及びホスト装置のいくつかの基本的特徴を見直すべきである。今日市販されているほとんどのDSCは、DSCの「デジタルフィルム」スロットに挿入された不揮発性記憶装置を採用している。これらの不揮発性記憶装置は、DSCが取り込んだ画像を記憶するために「FAT」すなわちファイル割り当てテーブルフォーマットを使用する。FATファイルシステムは、MS−DOSを起源とし、(FAT−16及びFAT−32などの)いくつかの変種が使用されている。FATは、デジタルカメラにおいて、DCF2.0として良く知られているJEITA CP−3461規格の一部として使用するように指定されている。DCF2.0(セクション3.2及び5)は、ファイルシステムに加えて、ディレクトリ階層、並びにFATの8+3命名方式のサブセットであるディレクトリ及びファイル命名規則を指定している。
【0031】
DSCは、(メディアカードのフラッシュメモリなどの)記憶装置に画像を記憶する前に、この装置がDCF仕様に従ってフォーマットされているかどうかを判断する。そうでない場合、カメラは、「フォーマット」と呼ばれる処理を通じてデータを系統的に記憶するようにメモリ装置を準備する。フォーマットにより、メモリ装置に記憶された全ての既存のデータが論理的に消去され、FATフォーマットの空のファイルシステム構造が書き込まれる。カメラのFATソフトウェアは、空のファイル割り当てテーブルに書き込みを行い、新規ファイルの記憶に利用できる全てのデータクラスタにマークを付ける。空のルートディレクトリ構造を初期化することにより、空のフォルダ構造が書き込まれる。次に、カメラは、DCF仕様において概説した処理に従って新規フォルダを作成し、メモリ装置に記憶された画像を論理的に(メモリ装置を同時に使用できる異なるカメラを表すフォルダ、ユーザが写真を撮影した異なる日付を表すフォルダなどに)分離する。
【0032】
EXIFとして良く知られているJEITA CP−3451「デジタルスチルカメラのための交換可能な画像ファイルフォーマット」は、DCF仕様の手引きである。EXIFは、DCFにより義務付けられた、ファイルシステム構造内に記憶する画像、音、及びタグのフォーマットを指定する。例えば、及び上記で示唆したように、「アーティスト」(すなわち、撮影者)情報、及び/又は日付/時間情報を表すEXIFタグを使用することができる。撮影者情報は、ユーザが提供したアカウント情報から収集することができる。また、本発明により、GPSデータを使用して対応する時間帯を特定し、UTCを基準とするGPSDateStampフィールドにこのような情報及び/又は絶対時間を書き込むことによって時間帯基準を追加することもできる。また、(本発明により構成されたメディアカードを有するDSCの場所又はその近くに存在する他のユーザ/DSCなどの)仲間に関する情報をMakerNoteタグに書き込むこともできる。場所メタデータと同様に、このような情報の処理も、メディアカード内で、サーバ層内で、又はこれらの装置を組み合わせて行うことができる。
【0033】
EXIFは、圧縮画像には(正式にはISO−IEC10918−1/ITU−T推薦T.81として知られている)JPEGを、未圧縮画像にはAdobeTIFF6.0を使用することを指定している。いずれのフォーマットの画像にも、TIFF−スタイルタグ、記録するカメラ及び画像パラメータの注釈が付けられる。取り込んだ画像に関連付ける音声の注釈には、WAVフォーマットが指定されている。
【0034】
不揮発性記憶媒体をうまく活用するには、各動作の最後に、カメラがメタデータ及びデータブロックの更新をフラッシュすることが予想される。にも関わらず、カメラの実施構成は、ライトスルーキャッシュの規律に依存して、FATファイルシステムメタデータの一部又は全部をキャッシュし、フラッシュストレージを同期させておくことができる。この結果、次にカメラの電源が投入されるまで、又はメタデータキャッシュが一新されるときには常に、メディアカードによって行われるメタデータの更新を観察することはできない。
【0035】
FATファイル属性を使用して、ファイルに読み取り専用マークを付けることができる。DCF2.0(セクション5.2.2.4)は、不慮の削除を防ぐための読み取り専用属性のサポートを定めている(ただし、DSCによっては、この属性を重んじないものもある)。カメラによっては、この読み取り専用属性をトグル切り替えできるものもある(プレビュー画面上のキーアイコンとして表されることが多い)。
【0036】
画像が撮影されると、カメラによってファイルシステム内にファイルが作成され、その後、このファイルに、画像を符号化するデジタルデータのシーケンスが記憶される(注:場合によっては、このシーケンスが逆転することもあり、いずれも許容可能である)。通常、データは、DCFによって規定されるように、(JPEGなどの)従来の圧縮画像フォーマットにフォーマットされる。カメラは、ファイルを作成して画像データを記憶する動作を完了するために、(装置に利用可能な空き容量があると仮定すると)以下の一連の動作を行わなければならないが、必ずしも正確にこの順序でなくてもよい。
1)ファイルシステムのルートディレクトリ領域から開始し、装置上に記憶されたディレクトリ階層を表すファイルシステムブロックを行き来して、新規画像を記憶するディレクトリのディレクトリテーブルブロック(フォルダ)を発見する。
2)このディレクトリテーブルブロックに、作成する新規ファイルを記述するエントリを追加する。このエントリは、ファイル名に関する情報、及びこのファイルのデータの先頭(すなわち、最初のデータブロック)がファイルシステム内のどこに存在するかに関する情報を含む。
3)ファイル割り当てテーブルに記憶された情報に基づいて空きデータクラスタを発見する。このデータクラスタに使用中マークを付け、このクラスタを表す連続範囲のブロックに画像データのクラスタの価値を記憶する(FATでは、ファイルシステムの作成時にクラスタサイズを構成することができ、このサイズがファイル割り当てテーブル構造内に2KB〜32KBで示される)。
4)必要に応じて、画像データの全てのバイトがファイルシステムに書き込まれるまでステップ3を繰り返す。個々の新しいデータクラスタが書き込まれると、たとえファイルシステムを記憶する媒体の周囲にデータクラスタが散在していても、画像ファイルを論理的に連続して読み取ることができるように、これらのデータクラスタを以前のクラスタから1つずつリンクさせる。
【0037】
デジタルカメラによって行われた全てのファイルシステムの更新が、メディアカード記憶装置によって代理されたフラッシュストレージへの書き込みアクセスとして表示される。メディアカードのファームウェアは、一連の経験則を使用して、これらの一連の動作の完了がデジタルスチルカメラ内の幅広いファイルシステム動作の実施と互換性があることを検出することができる。
1)ホスト装置によるフラッシュストレージへの最後の書き込みアクセス時間後に、所定の時間が経過するのを待つ。タイムアウト期間中にさらなる書き込みアクセスが生じた場合、ホスト装置がファイルシステムを更新し続けていると見なし、タイマをリセットして待ち続ける。
2)タイムアウト期限が来ると、ファイルシステムのディレクトリ構造をスキャンし、最後のスキャン中に保存したコピーとディレクトリ構造を比較することにより、最後のスキャン以降にいずれかの新規ファイルが作成されたかどうかを検出する。
3)検出された新規ファイルごとに、一つずつリンクされたデータクラスタのリストをリストの最後まで調べ、この時点で、データクラスタに記憶されたデータバイト数が、そのファイルのディレクトリテーブルエントリに示されるファイルのサイズに一致すべきである。スキャンが予定よりも早く終了した場合、ステップ1中のタイムアウト期限が短すぎたと仮定し、スキャン結果を無効にし、タイムアウトを増加させてステップ1に戻り、ホスト装置がファイルシステムの更新を完了できるようにする。
【0038】
ユーザが画像のいずれかを削除することを選択した場合、カメラは、記憶装置上のファイルシステム情報を更新する必要がある。具体的には、カメラは、
1)削除する画像を含むフォルダのディレクトリテーブルブロックに書き込みを行って、この画像に対応するファイルのファイル名及びファイルシステム情報をテーブルから削除する。
2)ファイル割り当てテーブルブロックを更新して、削除されたファイルが使用していたデータクラスタブロックに空きマークを付ける。
【0039】
上述したファイルシステム更新検出機構は、これらの動作、並びにフラッシュストレージへの書き込みアクセスとして現れる、デジタルカメラホストによって行われたファイル削除を含む全てのファイルシステム更新を検出する。更新検出後にディレクトリ構造のスキャンを行った時点で、メディアカードファームウェアが、更新済みのスキャン結果からいくつかのファイルが失われていることに気付いた場合、これらのファイルがファイルシステムから削除されたことが暗示される。ファームウェアは、削除されたファイルに対応する物理データブロックをフラッシュメモリ内に配置し、これらのブロックを永続データベース内の空き物理ブロックのプールに戻す。
【0040】
ホストカメラが記憶装置との間で読み取り及び書き込みを行えることに加え、コントローラも、遠隔コンピュータシステムにデジタルデータをアップロードして画像又はその他のデータを削除するために、自律的読み取り及び書き込みを行うことができる。この処理は、ホストカメラが認識せずに又はその協調を伴わずに、ファイルシステムの一貫性問題又はデータの破損を排除する形で行われる。例えば、本発明の1つの実施形態では、(メモリ利用閾値に達したこと、プログラムされた動作又はユーザによる手動介入などの)事前に設定した基準の検出時に、コントローラが以下の動作を実行する。
【0041】
まず、コントローラは、削除する候補であるファイルのリストを列挙し、これらのファイルを記憶するために使用されているセクタ割り当て範囲(クラスタ)のリストを記録する。これらの候補は、様々な基準のいずれかに従って選択することができ、例えば、記憶されている最も古いファイル、或いは最後のアクセスからの時間が最も長い又は最もアクセス頻度が低いファイルとすることができる。このクラスタ情報を、メディアカードの確保されたメモリ領域に記憶することができる。
【0042】
次に、コントローラが、列挙されたファイルのディレクトリエントリにマーク付けし、(カメラなどの)ホストが記憶アレイにアクセスできないようにしながらこれらのファイルのそれぞれの削除フラグを設定し、このディレクトリエントリを保持するセクタの読み取り/修正/書き込みシーケンスを実行する。この時点で、記憶アレイがこの修正済み状態にある間、ホストは、修正済みセクタのキャッシュしたコピーを記憶しておくことができ、その後、関連性のある又はないディレクトリ動作の結果として、コントローラによって行われた変更に上書きすることができる。また、これらのファイルのデータ記憶も割り当てられて未修正のままである(すなわち、記憶アレイ内に画像自体が存在したままである)。
【0043】
3番目に、コントローラは、ホスト装置の電源が切断されて次に再び投入されるのを待つ。ホストは、パーティションテーブル(又はマスタブートレコード)及び(ホストは、電源切断、電源投入サイクルの後でキャッシュを完全に補充する必要があると仮定されるので)FATブートブロックを読み取ることにより、この新たな電源オンサイクルを検出することができる。後述するように、ホスト及びメディアカードの動力サイクルは、ホストによるセクタアクセスがファイルシステムの実装動作と一致することによってメディアカードのみの動力サイクルと区別することができる。
【0044】
4番目に、コントローラは、削除候補ファイルのリストをチェックして、対応するディレクトリエントリに削除マークが付いているかどうかを調べる。付いている場合、これは、ホストが上記で行われた変更に上書きしておらず、最新版のディレクトリエントリを読み取った(キャッシュした)ばかりであることを示す。削除されないように戻された全てのファイルが、ホストカメラのキャッシュからの書き込みに起因して、削除フラグの読み取り/修正/書き込みを失うことになる。このようなファイルが存在するイベント(すなわち、ファイルが非削除状態に戻されたイベント)では、処理が上記ステップ2に戻り、削除フラグが設定されるように処理が繰り返される。次に、処理はステップ2から続行する。
【0045】
5番目に、列挙されたファイルシステムには、ホストの関与を伴わずにコントローラによって削除マークを付けられたディレクトリエントリを含むファイルはこの時点でもはや存在しないが、(FAT内のクラスタなどの)対応するデータ記憶ユニットは割り当てられたままである。これらのデータ記憶ユニットは、これらを示すディレクトリエントリが存在しないので事実上「孤立」しているが、これらはステップ1において記録されているので、範囲(クラスタ)のリストとしてコントローラに認識される。
【0046】
6番目に、ステップ1及び5において、孤立したデータ記憶ユニットが追跡されて「不良」マークを付けられるが、これらはステップ1からの追跡リスト内に維持される。マーク付けは、ステップ2で使用したものと同様の読み取り/修正/書き込み動作を使用して(ホストカメラを締め出しながら)行うことができる。しかしながら、これらの修正がホストによるさらなる書き込みを免れるかどうかは次の動力サイクルまで分からない。
【0047】
7番目に、コントローラは、ホストの別の電源切断、電源投入サイクルを待つ。
【0048】
8番目に、コントローラは、ステップ6において修正された孤立したデータ記憶ユニットを通じて、修正が恒久的なものになったか否かを繰り返し判定する(すなわち、ホストが後から修正に上書きを行ったか否かを判定する)。データ記憶ユニットが、削除マークを付けられたままである場合、又はステップ1において最初に追跡したものとは異なる新規ファイルに対して割り当てられている場合、削除候補は永久に削除される。しかしながら、データ記憶ユニットの割り当てが以前の値に戻っている場合、処理はステップ5に戻って繰り返される。
【0049】
9番目に、ステップ1においてコンパイルされたファイルのリストが上記に従って完全に処理されると、リスト及びその他のあらゆる追跡構造がクリア(削除)され、新たな候補リストで自律的ファイル削除処理を開始することができる。
【0050】
上記の処理をなぜ使用するかをより良く理解するために、まずDSCなどのシステムにおいて、ホスト装置が取り外し可能メディアカード又はその他の記憶装置を利用している場合に、このホストが唯一の「マスタ」であることを見込んでいる、すなわちこのホストが、記憶装置により記憶されたデータ及び/又はデータ構造を変更できる唯一の装置であることを見込んでいる場合について検討する。このため、性能、ユーザ体験などを理由として、ホストは、記憶装置のファイルシステム構造を構成するデータ及びメタデータの一部、多くの場合かなりの部分をキャッシュする。しかしながら、本取り外し可能メディアカードによって示すようなシステムでは、記憶装置により記憶されたデータ及びメタデータを(例えば、その一部を削除して新規データ(画像)及び/又はメタデータのための空間を作り出すために)ホストDSCが認識していない第2のコントローラによっても変更できる場合、ホストがキャッシュしている情報と記憶装置が記憶している情報との間に矛盾が生じるとともに、ひいては他のコントローラにより行われた変更への上書きをホストに行わせるという固有のリスクが存在する。本発明は、このような矛盾及び上書き状況を解決する方法を提供する。
【0051】
上述したように、取り外し可能メディアカード又はその他の記憶装置は、ファイルシステムを有する。このファイルシステムは、実際の記憶媒体(すなわち、フラッシュメモリアレイ又はハードディスクなど)に記憶された情報を装置が編成できるようにする手段である。より一般的には、ファイルシステムは、ホスト又はその他のコントローラが、これらのファイル及びデータの場所を特定してこれらにアクセスできるようにするために、ファイル及びこのファイルに含まれるデータを記憶して編成する方法を定義する。これを行うために、ファイルシステムは、記憶媒体の固定サイズのセクタをファイル及びディレクトリに編成し、どのセクタがどのファイルに属するか、及び他のどのセクタが使用されていないかを追跡する。FAT、exFATを含むほとんどのファイルシステム、及びその他のファイルシステムは、記憶媒体の指定数のセクタで構成されたクラスタ(又はブロック)と呼ばれる固定サイズのユニット内にデータをアドレス指定する。このユニットは、ファイルを記憶するために割り当てできる最小量の物理記憶空間である。ファイルシステムは、記憶媒体に記憶されたファイルにファイル名を関連付けるための(ファイル割り当てテーブルなどの)ディレクトリも含む。本発明は、限定するわけではないが、FAT及びexFATを含む様々なシステムのいずれかを使用する記憶装置に適用可能である。
図3には、FATファイルシステム40の例を示しているが、この図は例示を目的とするものにすぎず、本発明の範囲を限定していると見なすべきではない。
【0052】
図3を参照して分かるように、ファイルシステムのデータ領域50は、上述したようにファイルシステム内の割り当てできる(4kBなどの)最小記憶単位であるクラスタ52に分割されている。クラスタは、いずれの整数のセクタであってもよく、通常は1、2、4、8などである。記憶媒体のクラスタによって表される場所には、実際のユーザデータ、例えばDSCの場合には画像データが記憶される。FATセクタ46は、データ領域内のクラスタの割り当てを識別するマッピングを含む。
【0053】
画像又はその他のデータには、JPEG画像では例えばDSC_0001.jpgなどのファイル名が割り当てられる。ファイルシステムは、このファイルを、/DSIM/100NCD70/DSC_0001.jpgなどのファイル名によって識別される場所に記憶する。この(例えば、ルートディレクトリ領域に記録される、又は独立したルートディレクトリ領域が存在しないいくつかの場合にはデータ領域に記録される)識別符号は、ファイルDSC_0001.jpgの場所へのマッピングである。このマッピングにより、この例ではDSIMであるルートレベルディレクトリが識別され、これがさらにサブディレクトリ100NCD70を示し、これ自体がファイルDSC_100.jpgを示す。このマッピングはディレクトリ構造と呼ばれ、基本的には、ユーザデータを記憶する次のテーブル又は実際のファイルを発見できるクラスタを示すエントリを含む一連のリンクされたテーブルである。ディレクトリ構造内では、個々のエントリが、これらのエントリをファイル又はディレクトリテーブルとして識別する属性、エントリが削除されたか否かを識別するためのインジケータ、及びその他の属性を含む。
【0054】
当然ながら、個々のクラスタは、実際の記憶容量の観点から見て比較的小さく、従って通常は比較的大きなファイルである画像は、このようなクラスタを複数占めることになる。このクラスタのファイルへの割り当ては、FATセクタのファイル割り当てテーブル内で追跡される。ファイル割り当てテーブル内の各エントリは、DSC_0001.jpgに対応する画像データを記憶する最初のクラスタを表すエントリから開始し、このファイルの画像データを記憶する次のクラスタへのポインタ、又は関連するクラスタを、このようなデータを記憶するチェーン内の最後のクラスタとして識別するインジケータのいずれかを含む。カメラが画像を取り込むと、ファイルシステムは、ファイル割り当てテーブル内の選択された画像に対応するエントリを読み込み、対応するクラスタの場所からの画像データを取り出せるようになる。同様に、記憶装置に新たな画像が記憶されると、FATセクタが更新されて、クラスタの割り当てをこの新たな画像の記憶に反映させる。
【0055】
これらは全て、ファイルシステムからファイルをどのようにして削除しなければならないかに影響を与える。2つの事柄が起きなければならない。まず、対象ファイル(上記の例ではDSC_0001.jpg)が記憶されている場所を識別するファイル割り当てテーブルのクラスタチェーン内の各クラスタに、「未使用」(又はこれらが再使用可能であることを示す他の何らかの指示)マークが付けられなければならない。次に、対象ファイルのディレクトリテーブルエントリに削除マークが付けられなければならない。これらの動作は、これらが完了したという保証が得られるようにアトミックに完了されなければならない。通常、ファイルシステムは、最初にディレクトリテーブルからファイルエントリを削除し(これにより、基本的にホストがファイル(すなわち画像)を利用できないようにし)、その後ファイル割り当てテーブルエントリを利用可能にする。なお、この処理は、多くの場合これらの記憶媒体の場所が物理的に消去又は上書きされるまでしばらく物理記憶媒体に記憶されたままであるユーザデータ自体には関与しない。また、ファイル割り当てテーブルエントリに「利用可能」マークを付ける2番目の動作が行われない場合、クラスタは割り当てられたままとなるが、そこに記憶された情報は利用不可能となり、従って(ホストの観点からすれば)記憶装置内の記憶容量の純損失が生じる。本発明の文脈では、「追記型」の記憶装置が意図されるいくつかの場合には、このことが望ましいものとなり得る。
【0056】
本発明の文脈では、上述した動作は、ホストカメラが記憶装置との間で読み取り及び書き込みを行うだけでなく、記憶装置コントローラも、遠隔コンピュータシステムなどに画像データをアップロードし、記憶容量が常に新たな画像のために利用可能であることを確実にするために自動的に画像を削除する(すなわち、ホストカメラの観点からすれば「無限メモリ」を提供する)ことに関与するので複雑である。記憶装置コントローラのこれらの動作はホストカメラが認識せずに行われ、このためどのように記憶容量を割り当てるか、及びそこにどのような情報を記憶するかについてのカメラの概念と、これらについての記憶装置コントローラの概念との間に矛盾が生じる可能性がある。
【0057】
図4を参照して、記憶装置のファイルシステム内のディレクトリテーブル58、100NCD70が、(11枚の写真を表す)様々なファイル、DSC_0001.jpg、DSC_0002.jpg...DSC_0011.jpgへの参照を含むと仮定する。さらに、(同期型ライトスルーキャッシュと仮定する)カメラのキャッシュ60が、このディレクトリテーブルのコピーを記憶すると仮定する。カメラは、このブロックに関連する記憶容量を解放するための何らかの理由がなければ、このディレクトリテーブルは変更されていないままであると見なす。新たな写真(DSC_0002.jpg)が撮影された場合、カメラは、キャッシュしたバージョンのディレクトリテーブル内に新たなエントリを作成し、この修正されたディレクトリテーブルを記憶装置に書き込む。しかしながら、カメラは、このカメラが修正を行う唯一の装置であると思い込んでいるので、キャッシュしたバージョンを保持している限り、再び記憶装置からディレクトリテーブルを読み取る必要がない。
【0058】
当然ながら、これは事実ではない。本記憶装置は、遠隔コンピュータシステム及び/又は電子フォトアルバムに自律的に画像をアップロードし、また新規画像のための空間を作り出すためにこの画像を記憶装置から削除するコントローラを含む。これらの削除動作はディレクトリテーブルに影響を与えるが、カメラがこれらのテーブルの以前にキャッシュしたバージョンを保持している場合、カメラはこれらの影響を知ることができない。従って、例えば、カメラが100NCD70ディレクトリテーブルをキャッシュしている期間に記憶装置コントローラがファイルDSC_0002.jpgを削除した場合、この(削除されたファイルの参照を保持する)キャッシュされたバージョンのディレクトリテーブルは、記憶装置上に存在するバージョンのディレクトリテーブルとは異なるが、カメラは、この違いに気付くことも、再びこのバージョンのディレクトリテーブルを記憶装置から読み取って違いが存在すると判定することもない。その後、カメラが、記憶装置から画像ファイルDSC_0002.jpgを取り出そうとした場合(なお、単にこの画像を参照するディレクトリテーブルをカメラがキャッシュしたという理由により、この画像自体もキャッシュされていることを意味するわけではない)、記憶装置の観点からすれば、(記憶媒体内に画像データが存在するかどうかに関わらず)この画像を示すディレクトリテーブル又はファイル割り当てテーブルエントリが存在しないので、ファイルシステムエラーが生じる。カメラが、電源オフ、電源オンのサイクルを受け、この結果そのキャッシュが一新された場合にのみ、この2つのバージョンのディレクトリテーブルは再び同期される。或いは、上記のシナリオでは、カメラがキャッシュしたバージョンのDSC_0002.jpgを含む場合、ユーザは、騙されて画像が存在すると信じ込む場合がある(なぜなら、ユーザはこの画像をカメラ上では見ることができるが、ユーザがこれを記憶装置から回収しようとしたときにはなくなっているからである)。
【0059】
さらなるエラーも考えられる。例えば、カメラがDSC_0002.jpgを記憶し、修正したディレクトリテーブルを記憶装置に書き込み、その後、記憶装置コントローラがDSC_0002.jpgを削除したと仮定する。ここで、カメラが新たな画像DSC_0003.jpgを取り込むと仮定する。先程のように、この結果、キャッシュしたバージョンのディレクトリテーブルは、この新たな画像ファイルへの参照を含むように更新され、この修正されたバージョンのディレクトリテーブルが記憶装置に書き込まれる。しかしながら、このバージョンのディレクトリテーブルは、まさに記憶装置コントローラによって削除されたファイルであるDSC_0002.jpgへの参照を含む。この記憶装置コントローラの動作は、カメラの動作によって上書きされたことになる。さらに、カメラがDSC_0002.jpgに関するファイル割り当てテーブルの部分をキャッシュしなかった場合にも、記憶装置は、DSC_0002.jpgに対応するディレクトリテーブルエントリを含むが、この画像のためのファイルテーブルエントリは存在せず(以前のバージョンは、DSC_0002.jpgに関連するクラスタが利用可能であることを示すように修正されている)、この場合もファイルシステムエラーが生じる。当然ながら、カメラがファイル割り当てテーブルエントリをキャッシュして、記憶装置がファイルを削除した場合にも、同様の種類のエラーが生じ得る。これにより、実際にカメラが、データ領域内のクラスタが割り当てられていることを示すようにファイル割り当てに上書きしたが、記憶装置コントローラがこれらを削除してしまっていることにより、そこには実際のファイルが存在しないという状況が生じることがある。換言すれば、記憶容量は割り当てられるが、実際には使用されず、従って装置の有効記憶容量が減少する。
【0060】
上述したような問題に取り組むために、本発明は同期「バリア」に依拠し、これを通過すると、(例えば、カメラのキャッシュ内に表されるような)ホストカメラによる記憶装置のファイルシステムの理解が、記憶装置コントローラによるファイルシステムの理解と同じになる(すなわち同期されている)こと(すなわち、記憶装置ファイルシステムに関する2つの装置の状態が同じになること)を記憶装置コントローラに対して保証することができる。名目上、この同期バリアは、カメラの動力サイクル(すなわち、ホストカメラの電源オフ、電源オン)であるが、カメラによっては、動力サイクルを通じてキャッシュの状態が持続することがあり、従っていくつかの実施構成では、(記憶装置コントローラにより)観察されるマスタブートレコード及びファイルシステム情報の(ホストカメラによる)読み取りに関連して、動力サイクルによりカメラのキャッシュコンテンツが完全に再初期化されていることが保証されるのを待つ必要があり得る。他の実施構成では、様々な観測基準を利用して、ファイルシステムがいつホストに実装されたかを特定し、その後これを同期バリア条件として使用することができる。
【0061】
図5を参照すると、ファイル割り当てテーブル62へのポインタを含むディレクトリテーブル58の例を示している。このファイル割り当てテーブルは、実際の画像データがデータ領域内のどこに記憶されているかを定めるリンクされたエントリのリストを含む。ディレクトリテーブル58は、クラスタ内の、例えばファイルシステムのデータ領域に記憶される。記憶装置コントローラが、(例えば、使用記憶容量の閾値に達したため、又は他の何らかの削除基準が満たされたためのいずれかの理由で)新規画像のための空間を作り出すためにファイルDSC_0003.jpgを削除すべきであると判断したと仮定する。
【0062】
(
図6に示す)処理66の最初のステップは、記憶装置コントローラが、対象ファイル(DSC_0003.jpg)のディレクトリエントリ、(ディレクトリエントリをファイルシステム内のどこに記憶したかなどの)そのいくつかの属性、及びファイル割り当てテーブル内で識別される、対象ファイルの記憶に割り当てられたクラスタのリストを(例えば、メモリ64の、ファイルシステムの外部であって記憶装置コントローラがアクセスできる範囲に)保存する(ステップ68)ためのものである。この例では、これらはクラスタC0〜C9である。この記憶により、同期バリア(説明すると、この例ではホストの動力サイクルのことであるが、上述したように他の例では他のイベントであってもよい)にわたって一貫していることを後でチェックできるようになる。この情報が記録されると、対象ファイルのディレクトリエントリに「削除」マークが付けられ(ステップ70)、処理は(ホストの電源ンオフ、電源オンなどの)同期バリアを待つ(ステップ72)。
【0063】
同期バリアが観察されると、記憶装置コントローラは、そのメモリの記憶領域から読み取りを行って、対象ファイルのディレクトリエントリのファイルシステムアドレスを取得し(ステップ74)、この情報を使用して、ファイルシステム内の同じ場所のディレクトリエントリを読み取る。読み取ったものが、ファイルが削除されていないことを示す場合、これは、記憶装置コントローラが行った変更にホストが上書きし、従ってコントローラが新たに処理を開始した(68)ことを示すものである。
【0064】
しかしながら、ファイルシステムからのディレクトリエントリに削除マークが付けられている(ステップ76)場合、これは、カメラが修正に上書きしなかったことを示し、同期バリアを越えている(すなわち、カメラがファイルシステムを実装し直した)ので、カメラのキャッシュが対象ファイルのディレクトリテーブルエントリを含まないことを記憶装置コントローラに対して保証することができる。
【0065】
この時点で、ファイル割り当てテーブルは、対象ファイルに割り当てられたクラスタを依然として含むが、ファイルシステム内にこのクラスタの組を示すディレクトリエントリは存在しない。記憶装置コントローラは、対象ファイルに割り当てられたクラスタの以前に記憶したリストをメモリから読み取り、ファイルシステムのファイル割り当てテーブル内のこれらのクラスタに「不良」マークを付ける(ステップ78)。これは、ファイルシステム(従って、これらのクラスタを情報の記憶に使用すべきでないホスト)について知らせるビット符号化である。次に、記憶装置コントローラは、別の同期バリアを待つ(ステップ80)。なお、ホストとのキャッシュ不一致により、(同期バリアを越えて)反映される修正も存在すれば、(カメラからのキャッシュ書き込みによって上書きされることにより)反映されない修正も存在し得るので、この時点ではクラスタに単純に「空き」マークが付けられることはなく、これによりファイルシステムエラーが生じる(例えば、クラスタが割り当てられてもディレクトリエントリがこれらのクラスタを示さず、又はさらに油断できないことには、カメラが「空き」クラスタに新たな画像データを書き込んでしまっている場合があり、ファイルシステム全体を完全にスキャンして、この「新たな」画像に割り当てられたクラスタを示すディレクトリエントリを探さない限り、記憶装置コントローラが「古い」画像データと「新たな」画像データを区別できない)。
【0066】
これらの問題を避けるために、これらのクラスタには「不良」マークが付けられ、記憶装置コントローラは別の同期バリアを待つ。同期バリアが検出されると(ステップ80)、記憶装置コントローラは、対象ファイルのクラスタのリストをメモリから再び取得し、このような各クラスタを調べて、これらに現在「不良」マークが付いているか否かを判定する(ステップ82)。クラスタのいずれにも(ホストカメラとのキャッシュ不一致を示す)「不良」マークが付いていない場合(ステップ84)、処理は前のステップ(ステップ78)に戻り、記憶装置コントローラがこれらのクラスタに「不良」マークを付ける。任意に、元々のクラスタに再び全てマークを付けてもよく、又は状態が変化してもはや「不良」マークが付いていないクラスタにのみマークを付けてもよい。
【0067】
しかしながら、以前に対象ファイルに割り当てられたクラスタに全て「不良」マークが付いている場合、これは、前のステップからの修正が反映されたことを示し、ホストがファイルシステムを実装し直しているので、記憶装置コントローラによって観測されるように、ホストのキャッシュの状態がファイルシステムと同期していることが保証される。従って、記憶装置コントローラは、対象クラスタに、これらのクラスタが新たなデータの記憶に利用可能であることを意味する「空き」又は「利用可能」マークを付ける(ステップ86)。
【0068】
ここで、記憶装置コントローラは、この変更が反映されたことを検証する必要があり、従って再び別の同期バリア(ステップ88)を待つ。同期バリアを検出すると、記憶装置コントローラは、対象ファイルのクラスタのリストを再びメモリから取得し、このような各クラスタを調べて(ステップ90)、現在「不良」マークが付いているかどうかを判定する(ステップ92)。クラスタのいずれかに(ホストカメラとのキャッシュ不一致を示す)「不良」マークが付いている場合、処理は前のステップ(ステップ86)に戻り、記憶装置コントローラがこれらのクラスタに「空き」マークを付ける。任意に、元々のクラスタに再び全てマークを付けてもよく、又は状態が変化して「不良」マークが付いていないクラスタにのみマークを付けてもよい。しかしながら、以前に対象ファイルに割り当てられたクラスタに全て「不良」マークが付いていない場合、これは、前のステップからの修正が反映されたことを示し、ホストがファイルシステムを実装し直しているので、記憶装置コントローラによって観測されるように、ホストのキャッシュの状態がファイルシステムと同期していることが保証される。従って、記憶装置コントローラは、対象ファイルの削除を正常に完了したことになり、(このファイルに関して削除サイクルが繰り返されるのを防ぐために)以前に保存したクラスタのリスト及びディレクトリテーブル情報をメモリから削除することができる(ステップ94)。なお、この処理を、複数のファイルに対して同時に、及び異なる削除処理状態にあるファイルに対して行うこともできる。
【0069】
上記の説明に関連して、記憶装置コントローラは非常に小さなキャッシュを有しており、従ってコントローラは、上述した修正のいずれかを行う場合、(コントローラのキャッシュ内に情報が存在しないことがあるので)通常は読み取り−修正−書き込みサイクルに関与すると理解されたい。セクタデータを読み取り、修正し、そしてこれに書き込まなければならない。これらの動作には時間がかかり、従ってこれらの動作が(記憶装置に新たな画像データを書き込むことなどの)カメラが関与する動作と衝突し、記憶装置コントローラがファイルシステムに書き込みを行うときにこれらの動作が上書きされるのを防ぐために、記憶装置コントローラは、コントローラが読み取り−修正−書き込み動作に関与している短い時間にわたってホストを締め出す。従って、カメラの動作は、あらゆるコントローラの書き込み前(この場合、コントローラのキャッシュには、カメラのキャッシュに記憶されているものと同じバージョンのファイルシステム情報が取り込まれる)、又はコントローラの書き込み後に行われ(従って、コントローラの修正に上書きを行うが、上述の手順はこの上書きに対応するように設計されている)、コントローラの動作中には行われないように保証される。カメラデータが失われないことを確実にするために、コントローラは、この締め出し期間中のカメラからのあらゆる書き込みをバッファする。
【0070】
以上、コントローラがトリガイベントに応答して上述の処理を開始できることについて説明した。このトリガイベントは、記憶装置から遠隔コンピュータシステム又は電子フォトアルバムに画像データが正常に転送された確認、又はこのような確認と記憶装置の容量の閾値レベルに達したことを組み合わせたものとすることができる。この閾値レベルは、(例えば、無線ネットワークパラメータ、電子フォトアルバムのアカウント名及びパスワードなどの、コントローラの他の設定を指定する場合にユーザが行う設定として)ユーザ定義可能であってもよく、又は予め設定した閾値であってもよい。
【0071】
コンテンツの削除は、指定した記憶容量が利用可能になるまで継続することができる(これは、削除処理をトリガするために使用する閾値とは異なる閾値とすることができる)。しかしながら、画像の紛失を防ぐために、記憶装置からアップロードされたものでないファイルを削除すべきであるとユーザが積極的に指示しない限り、削除はこのようなファイルに関与すべきではない。
図7A及び
図7Bに上記の例を示す。
図7Aでは、画像データが、たとえ装置から離れたストレージに既にアップロードされている場合でも、新たなコンテンツの記憶によって閾値96が超えられるまでは記憶装置56に保存される。このとき、(上述した処理66を使用して)十分な量の既にオフロードしたコンテンツが記憶装置から削除され、従って記憶装置に記憶される総情報量は閾値量未満になる。
図7Bでは、記憶装置上に記憶される新たなコンテンツの量が閾値96を超えた場合、これにも関わらず、コンテンツは、記憶装置からオフロードできるまで記憶される。ファイルは、先入れ先出し順、又は(ユーザ定義可能な方法、又は最低閲覧頻度方法などの)その他の方法で削除することができ、場合によっては、記憶装置の削除閾値に達するまで、記憶装置に記憶されたファイルの一定数又は一定割合が削除されるまで、或いは記憶装置内の指定した割合の記憶容量が新規ファイルの記憶に利用可能になるまで削除を継続することができる。
【0072】
以上、記憶装置の記憶媒体からコンテンツを自律的に削除するための方法及びシステムを説明した。ホストとともに使用する記憶装置を背景として説明したが、本発明は、ホストと記憶装置のあらゆる組み合わせに適用可能である。さらに、記憶装置からコンテンツを削除するための上述した処理を逆の順序で動作させて、外部ホストの動作に干渉することなく、記憶装置コントローラを介して記憶装置上に安全にコンテンツを移すことができる。例えば、コントローラは、新たな情報を記憶するための十分な数の空きクラスタを捜し出し、これらのセクタに「不良」マークを付けて同期バリアを待つことができる。これらの修正が確認されると、記憶装置コントローラは、クラスタ間のファイル割り当てテーブル結合を作成してさらなる同期バリアを待つことができる。その後、これらの結合が同期バリアを越えて検証されたと仮定して、記憶装置に新たなコンテンツをダウンロードし、確保されたクラスタに対応する記憶容量に記憶することができる。当然ながら、この場合、同期バリアを越えてコンテンツを検証する必要があるので、大きなファイルでは、複数の同期バリアにわたる時間を要する場合がある。確保されたクラスタに全てのデータが記憶されたことが検証されると、記憶装置コントローラは、新たなクラスタ割り当ての先頭を示すためのディレクトリテーブルエントリを作成する。
【0073】
さらなる実施形態では、カメラが記憶装置のファイルシステムを実装していない期間が電源オンの後に存在してもよく、従って記憶装置コントローラは、カメラキャッシュが同期されていることを確実にする必要なく、ファイルシステムの読み取り及び書き込みを自由に行うことができる。この期間は、ホストが記憶装置のファイルシステムを実装したことをコントローラが観察したときに終了する。
【0074】
当然ながら、本発明は、FAT又はexFATファイルシステムに限定されず、FAT及びexFATと同様の構造を維持するあらゆるファイルシステムとの関連で使用することができる。