Cente FileSystem

メタデータ保護機能使用時 ディスクフル直前の書き込みでの無限ループが発生する不具合について


発行番号: Cente101-0120
Rev: 第1版
発行日: 2023/03/31

【題名】
メタデータ保護機能使用時 ディスクフル直前の書き込みでの無限ループが発生する不具合について

【適用製品】
Cente FileSystem Ver6.42

【影響API】
fwrite, chg_filelen

【現象】
FAT32かつメタデータ保護機能有効時、
空き容量が160KByteの時に256KByteまとめてfwriteすると、fwriteから返って来なくなる。

【原因】
メタデータ保護機能有効時のFATチェーン更新処理は、FAT領域書き込み前に以下の処理を実行します。
①FAT「全領域」から空きクラスタ位置を検索
②空きクラスタ番号を取得
③保護管理テーブルをチェックし、以前登録済みのクラスタか確認
→ 以前登録済みの場合は、再度①の空きクラスタ検索を実施(※処理を繰り返す)
→ 登録済みで無い場合は、テーブルにクラスタ番号をセット

上記の処理では実際にFAT領域の書き込み処理までは実施しないため、
以下2つの条件を満たした場合に同じ位置のクラスタを繰り返し検索してしまい、
CT_DISK_FULL(-11)を戻さずに無限ループの状態になってしまいます。
・空きクラスタがある状態から書き込みを実施
・空きクラスタ以上のクラスタを書き込み

【回避方法】
1クラスタずつ書込みをおこなう。

■プログラムによる回避方法
修正ソースにつきましては、弊社サポートまでお問い合わせ下さい。