Cente FileSystem

独自ディレクトリ操作API実行時、ディレクトリの読出しに失敗する不具合について

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

【題名】
独自ディレクトリ操作API実行時、ディレクトリの読出しに失敗する不具合について

【適用製品】
Cente FileSystem Ver6.30 ~ Ver6.42

【影響API】
rmdir_all, rmdir_all_uni, dinfo, dinfo_uni, readdir_wc, readdir_wc_uni

【現象】
他のタスクと処理がぶつかった場合に、
独自ディレクトリ操作APIでディレクトリの読出しに失敗する。

【原因】
ディレクトリの読出し時、セマフォの資源を獲得した後にディレクトリの読出しを行うべきですが、
セマフォの資源を獲得せずディレクトリの読出しを行っていたため、誤動作する可能性があります。

【回避方法】
複数タスクから影響APIを同時に実行しない

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

Cente FileSystem

・独自APIでのディレクトリ検索時、エラーコード「CT_NOT_INI_D」が戻される不具合を修正(Cente障害情報:101-0114)
独自APIでのディレクトリ検索時、ドライブを全て読み出した後に「CT_NOT_INI_D」が戻される不具合を修正しました。

・ログ管理チェックディスク機能の有効/無効設定組合せによる誤処理を修正(Cente障害情報:101-0115)
無効ドライブに対してもログ管理チェックディスクの処理が一部動作してしまう不具合及びエラー判定処理が抜けている箇所があり、正常/異常を正しく戻すことができていない不具合、セーブキャッシュが行われず、ログ管理ファイルを正しく作成することができない不具合を修正しました。

・ファイル及びディレクトリ検索にて大文字/小文字の区別をしていた不具合を修正(Cente障害情報:101-0116)
readdir_wc()及びreaddir_wc_uni()において、大文字/小文字の区別をしていた不具合を修正しました。

・ 独自ディレクトリ操作API実行時、ディレクトリの読出しに失敗する不具合を修正(Cente障害情報:101-0117)
独自ディレクトリ操作API実行時、セマフォの資源を獲得せずディレクトリの読出しをしていたため、修正しました。

・複数ドライブに対しメタデータ保護機能を有効にするとメモリ破壊が起きる不具合を修正(Cente障害情報:101-0118)
複数ドライブに対しメタデータ保護機能を有効にするとメモリ破壊が起きる不具合について、drv_name ごとに領域を確保するように修正いたしました。

・メタデータ保護機能使用時 残容量が必要以上に消費されてしまう不具合を修正(Cente障害情報:101-0119)
FATチェーンの更新した分だけ残容量を消費するだけでなく、既存のクラスタ情報を含めて更新していたため、既存のクラスタ情報を含めないように修正しました。

・メタデータ保護機能使用時 ディスクフル直前の書き込みで無限ループが発生する不具合を修正(Cente障害情報:101-0120)
ディスクフル直前のデバイスに書込みを行った際、FAT領域の空き確認処理で無限ループが発生する不具合を修正しました。

・FAT領域が1面の場合にフォーマットを行うと、キャッシュ領域を初期化できない不具合を修正(Cente障害情報:101-0121)
FAT数が1の時、キャッシュ領域の初期化が行われていなかった不具合を修正しました。

・フォーマット及びメタデータ保護機能の速度改善
フォーマット及びメタデータ保護機能の速度改善を行いました。詳しくは、「FileSystemユーザーズマニュアル(Ver6.50)導入・運用編.doc」の「3.6.23連続まとめ書込み機能の選択について」を参照ください。

・Non-OS時、fs_memory.cの静的バッファを追加
USE_OSにてNon-OS選択時、fs_memory.cの静的バッファを使用することで、動的に確保した時と同じくらいの速度でファイルのアクセスが可能となっております。詳しくは「FileSystemユーザーズマニュアル(Ver6.50)導入・運用編.doc」の「3.6.1 OS(Operating System)選択」及び「3.6.2 メモリ関連設定ファイルについて」を参照ください。

・軽微な修正
ワーニング抑制など軽微なコードの修正を行いました。

・RX71M用のbspを追加
RX71MのNORフラッシュbspを作成しました。

ファイル及びディレクトリ検索にて大文字/小文字の区別をしていた処理について

発行番号: Cente101-0116
Rev: 第1版
発行日: 2022/11/14

【題名】
ファイル及びディレクトリ検索にて大文字/小文字の区別をしていた処理について

【適用製品】
Cente FileSystem Ver6.42

【影響API】
readdir_wc_uni, readdir_wc

【現象】
検索するファイル及びディレクトリ名に半角英字で検索した際、
大文字及び小文字は区別せず検索するべきですが、区別して検索を行っていました。

【原因】
半角英字の検索の際、完全一致するファイル及びディレクトリを検索するようになっていました。

【回避方法】
検索したいファイルまたはディレクトリを大文字または小文字の一致する半角英字で検索を行う

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

fcloseでエラーが発生すると必ずエラーコードが-1になる不具合について

発行番号: Cente102-0021
Rev: 第1版
発行日: 2022/10/17

【題名】
fcloseでエラーが発生すると必ずエラーコードが-1になる不具合について

【適用製品】
Cente Compact FileSystem Ver2.00

【影響API】
fclose

【現象】
fclose内にてエラーが発生した場合、必ずエラーコードが-1になります。

【原因】
fclose内の戻り値は0か-1が返却され、エラーコードはFSYSERに格納されますが、fclose内でコールしているfflush()の戻り値を、FSYSERに上書きしてしまっていました。
その為、fflush()の戻り値がエラーコードとして戻されてしまいます。

【回避方法】
なし

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

ログ管理チェックディスク機能の有効/無効設定組合せによる誤処理について

発行番号: Cente101-0115
Rev: 第1版
発行日: 2022/05/02

【題名】
ログ管理チェックディスク機能の有効/無効設定組合せによる誤処理について

【適用製品】
Cente FileSystem Ver6.40 ~ Ver6.42

【影響API】
ini_lmchkdsk、ini_lmchkdsk_uni、fclose、fflush、fputc、fputs、fwrite、rename、rename_uni、remove、remove_uni、move、move_uni、chg_attr、chg_attr_uni、chg_attrfp、chg_tstamp_uni、chg_tstampfp、chg_filelen

【現象】
LM_CHKDSK(LM_CHKDSK_UNI)マクロを有効(1)に設定した場合、
ini_lmchkdsk(ini_lmchkdsk_uni)を実行していないドライブは、
無効(0)に設定した際と同じ動作になるべきですが、
ログ管理チェックディスク機能の一部の処理が動作してしまい、APIの処理速度が遅くなることがあります。

また合わせてキャッシュ機能有効で且つSAVE_CACHEマクロを無効(0)に設定した場合は、
ini_lmchkdsk(ini_lmchkdsk_uni)を実行したドライブにおいて、
API内部でエラーを検出できずにAPIから正常(0)が戻されてしまうことや、
「-301 管理領域破損エラー」が戻される可能性があります。

【原因】
ログ管理チェックディスク機能有効時は、FileSystem内部で管理しているフラグ情報により
ドライブ毎に機能が有効/無効かを判断していますが、フラグ情報を参照する処理が抜けている箇所があり、
無効ドライブに対してもログ管理チェックディスクの処理が一部動作しておりました。

またSAVE_CACHEマクロを無効(0)に設定した場合の処理において、エラー判定処理が抜けている箇所があり、
正常/異常を正しく戻すことができておりませんでした。またセーブキャッシュが行われず、
メモリデバイスに「LMREPAIR」のログ管理ファイルを正しく作成することができておりませんでした。

【回避方法】
修正ソースにつきましては、弊社サポートまでお問い合わせ下さい。

独自APIでのディレクトリ検索時、エラーコード「CT_NOT_INI_D」が戻される不具合について

発行番号: Cente101-0114
Rev: 第1版
発行日: 2021/10/15

【題名】
独自APIでのディレクトリ検索時、エラーコード「CT_NOT_INI_D」が戻される不具合について

【適用製品】
Cente FileSystem Ver6.42

【影響API】
rmdir_all, rmdir_all_uni, dinfo, dinfo_uni

【現象】
以下全ての条件を満たした状態で【影響API】を実行した場合、『CT_NOT_INI_D:-17 初期化(ini_disk)されていない』エラーが発生します。
(1)fs_cfg.h内の FS_DINFO、FS_DINFO_UNI、FS_RMDIR_ALL、FS_RMDIR_ALL_UNIマクロの何れかを有効
(2)fs_cfg.h内の FS_READDIR_WC、FS_READDIR_WC_UNIマクロを無効
 ※(1)がS-JIS用のマクロの場合はFS_READDIR_WCマクロを、UNICODE用の場合はFS_READDIR_WC_UNIマクロを
  無効にした場合に発生
(3)メディア内のディレクトリに対して【影響API】を実行

【原因】
【影響API】では内部的に opendir() を実行する事でST_DIR構造体の情報を取得し、
ファイル又はディレクトリを参照する流れになっていますが、opendir()内での処理に問題がありました。
具体的には、opendir()の内部関数 DT_opendir()でディレクトリパス名を取得する必要がありますが、
FS_READDIR_WCマクロ、又はFS_READDIR_WC_UNIマクロが有効の時にしか取得できておらず、
【影響API】のマクロのみ有効にした場合は取得できておりませんでした。

ディレクトリパス名の取得に失敗した場合、その後の処理において本来アクセスしたいディレクトリでなく、
APIがサポートしていないドライブ自体を読み出す処理として動作してしまい(A:\, B:\, C:…)、その結果、
ドライブを全て読み出した後に「CT_NOT_INI_D」エラーが戻されていました。

【回避方法】
fs_cfg.h の以下のマクロを有効にする事で、本不具合を回避する事が出来ます。
・FS_READDIR_WCマクロ
・FS_READDIR_WC_UNIマクロ

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

Page 2 of 27