改版履歴

改版履歴

Cente exFAT FileSystem


改版日 2015.07.30
バージョン Ver2.10

・FAT領域かディレクトリエントリ領域に書き込み中に電源断が起きたとき、修復不能になる場合がある不具合を修正 (Cente障害情報:101-0065)

メタデータ保護機能使用時、セクタの書き込み中に電源断が発生し、メディアによってはそのセクタを読むとメディアからエラーが返ってきてデータが読めないときがあります。その場合に修復出来なくなる不具合を修正しました。

・キャッシュのブロック単位の書込みを考慮していなかった為、修復不能になる場合がある不具合を修正 (Cente障害情報:101-0066)
メタデータ保護機能使用時、ini_blk_cache(), ini_blk_cache_dir(), ini_ab_cache()の第4引数(キャッシュブロック数)を2以上に設定します。この設定でメディアに書き込み中、電源が落ちるといずれかのブロックで不良セクタとなる可能性があります。修復時この不良セクタを読み取るとエラーが発生し、修復処理エラーとなっていた不具合を修正しました。

・ジャーナルファイルリード時に修復不可能エラーが発生すると、ジャーナルファイルで使用できない領域ができてしまう不具合を修正 (Cente障害情報:101-0067)

メタデータ保護機能使用時、修復処理でエラーが発生するとフラグ管理領域の該当エリアをクリアしていないため、再使用ができなくなります。その為フラグ管理領域が枯渇しメタデータ保護処理ができなくなる不具合を修正しました。

・FATチェーンクリア中の電源断後、修復による再FATチェーンクリアが実行できない場合がある不具合を修正 (Cente障害情報:101-0068)

メタデータ保護機能使用時、FATチェーンクリア処理中に電源断が発生するとFATチェーンが寸断される為、修復時の再FATチェーンクリアができません。その結果クリアされないFATチェーンは破損クラスタとして残ってしまう不具合を修正しました。

・複数ドライブでメタデータ保護機能を有効にした場合に正常に修復できない場合がある不具合を修正 (Cente障害情報:101-0070)

複数ドライブでメタデータ保護機能を有効にした場合、メタデータ保護用のメモリが誤った情報になり、正しくデータを書き戻せない場合がある不具合を修正しました。

・ファイルを書き込みモードで多重オープンできてしまう不具合を修正 (Cente障害情報:101-0073)

名前を変更したディレクトリを含むフルパスで、オープン中のファイルを多重オープンできてしまう不具合を修正しました。

・マルチバイト文字の2byte目のコードを正しく処理できていない不具合を修正 (Cente障害情報:101-0076)

マルチバイト文字の2バイト目を1バイトコードとして扱っていた為、アルファベットの小文字に該当するコードを誤って大文字に変換し文字列比較を行ってしまう不具合を修正しました。

・API処理中のアンマウントによる資源返却の不具合を修正 (Cente障害情報:101-0085)

API処理中にunmount_disk()を実行するとタイミングによって以下の問題が発生する不具合を修正しました。

1. ディスクドライブセマフォ資源の返却が行えず、再度mount_disk()を実行した際に、資源獲得でタイムアウトエラーが発生する(マウントできない)。

2. 処理中のAPIが、ST_FILE、ST_DIR構造体のポインタを引数に持つAPIであった場合、NULLポインタアクセスが発生する。

・全角の大文字・小文字の表記が可能なコードの扱いに誤りがある不具合を修正 (Cente障害情報:101-0092)

アルファベットのファイル・ディレクトリ名に対する大文字・小文字を同一視すべき判定処理に誤りがあった不具合を修正しました。 以下のコード領域が不具合対象となります。

【全角英字、ギリシャ文字、ロシア文字、アラビア数字】

・追記モードで開いたファイルに正しく追記できない不具合を修正 (Cente障害情報:103-0018)

追記モードで開いたファイルの読み書き位置を終端以外に移動すると、fputc(), fputs(), fwrite()により正しく追記できない不具合を修正しました。

・UNICODE API追加

UNICODEを指定してファイル・ディレクトリアクセスできるAPIを追加しました。

・メタデータ保護機能の仕様変更

1. 複数ドライブに対応しました。

2. メタデータ保護管理ファイルのサイズを縮小しました。

3. 保護処理及び修復処理を高速化しました。

・ファイル分割、クラスタ挿入、ファイル結合API追加

S-JIS用ファイル分割API【ct_divide()】、クラスタ挿入API【ct_ins_clust()】、ファイル結合API【ct_combine()】

UNICODE用ファイル分割API【ct_divide_uni()】、クラスタ挿入API【ct_ins_clust_uni()】、ファイル結合API【ct_combine_uni()】を追加しました。

・ドライブ削除API追加

ドライブ削除API【del_disk()】を追加しました。

・機能制限の撤廃

rename(), rename_uni(), move(), move_uni() において大文字から小文字もしくは小文字から大文字に変更できない機能制限がありましたが、この制限が無くなりました。

・ファイル名、ディレクトリ名の文字数の変更

Ver2.01までの最大長は、フルパスでS-JIS APIは258byte、UNICODE APIは516byteだった為、全角文字(2バイトコード)を含めると255文字の名前を作成・検索・削除ができませんでしたが、この制限が無くなり、フルパスで258文字までになりました。

・DISK_MOUNTビット処理をAPIへ移動

ST_DISK構造体のメンバdsk_flgのDISK_MOUNTビットの処理をmount_disk()でセット、unmount_disk()でリセットするよう変更しました。従って、デバイスドライバ内での処理は必要なくなりました。