mount işlevi bir dosya sistemini bağlamak ya da bağlı bir dosya sistemini yeniden bağlamak için kullanılır. İki işlem açıkça farklıdır ve doğal olmayan bir şekilde aynı işlevin içinde birbirine katıştırılmıştır. Aşağıda açıklanacağı gibi MS_REMOUNT seçeneği ile işlevin sıfırdan bağlama mı yoksa yeniden bağlama mı yapacağı saptanır.
İşlev dosya sistemini bağlamak amacıyla kullanıldığında, dosya sistemini içeren blok aygıtı özel_dosya isimli aygıt özel dosyası ile, bağlanacağı nokta ise dizin ile belirtilir. Bu durumda dizin dizinindeki herşey dosya sistemi sistemden ayrılana kadar erişilebilir olmayacak, onların yerine bağlanan dosya sisteminin kök dizininin içeriği erişilebilir olacaktır.
Bir olağandışılık olarak, eğer dosya sistemi türü bir aygıta ait değilse ("proc" gibi), mount dosya sistemini hemen görür ve özel_dosya'yı yoksayarak dizin dizinine onu bağlar.
İşlev dosya sistemini yeniden bağlamak amacıyla kullanıldığında, dizin dosya sisteminin bağlı olduğu yeri belirtir ve özel_dosya yoksayılır. Bir dosya sistemini yeniden bağlamanın amacı, evvelce bağlanırken kullanılan seçenekleri değiştirmektir. Bu işlem dosya sistemini önce ayırıp sonra tekrar bağlamak anlamında yapılmaz.
Sıfırdan bağlama amaçlı kullanımda dosya sisteminin türü dstürü argümanı ile belirtilir. Bu tür, çekirdeğin dosya sistemine erişirken kullanacağı dosya sistemi sürücüsünün ismi olarak belirtilir. Kabul edilen değerler sistemden sistem değişir. Linux çekirdekli ve proc dosya sistemli bir sistemde olası dosya sistemi türleri /proc/filesystems dosyasında listelenir (komut satırına cat /proc/filesystems yazarak bu listeyi görebilirsiniz). Linux çekirdeğinde mount ile bağlanabilen dosya sistemi türlerinin isimleri, çekirdeğin yapılandırılması sırasında yüklenebilir modül olarak belirtilen dosya sistemi sürücüsü olan modüllerin isimleridir. dstürü olarak belitilebilecek çok bilinen bir örnek ext2'dir.
Yeniden bağlama amaçlı kullanımda dstürü argümanı yoksayılır.
seçenekler ile dosya sistemi ayrılana ya da yeniden bağlanana kadar geçerli olacak çeşitli seçenekler belirtilir. Her seçenek dosya sistemine özgüdür, bazı seçenekleri birçok dosya sistemi kabul etse de bu hepsi için geçerli değildir. Bazı dosya sistemlerinde bu seçeneklerden bazıları (ama asla MS_RDONLY değil) ioctl ile dosya erişimi sırasında değiştirilebilir.
seçenekler bir bit dizgesidir. Bit alanları aşağıdaki maske ve maske değerli makrolar kullanılarak tanımlanmıştır:
- MS_MGC_MASK
Bu çokbitli alan sihirli bir sayı içerir. Eğer MS_MGC_VAL değerini içermiyorsa, mount aşağıdaki tüm bitlerin sıfır olduğunu ve veri argümanının ise içerdiği değerlere bakılmaksızın bir boş dizge olduğunu varsayar.
- MS_REMOUNT
Bu bit dosya sisteminin yeniden bağlanacağını belirtir. Yokluğu sıfırdan bağlama yapılacak anlamındadır.
- MS_RDONLY
Bu bit bağlanan dosya sisteminde yazma işlemlerine izin verilmediğini belirtir ve ioctl tarafından bitin durumu değiştirilemez. Bu seçenek hemen tüm dosya sistemlerinde vardır.
- S_IMMUTABLE
Bu bit bağlanan dosya sisteminde yazma işlemlerine izin verilmediğini belirtir. Fakat uygun olarak yetkilendirilmiş bir ioctl çağrısı bu bitin durumunu değiştirebilir. Bu seçenek görece diğerlerinden daha yeni olduğundan bir çok dosya sisteminde bulunmayabilir.
- S_APPEND
Bu bit bağlanan dosya sisteminde yazma işlemlerine sadece dosyaların sonuna ekleme yapılacaksa izin verildiğini belirtir. Bazı dosya sistemlerinde uygun olarak yetkilendirilmiş bir ioctl çağrısı bu bitin durumunu değiştirebilir. Bu seçenek görece diğerlerinden daha yeni olduğundan bir çok dosya sisteminde bulunmayabilir.
- MS_NOSUID
Bu bit bağlanan dosya sisteminde dosyaların Setuid and Setgid yetkilerinin yoksayılacağını belirtir.
- MS_NOEXEC
Bu bit bağlanan dosya sisteminde dosyaların çalıştırılamayacağını belirtir.
- MS_NODEV
Bu bit bağlanan dosya sisteminde aygıtlara özel dosyaların erişilebilir olmayacağını belirtir.
- MS_SYNCHRONOUS
Bu bit bağlanan dosya sisteminde dosyalara yapılan tüm yazma işlemlerinin eşzamanlanacağını belirtir. Yani veri her yazma işleminde sonradan dosyaya yazılmak üzere bir tamponda saklanmaz doğrudan dosyaya yazılır.
- MS_MANDLOCK
Bu bit bağlanan dosya sisteminde dosyalarda zorlayıcı kilitlere izin verildiğini belirtir.
- MS_NOATIME
Bu bit bağlanan dosya sisteminde dosyaların erişim zamanlarının dosyalara erişildiğinde güncellenmeyeceğini belirtir.
- MS_NODIRATIME
Bu bit bağlanan dosya sisteminde dizinlerin erişim zamanlarının dizinlere erişildiğinde güncellenmeyeceğini belirtir.
Yukarıdaki bit maskelerinin kapsamında olmayan bütün bitler sıfır olmalıdır; aksi takdirde sonuçları tanımsızdır.
veri'nin anlamlandırılması dosya sistemi türüne bağlıdır ve tamamen çekirdekteki dosya sistemi sürücüsü tarafından değerlendirilir.
Örnek:
#include <sys/mount.h>
mount("/dev/hdb", "/cdrom", MS_MGC_VAL | MS_RDONLY | MS_NOSUID, "");
mount("/dev/hda2", "/mnt", MS_MGC_VAL | MS_REMOUNT, "");
mount işlevinin ilgili argümanları teamülen
fstab tablosuna kaydedilir. Bkz.
Bağlama Bilgileri.
İşlev başarılı olduğunda sıfırla döner. Aksi takdirde -1 döner ve errno değişkenine hata durumu atanır. errno değerleri dosya sistemine bağımlıdır, fakat burada ortak bir listeye yer verilmiştir:
- EPERM
Süreç sistem yöneticisne ait değil
- ENODEV
dstürü dosya sistemi türünü çekirdek bilmiyor
- ENOTBLK
dev dosyası bir blok aygıtına özel dosya değil
- EBUSY
-
- Aygıt zaten bağlı
-
Bağlama noktası meşgul (Yani ya bu dizin bazı süreçlerin çalışma dizini ya da onun üzerinde de bir dosya sistemi hala bağlı)
-
Yeniden salt-okunur bağlama istendi ama yazma amacıyla açılmış dosyalar var
- EINVAL
-
-
Yeniden bağlama istendi ama belirtilen bağlama noktasında bağlı bir dosya sistemi yok
-
Belirtilen dosya sistemi geçersiz süperblok içeriyor.
- EACCES
-
-
Dosya sistemi kalıtsal olarak salt-okunur (aygıt üzerindeki donanımsal bir anahtar nedeniyle olabilir) ve süreç onu oku/yaz olarak bağlamaya çalıştı (MS_RDONLY biti sıfır olarak belirtilerek)
- özel_dosya ya da dizin dosya erişim izinleri nedeniyle erişilebilir değil
- özel_dosya erişilebilir değil, çünkü üzerinde bulunduğu dosya sistemi MS_NODEV seçeneği ile bağlı
- EM_FILE
İsimsiz (dummy) aygıtlar tablosu dolu. mount, bir aygıtla bağlanamayacak bir dosya sistemini bağlamaya çalışırsa bir dummy aygıt oluşturmak ister.