파일 시스템 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). 둘 사이의 공통 값은 주로 GETFLAGS역사적으로 지원되는 플래그에 해당합니다.XFS: "추가만 가능", "atime 업데이트 없음", "덤프 없음", "불변" 및 "동기 업데이트".

두 경우 모두 지원 여부는 파일 시스템에 따라 다르며 일부 플래그는 실제로 전혀 지원되지 않습니다.

답변2

FS_IOC_GETFLAGSBSD 스타일 파일 플래그에 액세스하기 위한 인터페이스입니다. 파일에 액세스하려면 파일을 열어야 하기 때문에 *BSD보다 더 나쁜 인터페이스를 사용합니다. *BSD에는 이 정보가 포함되어 있으므로 struct statLinux의 /dev/ 항목에서 관련 정보를 얻으려는 경우 테이프 드라이브가 미디어를 되감게 될 수 있습니다.

FS_IOC_FSGETXATTRext4도 2015년 9월부터 지원하는 것으로 보이는 XFS와 유사하지만 분명히 호환되지 않는 인터페이스입니다.

결론: 두 인터페이스 모두 파일에 액세스하려면 파일을 열어야 하므로 제대로 설계되지 않았습니다. 관리자는 어떤 사용자가 인터페이스에서 플래그를 백업하고 복원 star할 수 있는지 와 같은 중요한 사용자에게 알리지 않기 때문에 인터페이스에 신경 쓰지 않는 것 같습니다 .FS_IOC_GETFLAGS

관련 정보