Якщо mount(2)
потрібно було створити новий каталог, який буде точкою монтування, ви не змогли нічого змонтувати під файловою системою лише для читання. Це було б глупо, тому ми можемо це виключити.
Якщо при монтажі необов'язково створено новий каталог, який буде точкою кріплення , це було б дивно. Це не так, як mount / unmount трапляються постійно, тому введення додаткової логіки в ядро для виконання цих двох кроків за допомогою одного системного виклику не буде важливим прискоренням. Просто залиште його на просторі користувача, щоб здійснити mkdir(2)
системний дзвінок, якщо він хоче. У відповіді Дмитра вказується, що mount(2)
робити обидві речі це зробило б це не атомним. І ви хочете отримати додатковий аргумент mount(2)
з прапорами режиму, як " open(2)
take", " O_CREAT
," O_EXCL
і т.д.
Або, можливо, ви запитували про те, щоб mount(8)
(традиційна програма, яка робить mount(2)
системні дзвінки) робити це? Це було б можливо, але там вже ідеально добре mkdir(1)
для роботи, і дизайн Unix - це все про хороші невеликі інструменти, які можна комбінувати. Якщо ви хочете, щоб інструмент робив і те, і інше, легко написати сценарій оболонки, щоб створити цей інструмент з двох простих інструментів. (Або, як зауважив Муру, це udisksctl
вже робиться, тому вам не доведеться писати це.) Також, звичайний Linux mount(8)
від util-linux підтримує mount -o x-mount.mkdir[=mode]
його x-
синтаксис для параметрів для простору користувачів, а не для передачі параметрів у файлову систему.
Тепер цікавіше питання: чому взагалі повинен бути каталог у батьківській файловій системі?
Як і вказує відповідь pjc50 (жодного відношення, хоча у нього є мої ініціали!), Якщо точки монтажу відображатись у списках каталогів, тоді знадобиться додаткова перевірка на кожен readdir()
.
Наявність точок монтажу як каталогів у каталозі, що містить їх (на батьківському FS) - приємний трюк. readdir()
зовсім не потрібно помічати, що це точка кріплення. Це відбувається лише в тому випадку, якщо точка монтажу використовується як компонент шляху. Дозвіл доріжки, звичайно, повинен перевіряти таблицю кріплення для кожного компонента каталогу шляху.
udisksctl
. Навіщо використовуватиmount
?