改版履歴

Cente exFAT FileSystem

・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()でリセットするよう変更しました。従って、デバイスドライバ内での処理は必要なくなりました。

 

Cente exFAT FileSystem

 ・fs_find_dir_entry_sub関数修正
1)FAT32フォーマットされたメディアのルートディレクトリに対して、1クラスタを超えるファイル・ディレクトリ操作が行えない不具合を修正(Cente障害情報:001-0049)
2)アーカイブ属性が0に設定されているファイルを正しく削除、チェック(異常検出)できない不具合を修正(Cente障害情報:001-0061)
注:Cente FileSystemとCente exFAT FileSystemとを結合した場合に起こる不具合です。
exFAT FileSystem単体の場合は本不具合は該当しません。
・fs_unicodecmp関数修正
オープン中のUNICODE指定ファイルを削除・改名・移動できてしまう不具合を修正
(Cente障害情報:001-0057)
注:Cente FileSystemとCente exFAT FileSystemとを結合した場合に起こる不具合です。
exFAT FileSystem単体の場合は本不具合は該当しません。
・EXFAT_USEマクロによる有効/無効指定部を修正
64bit整数型をサポートしていない環境でコンパイルを行なうとエラーが検出される不具合を修正
(Cente障害情報:001-0063)
注:本不具合はCente FileSystemを単体で使用する場合の不具合修正です。
Cente exFAT FileSystem は64bit整数型がサポートされている環境である必要があります。
・共通ソースファイルの更新
Cente FileSystem Ver6.01への改版に伴いCente exFAT FileSystem Ver2.01との共通ソースファイルを更新しました。
共通ソースファイルは以下です。
fs_cache.c, fs_common.c, fs_dir.c, fs_drv.c, fs_fat.c, fs_init.c, fs_sjis_to_ucd.c, fs_string.c, fs_swap.c, fs_apierror.c, fs_lock.c, fs_memory.c, fs_time.c, fs_cfg.h, fs_system.h, fs_typedef.h, fs_duplieva.h, uni_tbl1.h, uni_tbl2.h
注:この更新ではCente exFAT FileSystemの処理に関連した修正は含まれません。
Cente FileSystemとCente exFAT FileSystemとを結合した場合に起こる不具合の修正を目的としています。

Cente exFAT FileSystem

マルチパーティション対応
基本領域・拡張領域にパーティション分割されたメディアに対応しました。
メタデータ保護機能対応
不意な電源断が起きた時のFATとエントリの整合性を修復する機能を追加しました。
フォーマット関数追加
q_format関数を追加しました。
ファイル移動、改名関数追加
move関数を追加しました。
EX_BAD_CLUSTマクロを修正
マクロ値の修正(0xFFFFFFFF -> 0xFFFFFFF7)及び使用方法を修正。 (Cente障害情報:003-0010)
rename関数修正
rename()で大文字⇔小文字の名前変更が行なえない不具合を修正(Cente障害情報:003-0008)
fputc関数修正
fputc()、fputs()実行時にFATチェーンが作成されない不具合を修正(Cente障害情報:003-0007)
fseek64関数修正
ファイルの終端へのfseek後のread/write不具合を修正(Cente障害情報:003-0006)
mkdir関数修正
・mkdirが正常時に実行されず、エラーが返る可能性がある不具合を修正(Cente障害情報:003-0005)
・ディレクトリのサイズが正しく格納されていない不具合を修正(Cente障害情報:003-0009)
fread関数修正
freadでエラーになった時に読み込んだバイト数を正常に返却できない不具合を修正しました。(Cente障害情報:003-0011)
fopen関数修正
・ディレクトリをfopen出来てしまう可能性がある不具合を修正(Cente障害情報:003-0004)
・同一ファイルの二重openにおけるモードチェック不具合を修正(Cente障害情報:003-0011)
fseek関数修正
・ファイルサイズが4GB以上の場合、一部API関数でエラーとして扱う可能性がある不具合を修正。(Cente障害情報:003-0003)
・ファイルの終端へのfseek後のread/write不具合を修正(Cente障害情報:003-0006)
コンパイルエラー
コンパイラによってはコンパイルエラーが起きる可能性がある不具合を修正。(Cente障害情報:003-0002)
遅延書込みタスク取り扱い変更
マクロ(DLYWT)指定に依る遅延書込みタスクの組込み方式を廃止しました。今後はパッケージ内に提案されたサンプルを参考にして頂き導入の可否をご判断願います。(Cente障害情報:003-0001)