Eğer mount(2)
gerekli bağlama noktası olmaya yeni dizinin oluşturulmasını, bir salt okunur dosya sistemi altında bir şey bağlanamadı. Bu aptalca olur, bu yüzden bunu ekarte edebiliriz.
Mount isteğe bağlı olarak mountpoint olarak yeni bir dizin oluşturduysa, bu garip olurdu. Her zaman mount / unmount olaylarının gerçekleşmesi gibi bir şey değildir, bu yüzden çekirdeğe bu iki adımı tek bir sistem çağrısı ile yapmak için fazladan bir mantık koymak önemli bir hızlanma olmaz. mkdir(2)
İsterseniz bir sistem çağrısı yapmak için onu sadece kullanıcı alanına bırakın . Dmitry'in cevabı, mount(2)
her iki şeyi de yapmanın onu atomik olmayan yapacağı görüşüne işaret ediyor. Ve ekstra argüman isterdim mount(2)
mod bayrakları gibi olan open(2)
için, sürer O_CREAT
, O_EXCL
vb Sadece kullanıcı alanı icar kıyasla aptalca olurdu bunu.
Veya belki de mount(8)
( mount(2)
sistem çağrılarını yapan geleneksel program ) bunu yapmayı mı soruyordunuz ? Bu mümkün olurdu, ama zaten mkdir(1)
iş için mükemmel bir iyilik var ve Unix'in tasarımı tamamen bir araya getirilebilecek küçük araçlarla ilgili. Her ikisini de yapan bir araç istiyorsanız, bu aracı iki basit araçtan oluşturmak için bir kabuk betiği yazmak kolaydır. (Veya, muru yorumunda olduğu gibi, udisksctl
zaten bunu yapar, bu yüzden onu yazmak zorunda değilsiniz.) Ayrıca, Linux'un mount(8)
util- linux'dan normal olması, dosya sistemine aktarılacak seçeneklerden ziyade, kullanıcı alanı seçenekleri için sözdizimini mount -o x-mount.mkdir[=mode]
kullanmayı destekler x-
.
Şimdi daha ilginç olan soru: neden ana dosya sisteminde bir dizin olması gerekiyor?
Pjc50'nin cevabının işaret ettiği gibi (baş harfleriim olmasına rağmen hiçbir ilişki yok!), Dizin listelerinde bağlantı noktalarının gösterilmesi daha sonra her birinin ekstra kontrolünü gerektirir readdir()
.
Bağlantı noktalarına sahip olmak, dizinde onları içeren dizinde bulunur (ana FS'de). readdir()
bunun bir bağlantı noktası olduğunu farketmek zorunda değil. Bu sadece olur eğer bağlama noktası bir yol bileşeni olarak kullanılır. Elbette yol çözünürlüğü, bir yolun her dizin bileşeni için bağlama tablosunu kontrol etmek zorundadır.
udisksctl
. Neden kullanmakmount
?