ファイルシステムのInodeフラグ:FS_IOC_GETFLAGSとFS_IOC_FSGETXATTRの違い

ファイルシステムのInodeフラグ:FS_IOC_GETFLAGSとFS_IOC_FSGETXATTRの違い

FS_IOC_GETFLAGSそれとFS_IOC_FSGETXATTR ioctlコマンドの違いは何ですか?どちらもどのフラグを返しますか?

答え1

Linux環境では、FS_IOC_GETFLAGS両方ともFS_IOC_FSGETXATTRinodeフラグを検索します。

GETFLAGS以前のバージョンioctlであり、元々はext2Linuxで32ビット値で動作するため、スケーラビリティが制限されており、利用可能なビットはあまりありません。

FSGETXATTRXFSから始めて、最近(2016)XFSから共有VFSレイヤーに移動しました。struct fsxattrより多くの値とより多くの拡張を可能にするデータ構造を使用してください。

これらとそれらが返すデータの意味はすべてlinux/fs.h。このGETFLAGS表示は次にも記録されています。ioctl_iflags(2)。 2 つの共通値は主にGETFLAGS歴史的にサポートされているフラグに対応します。XFS:「追加のみ可能」、「atime更新なし」、「ダンプなし」、「不変」、「同期更新」。

どちらの場合も、サポートするかどうかはファイルシステムによって異なり、一部のフラグは実際にはまったくサポートされていません。

答え2

FS_IOC_GETFLAGSBSDスタイルファイルフラグにアクセスするためのインタフェースです。ファイルにアクセスするにはファイルを開く必要があるため、* BSDよりも悪いインターフェースを使用してください。 * BSDにはこの情報が含まれているため、struct statLinuxの/ dev /エントリから関連情報を取得しようとすると、テープドライブがメディアを巻き戻す可能性があります。

FS_IOC_FSGETXATTRext4も2015年9月からサポートしているように見えるXFSに似ていますが、明らかに互換性のないインターフェイスです。

結論:両方のインターフェイスがファイルにアクセスするにはファイルを開く必要があるため、正しく設計されていません。管理者は、どのユーザーがインターフェイスからフラグをバックアップおよび復元starできるかなど、重要なユーザーには知らないため、インターフェイスに気を配らないようです。FS_IOC_GETFLAGS

関連情報