FS_IOC_GETFLAGS
それとFS_IOC_FSGETXATTR
ioctl
コマンドの違いは何ですか?どちらもどのフラグを返しますか?
答え1
Linux環境では、FS_IOC_GETFLAGS
両方ともFS_IOC_FSGETXATTR
inodeフラグを検索します。
GETFLAGS
以前のバージョンioctl
であり、元々はext2
Linuxで32ビット値で動作するため、スケーラビリティが制限されており、利用可能なビットはあまりありません。
FSGETXATTR
XFSから始めて、最近(2016)XFSから共有VFSレイヤーに移動しました。struct fsxattr
より多くの値とより多くの拡張を可能にするデータ構造を使用してください。
これらとそれらが返すデータの意味はすべてlinux/fs.h
。このGETFLAGS
表示は次にも記録されています。ioctl_iflags(2)
。 2 つの共通値は主にGETFLAGS
歴史的にサポートされているフラグに対応します。XFS:「追加のみ可能」、「atime更新なし」、「ダンプなし」、「不変」、「同期更新」。
どちらの場合も、サポートするかどうかはファイルシステムによって異なり、一部のフラグは実際にはまったくサポートされていません。
答え2
FS_IOC_GETFLAGS
BSDスタイルファイルフラグにアクセスするためのインタフェースです。ファイルにアクセスするにはファイルを開く必要があるため、* BSDよりも悪いインターフェースを使用してください。 * BSDにはこの情報が含まれているため、struct stat
Linuxの/ dev /エントリから関連情報を取得しようとすると、テープドライブがメディアを巻き戻す可能性があります。
FS_IOC_FSGETXATTR
ext4も2015年9月からサポートしているように見えるXFSに似ていますが、明らかに互換性のないインターフェイスです。
結論:両方のインターフェイスがファイルにアクセスするにはファイルを開く必要があるため、正しく設計されていません。管理者は、どのユーザーがインターフェイスからフラグをバックアップおよび復元star
できるかなど、重要なユーザーには知らないため、インターフェイスに気を配らないようです。FS_IOC_GETFLAGS