Cente FileSystem

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を作成しました。

Cente FileSystem

・readdir_wc(),readdir_wc_uni()を実行し、終端まで検索せずに抜けると、次の検索が正しく出来ない不具合を修正(Cente障害情報:101-0103)
readdir_wc(),readdir_wc_uni()の検索時において、終端を示す戻り値「NULL」が戻される前に処理を抜けた場合、次の検索が正しく行われない不具合を修正しました。

・メタデータ保護機能使用時、CT_DISK_FULLエラーが発生する不具合を修正(Cente障害情報:101-0104)
メタデータ保護機能を有効にした状態で、3クラスタ以上の書き込みが発生した場合、既に使用されているクラスタ位置を参照し、「CT_DISK_FULL」エラーが発生する不具合を修正しました。

・ワイルドカード検索時において、メモリ解放したST_WORK構造体資源を使用してしまう不具合を修正(Cente障害情報:101-0105)
readdir_wc()によるワイルドカード検索において、APIを実行する度にディレクトリ階層情報をST_WORK構造体資源に保持する必要がありますが、資源を解放してしまうことで、正しく検索できなくなる不具合を修正しました。

・UNICODE API使用時において、Cente FileSystem用の構造体資源を破壊する不具合を修正(Cente障害情報:101-0106)
UNICODE指定APIの rmdir_all_uni, dinfo_uni, readdir_wc_uni において、引数に指定した文字列が一定数を超えると、構造体資源を破壊してしまう不具合を修正しました。

・fseek()実行時、正しいセクタ位置を参照できない不具合を修正(Cente障害情報:101-0107)
速度向上のためにセクタ単位で無くクラスタ単位でシークしている処理において、ファイルデータ用バッファ(入出力バッファ)のメモリを、動的に取得した場合のクラスタサイズ固定で処理していたため、静的に取得した場合のセクタサイズの時に正しいセクタ位置が参照出来ない不具合を修正しました。

・API内部で使用中のST_DIR構造体資源を解放してしまう不具合を修正(Cente障害情報:101-0108)
rmdir_all()、rmdir_all_uni()、dinfo()、dinfo_uni()、readdir_wc()、readdir_wc_uni()において、API内部で使用しているST_DIR構造体資源の解放処理に誤りがあり、以下の問題が発生する不具合を修正しました。
– 使用中のST_DIR構造体資源を解放してしまうことで別のデータで上書きしてしまう。
– ST_DIR構造体資源の解放が行われず、資源が枯渇してしまう。

・chg_attr_uni()実行時、SAVE_CACHE機能が実行されない不具合を修正(Cente障害情報:101-0109)
SAVE_CACHE機能を”有効”にしているにも関わらず、chg_attr_uni()実行時にセーブキャッシュが実行されない不具合を修正しました。

・メタデータ保護機能無効時、FS_FERAMマクロが未定義になる不具合を修正(Cente障害情報:101-0110)
メタデータ保護機能を”無効”にした場合、コンパイルに依ってFS_FERAMマクロが未定義と検出される不具合を修正しました。

・メタデータ保護機能有効時、move()を実行すると誤った領域への書き込みと破損クラスタが発生する不具合を修正(Cente障害情報:101-0111)
メタデータ保護機能を”有効”にした状態でmove()、move_uni()を実行すると、以下2つの問題が発生する不具合を修正しました。
– FAT領域に破損クラスタが作成されてしまう。
– FAT領域、DIR領域、DATA領域いずれかの誤った位置に書き込んでしまう。

・ディレクトリキャッシュ機能使用時にディレクトリの作成/拡張を行うと、キャッシュ内の古い情報を参照してしまう不具合を修正(Cente障害情報:101-0112)
ィレクトリキャッシュ機能を使用した場合にディレクトリの作成/拡張を行うと、実メモリの情報よりキャッシュの情報が古い情報になってしまう不具合を修正しました。

・メディア挿抜後の書き込み処理でディスクフルエラーが発生する不具合を修正(Cente障害情報:101-0113)
空きFAT検索時に削除されたクラスタを早期に再利用する処理において、マウント時に内部変数をクリアする処理が抜けていた事で 「CT_DISK_FULL」エラーが発生する不具合を修正しました。

Cente FileSystem

・メタデータ保護機能有効時に、コンパイルエラーが発生する不具合を修正(Cente障害情報:101-0096)
fs_cfg.hファイル内のLM_CHKDSK、LM_CHKDSK_UNIの両マクロを“0”の状態で、FS_JOURNALまたはFS_JOURNAL_UNIマクロを“1”に設定すると、コンパイルで“LMCHKDSK_TRUE未定義”エラーが検出される不具合を修正しました。
・パス検索時に失敗する不具合を修正(Cente障害情報:101-0097)
UNICODEで操作するrmdir_all_uni,dinfo_uni,readdir_wc_uni APIにおいて、CPUエンディアン(リトル/ビッグ)とFS_READDIR_UNI_ENDIANマクロの設定値の組み合わせによって、誤ったパス情報で処理してしまう不具合を修正しました。(「CT_NO_FILE:-3」または「CT_DRIVE_ERR:-12」エラーが発生します)
・エントリの削除を伴う既存ファイル/ディレクトリ操作時に破損クラスタが発生する不具合を修正(Cente障害情報:101-0098)
エントリの削除を伴う既存ファイル/ディレクトリ操作時にエントリ情報がクラスタを跨いでいると、検索と作成の両方の処理で2回FATチェーンを更新してしまう不具合を修正しました。
・readdir_wc,readdir_wc_uni実行時に正しく検索できない不具合を修正(Cente障害情報:101-0099)
readdir_wc,readdir_wc_uniによるワイルドカード検索時のファイル名比較処理において、不一致となるべきファイルが一致、一致となるべきファイルが不一致になってしまう不具合を修正しました。
・ARCHIVE属性以外のビットが立っている場合、ファイルと判定されない不具合を修正(Cente障害情報:101-0100)
rm_dir_all、rmdir_all_uni、dinfo、dinfo_uni、readdir_wc、readdir_wc_uniにおいて、ARCHIVE属性以外のビットが立っている場合にファイルと判定されない不具合を修正しました。
・高速fseek機能使用時、古いキャッシュ情報を読み出してしまう不具合を修正(Cente障害情報:101-0101)
高速fseek使用時において、シークバッファの設定後、chg_filelen()でファイルサイズを縮小すると、古いキャッシュ情報が残ってしまい、誤ったデータを読み出してしまう不具合を修正しました。
・readdir()実行時、NULLポインタアクセスしてしまう不具合を修正(Cente障害情報:101-0102)
opendir、opendir_uniの引数に“\”のみを指定した後の、readdir、readdir_uniの処理で、ST_DISK構造体に対するNULLチェックの処理が不足しており、NULLポインタアクセスが発生してしまう不具合を修正しました。
・メタデータ保護機能のJFS_SIG_DAMAGEエラー発生時の処理内容の改善
ini_journal、ini_journal_uni実行時にJFS_SIG_DAMAGEエラーによる管理ファイルの異常を検出した際、自動的に復旧が行えるように、内部で管理ファイルを削除する処理を追加しました。


Cente FileSystem

・メタデータ保護機能有効時に、コンパイルエラーが発生する不具合を修正(Cente障害情報:101-0096)
fs_cfg.hファイル内のLM_CHKDSK、LM_CHKDSK_UNIの両マクロを“0”の状態で、FS_JOURNALまたはFS_JOURNAL_UNIマクロを“1”に設定すると、コンパイルで“LMCHKDSK_TRUE未定義”エラーが検出される不具合を修正しました。

・パス検索時に失敗する不具合を修正(Cente障害情報:101-0097)UNICODEで操作する
rmdir_all_uni,dinfo_uni,readdir_wc_uni APIにおいて、CPUエンディアン(リトル/ビッグ)とFS_READDIR_UNI_ENDIANマクロの設定値の組み合わせによって、誤ったパス情報で処理してしまう不具合を修正しました。(「CT_NO_FILE:-3」または「CT_DRIVE_ERR:-12」エラーが発生します)

・エントリの削除を伴う既存ファイル/ディレクトリ操作時に破損クラスタが発生する不具合を修正(Cente障害情報:101-0098)
エントリの削除を伴う既存ファイル/ディレクトリ操作時にエントリ情報がクラスタを跨いでいると、検索と作成の両方の処理で2回FATチェーンを更新してしまう不具合を修正しました。

・readdir_wc,readdir_wc_uni実行時に正しく検索できない不具合を修正(Cente障害情報:101-0099)
readdir_wc,readdir_wc_uniによるワイルドカード検索時のファイル名比較処理において、不一致となるべきファイルが一致、一致となるべきファイルが不一致になってしまう不具合を修正しました。

・ARCHIVE属性以外のビットが立っている場合、ファイルと判定されない不具合を修正(Cente障害情報:101-0100)
rmdir_all、rmdir_all_uni、dinfo、dinfo_uni、readdir_wc、readdir_wc_uniにおいて、ARCHIVE属性以外のビットが立っている場合にファイルと判定されない不具合を修正しました。

・高速fseek機能使用時、古いキャッシュ情報を読み出してしまう不具合を修正(Cente障害情報:101-0101)
高速fseek使用時において、シークバッファの設定後、chg_filelen()でファイルサイズを縮小すると、古いキャッシュ情報が残ってしまい、誤ったデータを読み出してしまう不具合を修正しました。

・readdir()実行時、NULLポインタアクセスしてしまう不具合を修正(Cente障害情報:101-0102)
opendir、opendir_uniの引数に“\\”のみを指定した後の、readdir、readdir_uniの処理で、ST_DISK構造体に対するNULLチェックの処理が不足しており、NULLポインタアクセスが発生してしまう不具合を修正しました。

・メタデータ保護機能のJFS_SIG_DAMAGEエラー発生時の処理内容の改善
ini_journal、ini_journal_uni実行時にJFS_SIG_DAMAGEエラーによる管理ファイルの異常を検出した際、自動的に復旧が行えるように、内部で管理ファイルを削除する処理を追加しました。

Cente FileSystem

・ログ管理チェックディスク機能の追加

ファイル/ディレクトリへのアクセス中にログを取ることで、電源断や不意なメディア取り外しが発生した場合に、問題があった箇所のみ的確に修復する機能を追加しました。チェックディスク機能と同様に、メタデータの不整合や規格外の値などを検出した上で修復を行う、低負荷な保護機能です。

・ST_FILE構造体使用部の見直し

ST_FILE型ポインタに対して、FILE型のアドレスをキャストせずにそのまま渡していた箇所を修正しました。Centeとは別にFILE型を定義している環境で、コンパイラエラーになる可能性がありました。

Cente FileSystem

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

全角ファイル・ディレクトリ名に対し大文字/小文字の関係にあった場合、異なったファイル・ディレクトリであると判断してしまう不具合を修正。本修正はVer6.20で修正した「Cente障害情報:101-0092」について追加修正を行ったものです。以下の処理部を修正しています。

1.同一ファイルオープンの検出

2.rename(), rename_uni()実行時の同一ファイル検出

3.move(), move_uni()実行時の同一ファイル検出

・高速fseek時に異なる位置にシークしてしまう不具合を修正(Cente障害情報:101-0093)

高速fsek使用時において、クラスタ内移動セクタ数の算出方法に誤りがあり、以下の問題が発生する不具合を修正。

1.正しい位置にデータが書き込めない。

2.データが正しく読み出せない。

3.サイズ情報とFAT チェーン情報に不整合が発生してしまう。

・ハッシュによる検索時にCT_ENTRY_ERR(-71)エラーが発生する不具合を修正(Cente障害情報:101-0094)

ハッシュ機能有効時に、フルパス指定で且つディレクトリエントリ情報の変更を伴うAPIを実行した場合、CT_ENTRY_ERR(-71)エラーが発生する可能性がある不具合を修正。

・nullfat2による空き検索の不具合を修正(Cente障害情報:101-0095)

ファイル削除処理が一度行われた場合に(fopen w、w+モードによるファイルオープンを含む)、その後の書き込み処理において、容量に空きがあるのにも関わらずディスクフルエラー(CT_DISK_FULL:-11)が発生する可能性がある不具合を修正。

・ディレクトリ一括削除API追加

S-JIS用ディレクトリ一括削除API【rmdir_all()】、UNICODE用ディレクトリ一括削除API【rmdir_all_uni()】を追加しました。

・ディレクトリ内総数取得API追加

S-JIS用ディレクトリ内総数取得API【dinfo()】、UNICODE用ディレクトリ内総数取得API【dinfo_uni()】を追加しました。

・ワイルドカードを用いた検索APIを追加

S-JIS用ワイルドカードを用いた検索API【readdir_wc()】、UNICODE用ワイルドカードを用いた検索API【readdir_wc_uni()】を追加しました。

・文字列操作関数の追加/削除

「Cente障害情報:101-0092」の修正に伴い、以下の関数を追加/削除しました。

《追加》

 1.fs_fnaicmp()

 2.fs_fnanicmp()

 3.fs_fnaicmp_uni()

 4.fs_fnanicmp_uni()

《削除》

 1.fs_mbsncmp ()

 2.fs_unicodencmp()

・ini_journal()の戻り値修正

エラーコード「CT_ABN_FILE:-1」が戻される一部のケースにおいて、より解りやすいエラーコードへの置き換えを行いました。

・静的解析ツールの指摘事項修正

ルート上のファイル/ディレクトリ検索、作成を行う内部関数、fs_set_dir_entry_root()、fs_find_longer_entry_root()において、処理上の問題はないが、静的解析ツールを使用した場合に、型の違いによりワーニングが検出される問題を修正しました。

・ショートファイル名のチルダ後に付加する番号の仕様変更

ロングファイル名でファイル/ディレクトリを作成した際、重複回避のためにショートファイル名に付加させる「チルダ(~) + 番号」はエントリ情報に格納されている最大値に加算させる形で付加させています。上限値を超えた場合は即座にCT_OVER_SFILENAME(-66)エラーとしていましたが、エントリ情報の最小値を確認することで、削除済みの番号(最小値より若い番号)が再利用できるように改善を行いました。

Cente FileSystem

 ・ショートエントリ検索で誤検出する場合がある不具合を修正(Cente障害情報:101-0089)

 UNICODE APIにおいて12文字以内のUNICODEのASCII変換に誤りがあり、指定名以外のエントリを検出してしまう場合がある不具合を修正。

 ・rename_uniにおける名前比較で誤ったエラーコードを返す不具合を修正(Cente障害情報:101-0090)

 UNICODEファイル名が同一か否かを比較する際に、文字列の終端を誤検出していた為、誤った比較結果を返していた不具合を修正。

 ・UNICODE文字の2バイト目のコードの扱いに誤りがある不具合を修正(Cente障害情報:101-0091)

 UNICODE文字列比較関数fs_unicodecmp(), fs_unicodencmp()において異なるUNICODE文字を同一と判定してしまう場合がある不具合を修正。

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

 アルファベットのファイル・ディレクトリ名に対する大文字・小文字を同一視すべき判定処理に誤りがあった不具合を修正。

以下のコード領域が不具合対象となります。【全角英字、ギリシャ文字、ロシア文字、アラビア数字】

・高速なファイル・ディレクトリ検索機能追加

 ハッシュアルゴリズムを応用することでファイル・ディレクトリの検索が高速になる機能が追加されました。

 ・FAT領域のビットマップ化機能変更

(1)メディアの最適なビットマップサイズを取得できるAPI get_bitmapsize()を追加しました。

(2)大容量メディア向けに空き時間を使用してビットマップを構築するサンプルタスクを提供しました。

(3)ini_bitmapfat()の第1引数を変更しました。

   第1引数をST_DISK *d[ディスク構造体]からct_int8_t drv[ドライブ名(’A’,’B’,…)]に変更しました。

・メタデータ保護機能用のマクロ名を変更

S-JIS API用とUNICODE API用を個別に設定できるようにしました。

・チェックディスクAPI追加

UNICODE用チェックディスクAPI【chk_dsk_uni()】を追加しました。

・UNICODE API追加

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

・ファイル結合API追加

S-JIS用ファイル結合API【ct_combine()】、UNICODE用ファイル結合API【ct_combine_uni()】を追加しました。

・ドライブ削除API追加

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

・機能制限の撤廃

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

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

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

・FSINFOが異常値だった場合の対策を追加

(1)fs_drv.c内get_dev2()にてFSINFOセクタのsignatureチェックでエラーを戻すよう変更しました。

(2)renew_fsinfo(), renew_fsinfo_uni()にてNextFreeClusterの更新機能を追加しました。

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

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

 ・空きFAT検索開始位置の仕様改善

 remove(), remove_uni(), rmdir(), rmdir_uni()で削除されたクラスタを空きFAT検索時、早期に再利用できるよう変更しました。

 

Cente FileSystem

・ファイル分割、クラスタ挿入時にFAT操作が正しく行えない不具合を修正

ct_divideでFATチェーンの分割位置とディレクトリエントリに書き込むサイズ情報に不整合が発生する不具合を修正ct_ins_clustで挿入位置に「1」以上を指定した場合、指定位置とは誤った位置にクラスタを挿入してしまう不具合を修正

(Cente障害情報:101-0079)

 

 ・同一ファイルの多重オープン時の読み出しで誤ったデータを読み込む不具合を修正

書き込みモード("w","w+","a","a+","r+")と読み出しモード("r")で同一ファイルを同時にオープンした時に、以下の問題が発生する不具合を修正

1.  誤ったデータを読み込んでしまう

2.  古いデータを読み込んでしまう

3.  ファイルサイズが更新されない

(Cente障害情報:101-0080)

 

 ・高速fseek機能を使用した場合のファイル操作時に、データの上書き及びメタデータの不整合が発生する不具合を修正

高速fseek機能を使用した場合に以下の問題が発生する不具合を修正

1.  入出力バッファの管理セクタ番号を指定シーク先より手前のセクタ番号で管理してしまう

2.  FATチェーンの拡大をせずにファイルサイズのみ拡大してしまう

3.  高速fseek用クラスタバッファに積み上げていない位置から不正なクラスタ番号を取得し、入出力バッファに誤ったデータを取り込んでしまう

(Cente障害情報:101-0081)

 

 ・ビルドの結果エラー、ワーニングが発生する不具合を修正

以下のエラー、ワーニング検出内容を修正

1.  Undefined external symbolのリンクエラー

2.  整数値比較演算において無意味な演算式

3.  グローバル関数宣言とローカル関数宣言の矛盾

4.  引数の型と一致していない呼び出し関数

5.  戻り値の型と異なる戻り値

6.  未使用変数、未使用関数

7.  値の初期化が必要な変数

(Cente障害情報:101-0082)

 

 ・追記モードで開いたファイルに正しく追記できない不具合を修正

メタデータ保護機能使用時、"a"もしくは"a+"モードで開いたファイルに対して追記を行った場合、FATとディレクトリエントリの不整合が発生する不具合を修正

(Cente障害情報:101-0083)

 

 ・ディレクトリ拡張時不特定な領域を壊す場合がある不具合を修正

メタデータ保護機能使用時、ファイル、ディレクトリの作成/名前変更/移動に伴うディレクトリエントリ領域の拡張処理で、FATアクセス用セマフォ資源の獲得に失敗(タイムアウトエラー)すると不特定領域に拡張してしまう不具合を修正

(Cente障害情報:101-0084)

 

 ・API処理中のアンマウントによる資源返却の不具合を修正

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

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

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

(Cente障害情報:101-0085)

 

 ・fs_cfg.hのメタデータ保護機能関連マクロ値によって起こる不具合を修正

メタデータ保護機能使用時、マクロに設定した値によって以下の問題が発生する不具合を修正

1.  複数のメディアを使用し且つセクタサイズが異なっていた場合、セクタサイズの小さいメディアにおいてバックアップ領域の破壊が発生する

2.  FS_DIR_BLK_NUMを「1」に設定した場合に、バックアップ領域が不足し、獲得バッファオーバーのエラーが発生する

(Cente障害情報:101-0086)

 

 ・fwriteの第2引数sizeに1以外を指定すると書き込みができない不具合を修正

メタデータ保護機能使用時、fwriteの第2引数 size に 1 以外を指定すると書き込みが行われず、また、その際の戻り値を正常時の値で戻してしまう不具合を修正

(Cente障害情報:101-0087)

 

 ・既存ファイル、ディレクトリに対し後からメタデータ保護機能を有効にした場合の不具合を修正

既にファイル、ディレクトリが存在するメディアに対し後からメタデータ保護機能を有効にした時、既存のファイル、ディレクトリの更新を行うとエラーが発生する不具合を修正

(Cente障害情報:101-0088)

 

 ・JFS_SIG_DAMAGEのマクロ名を修正

JFS_SIG_DAMAGEのマクロ名がソースコード上、JER_SIG_DAMAGEになっていた誤りを修正

 

 ・下記関数を修正

fs_inimem, fs_iniworkmem   

固定長メモリプールを設定する時、取得IDをchar型でキャストしたため、256以上のIDを引き渡せなかった誤りを修正

 

 ・set_seekbf()の第2引数を変更

第2引数buf_pの型名を明示的にvoid型からct_uint32_t型に変更 

 

Cente FileSystem

・下記APIを修正
fopen_uni, move_uni, rename_uni, get_attr_uni, chg_attr_uni, get_tstamp_uni, chg_tstamp_uni, finfo_uni, remove_uni, mkdir_uni, opendir_uni, rmdir_uni
 下位Byteが「0x00」のUNICODE文字をフルパスに指定した場合、正しくファイル、ディレクトリ操作が行えない不具合を修正
(Cente障害情報:101-0064)
 
・下記APIを修正
fopen, fputc, fputs, fwrite, rename, remove, move, chg_attr, chg_tstamp, chg_filelen, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni, chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni, ini_journal, ini_journal_uni
 FAT領域かディレクトリエントリ領域に書き込み中に電源断が起きたとき、修復不能になる場合がある不具合を修正(メタデータ保護機能使用時)
(Cente障害情報:101-0065)
 
・下記APIを修正
fopen, fputc, fputs, fwrite, rename, remove, move, chg_attr, chg_tstamp, chg_filelen, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni, chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni, ini_journal, ini_journal_uni
 キャッシュのブロック単位の書込みを考慮していなかった為、修復不能になる場合がある不具合を修正(メタデータ保護機能使用時)
(Cente障害情報:101-0066)

 ・下記APIを修正
fopen, fputc, fputs, fwrite, rename, remove, move, chg_attr, chg_tstamp, chg_filelen, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni, chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni
 ジャーナルファイルリード時に修復不可能エラーが発生すると、ジャーナルファイルで使用できない領域ができてしまう不具合を修正(メタデータ保護機能使用時)
(Cente障害情報:101-0067)
 
・下記APIを修正
fopen, remove, chg_filelen, rmdir, fopen_uni, remove_uni, rmdir_uni, ini_journal, ini_journal_uni
 FATチェーンクリア中の電源断後、修復による再FATチェーンクリアが実行できない場合がある不具合を修正(メタデータ保護機能使用時)
(Cente障害情報:101-0068)
 
・下記APIを修正
fopen, fputc, fputs, fwrite, rename, remove, move, chg_attr, chg_tstamp, chg_filelen, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni, chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni, ini_journal, ini_journal_uni
 複数ドライブでメタデータ保護機能を有効にした場合に正常に修復できない場合がある不具合を修正(メタデータ保護機能使用時)
(Cente障害情報:101-0070)
 
・下記APIを修正
readdir, readdir_uni
 readdir, readdir_uniにおいて不正なメモリアクセスをする場合がある不具合を修正
(Cente障害情報:101-0071)
 
・fseek関数修正
 ・高速fseekマクロ(FS_SEEK_HIGH)を有効にした場合のファイルに対してfreadを実行すると不正なデータを読み出す場合がある不具合を修正
  (Cente障害情報:101-0072)

 ・fseek()の移動先に4GBを超える位置を指定してもエラーを検出できない不具合を修正
  (Cente障害情報:101-0077)
 
・下記APIを修正
rename, move, rename_uni, move_uni
 ファイルを書き込みモードで多重オープンできてしまう不具合を修正
(Cente障害情報:101-0073)
 
・下記APIを修正
fopen, rename, remove, move, finfo, chg_attr, chg_tstamp, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni, finfo_uni, chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni
 ロング名かショート名かの扱い方の違いによりファイルの検索ができない場合がある不具合を修正
(Cente障害情報:101-0074)
 
・下記APIを修正
fopen, fputc, fputs, fwrite, rename, remove, move, chg_attr, chg_tstamp, chg_filelen, mkdir, rmdir, fopen_uni, rename_uni, remove_uni, move_uni,  chg_attr_uni, chg_tstamp_uni, mkdir_uni, rmdir_uni, ini_journal, ini_journal_uni
 FATキャッシュ初期化関数ini_blk_cache()でブロック数を複数に指定した場合の不具合を修正  (メタデータ保護機能使用時)
(Cente障害情報:101-0075)
 
・下記APIを修正
fopen, rename, remove, move, finfo, chg_attr, chg_tstamp, ct_divide, ct_ins_clust, fread
 マルチバイト文字の2byte目のコードを正しく処理できていない不具合を修正
(Cente障害情報:101-0076)
 
・ct_ins_clust関数修正
 ct_ins_clust関数のクラスタ挿入時の不具合を修正
(Cente障害情報:101-0078)
 
・FSINFO更新API追加
 FSINFO更新API renew_fsinfo, renew_fsinfo_uni を追加しました
 
・fread, fwrite関数修正
 引数size, nから算出されるlen = size * n においてlenの桁あふれをチェックするよう修正
 
・fs_set_dir_entry_root関数修正
 FAT12/16のルートディレクトリにおいて2セクタ以降のセクタの先頭に1エントリ作成する場合の無駄なセクタの書き込みが発生しないよう修正
 

Cente FileSystem

 ・fs_find_dir_entry_sub、fs_find_dir_entry_uni_sub関数修正
FAT32フォーマットされたメディアのルートディレクトリに対して、1クラスタを超えるファイル・ディレクトリ操作が行えない不具合を修正
(Cente障害情報:001-0049)
・fs_vfopen、fs_vfopen_uni関数修正
メタデータ保護機能有効時、既存ファイルを’w’モードでオープンした場合のFAT2領域チェーン削除中に電源断が発生すると、修復が正常に行えない不具合を修正
(Cente障害情報:001-0050)
・DT_fputc、DT_fputs、DT_fwrite、fs_chg_filelen関数修正
メタデータ保護機能有効時、以下の条件で書き込みを行っている時に電源断が発生すると修復が正常に行えない不具合を修正
1.既存ファイルを’r+’,’a’,’a+’でオープン
2.クラスタチェーンが作成される書き込み
(Cente障害情報:001-0051)
・FAT情報操作関数修正
メタデータ保護機能有効時、複数タスクからのAPI同時実行中に電源断が発生すると修復が正常に行えない不具合を修正
-ファイル作成中に電源断が発生すると修復が正常に行えず、ファイルデータをリードした時に別ファイルのデータを参照する可能性があります。
-ディレクトリ作成中に電源断が発生すると修復が正常に行えず、作成したディレクトリを参照する事ができない可能性があります。
(Cente障害情報:001-0052)
・fsh_fwrite関数修正
fwrite()でディスクフルになった時に、エラーコードCT_DISK_FULL(-11)が取得できない不具合を修正
(Cente障害情報:001-0053)
・UNICODEパス操作関数修正
UNICODE APIに最大長:258文字を超える長さのパスを指定できてしまう不具合を修正
(Cente障害情報:001-0054)
・DT_rmdir_uni関数修正
rmdir_uni()でエラー終了した時に正確なエラーを検出できない不具合を修正
(Cente障害情報:001-0055)
・fs_quick_format関数修正
メタデータ保護機能の第2FATキャッシュを使用した状態でクイックフォーマットを実行すると、第2FATキャッシュと実際の第2FAT領域の内容が合わなくなる不具合を修正
(Cente障害情報:001-0056)
・fs_unicodecmp関数修正
オープン中のUNICODE指定ファイルを削除・改名・移動できてしまう不具合を修正
(Cente障害情報:001-0057)
・fs_vfputc、fsh_fwrite関数修正
4GByteのファイルに対してデータ書き換えが出来ない不具合を修正
(Cente障害情報:001-0058)
・ショートエントリ情報操作関数修正
以下の条件を全て満たしたファイル/ディレクトリが存在する場合にUNICODE指定APIを使用すると、拡張子の有/無による違いを識別できない不具合を修正
1.他機器(Windows PC等)で作成したファイル/ディレクトリ
2.名前の文字数が8文字以上、12文字以内
3.名前の9文字目がドット(.)の場合
(Cente障害情報:001-0059)
・ファイル属性識別関数修正
アーカイブ属性が0に設定されているファイルを正しく削除、チェック(異常検出)できない不具合を修正
(Cente障害情報:001-0061)
・DT_fputs関数修正
メタデータ保護機能有効時、fputsにて1クラスタを超える書き込みが正常に行えない不具合を修正
(Cente障害情報:001-0062)
・EXFAT_USEマクロによる有効/無効指定部を修正
64bit整数型をサポートしていない環境でコンパイルを行なうとエラーが検出される不具合を修正
(Cente障害情報:001-0063)
・fs_testtiny.cファイル削除
小規模版のFileSystem機能テストモジュールをパッケージから削除

Page 1 of 5