Чи є у системних викликів Linux доступ до всіх функцій файлових систем, які він підтримує?


12

Linux підтримує багато файлових систем (наприклад: ext3, NTFS, FAT32 тощо).

На наступній схемі показано, як Linux дозволяє процесу отримувати доступ до файлів:

введіть тут опис зображення

Отже, припустимо, що процес, який називається read()системним викликом для читання файлу, що станеться, це доступ до рівня VFS, а рівень VFS вирішить, до якого драйвера файлової системи отримати доступ на основі файлової системи розділу, до якого файл бути прочитаним проживає на.

Linux надає безліч системних викликів на доступ до файлів (наприклад , read(), write(), rename()і т.д.).

Тепер read()і write()і rename()працювати на всіх файлових систем , які підтримує Linux.

Але є специфічні особливості, які існують лише в деяких файлових системах, а в інших відсутні. Наприклад: у файловій системі NTFS ви можете встановити біт архіву для файлу, тоді як цього не можна зробити у файловій системі ext3.

Тепер моє запитання полягає в тому, чи є у Linux системні виклики для доступу до всіх функцій файлових систем, які він підтримує? наприклад: чи має Linux системний виклик, щоб встановити біт архіву для файлу у файловій системі NTFS?

Відповіді:


10

чи має Linux системний виклик, щоб встановити біт архіву для файлу у файловій системі NTFS?

У цьому конкретному випадку ntfs-3gдрайвер експортує атрибути файлу за допомогою розширених атрибутів , див. Чи можна встановити біт "Архів" для файлу в NTFS в Linux?

Файлова система (V) FAT має подібні атрибути файлів, але вона використовує ioctl()функцію для доступу до них, див ioctl_fat(2). ( ioctl()це свого роду багатоцільовий системний виклик, який використовується для всіх видів конкретних пристроїв, які не гарантують реальний системний виклик.)

Тепер моє запитання полягає в тому, чи є у Linux системні виклики для доступу до всіх функцій файлових систем, які він підтримує?

Важко відповісти напевно , але був принаймні один приклад протилежного. ext4 внутрішньо підтримує часову позначку "час народження" для файлів (наприклад, реальний час створення, на відміну від ctimeзмін у зміні inode). Але незважаючи на те, що ext4 є "стандартною" файловою системою, тривалий час не було системного виклику для доступу до часу народження.

Його слід підтримувати зараз, додавши statx()системний виклик у Linux 4.11 у квітні 2017 року.

Пов'язані:


3
ntfs! = жир. Принаймні версія ядра ntfs НЕ має жодного способу встановити або отримати прапор архіву, хоча його заголовки визначають його. Тільки ntfs-3g на основі запобіжника, здається, підтримує його (за допомогою розширених атрибутів, а не спеціальних йоктлів).
Дядько Біллі

Це не пов'язане безпосередньо з питанням, але як доповнення до вашої згадки про statxце, він зараз підтримується в бібліотеці С та в останній версії coreutils, яка вийшла кілька днів тому.
Стівен Кітт

@UncleBilly, d'oh, мабуть, я не можу читати, але просто автоматично подумав про (v) жир. Дякую, що помітили це, я побачу, чи зможу знайти більш відповідну посилання.
ilkkachu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.