umount(2) System Calls Manual umount(2) NAZWA umount, umount2 - odmontowuje system plikow BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include int umount(const char *target); int umount2(const char *target, int flags); OPIS umount() i umount2() usuwaja dolaczenie (najwyzej ulozonego) systemu plikow zamontowanego w celu target. Do odmontowywania systemow plikow wymagane sa odpowiednie przywileje (Linux: przywilej CAP_SYS_ADMIN (ang. capability)). Linux 2.1.116 dodal wywolanie systemowe umount2(), ktore, podobnie jak umount(), odmontowuje cel, lecz dozwala podanie dodatkowych flags, ktore kontroluja zachowanie operacji: MNT_FORCE (od Linuksa 2.1.116) Prosi system plikow o przerwanie trwajacych zadan, przed proba odmontowania. Mozna w ten sposob ukonczyc odmontowanie bez czekania na niedostepny serwer, lecz moze to prowadzic do utraty danych. Jesli po przerwaniu zadan, jakies procesy maja wciaz aktywne odniesienia do systemu plikow, odmontowanie wciaz zawiedzie. Wedlug stanu na Linuksa 4.12, MNT_FORCE jest obslugiwane jedynie w nastepujacych systemach plikow: 9p (od Linuksa 2.6.16), ceph (od Linuksa 2.6.34), cifs (od Linuksa 2.6.12), fuse (od Linuksa 2.6.16), lustre (od Linuksa 3.11) oraz NFS (od Linuksa 2.1.116). MNT_DETACH (od Linuksa 2.4.11) Dokonuje leniwego odmontowania: czyni montowanie niedostepnym dla nowych dostepow, niezwlocznie odlacza od siebie wzajemnie system plikow i wszystkie systemy plikow ponizej niego oraz odlacza go z tabeli montowan, natomiast rzeczywiste odmontowanie przeprowadza, gdy montowanie przestanie byc zajete. MNT_EXPIRE (od Linuksa 2.6.8) Oznacza montowanie jako wygasle. Jesli montowanie nie jest aktualnie uzywane, pierwotne wywolanie do umount2() z tym znacznikiem zawiedzie z bledem EAGAIN, lecz oznaczy montowanie jako wygasle. Montowanie pozostaje wygaslym tak dlugo, jak nie jest osiagane przez zaden proces. Drugie wywolanie umount2() podajace MNT_EXPIRE odmontowuje wygasle montowanie. Znacznika tego nie mozna laczyc z MNT_FORCE ani MNT_DETACH. UMOUNT_NOFOLLOW (od Linuksa 2.6.34) Nie rozwiazuje target, jesli jest dowiazaniem symbolicznym. Znacznik ten pozwala uniknac problemow z bezpieczenstwem w programach set-user-ID-root, ktore pozwalaja na odmontowanie systemow plikow uzytkownikom nieuprzywilejowanym. WARTOSC ZWRACANA Po pomyslnym zakonczeniu zwracane jest zero. Po bledzie zwracane jest -1 i ustawiane errno, wskazujac blad. BLEDY Podane ponizej wartosci bledow, stanowia bledy niezalezne od typu systemu plikow. Kazdy typ systemu plikow moze miec swoje specjalne bledy i swoje specjalne zachowania. Wiecej szczegolow w kodzie zrodlowym jadra Linux. EAGAIN Wywolanie umount2() podajace MNT_EXPIRE pomyslnie oznaczylo niezajety system plikow jako wygasly. EBUSY target nie mogl byc odmontowany, poniewaz jest zajety. EFAULT target wskazuje poza przestrzen adresowa uzytkownika. EINVAL target nie jest punktem montowania. EINVAL target jest zablokowany; zob. mount_namespaces(7). EINVAL umount2() wywolano z MNT_EXPIRE oraz z MNT_DETACH lub MNT_FORCE. EINVAL (od Linuksa 2.6.34) umount2() wywolano z nieprawidlowa wartoscia znacznika we flags. ENAMETOOLONG Sciezka byla dluzsza od MAXPATHLEN. ENOENT Sciezka byla pusta lub miala nieistniejaca skladowa. ENOMEM Jadro nie moglo zaalokowac wolnej strony, w celu skopiowania do niej nazw plikow lub danych. EPERM Wywolujacy nie ma wymaganych przywilejow. STANDARDY Linux. HISTORIA MNT_DETACH i MNT_EXPIRE sa dostepne od glibc 2.11. Pierwotna funkcja umount() byla wywolywana jako umount(device) i zwrocilaby ENOTBLK, gdyby wywolano ja z czyms innym niz urzadzenie blokowe. W Linuksie 0.98p4, dodano wywolanie umount(dir), aby obsluzyc urzadzenia anonimowe. W Linuksie 2.3.99-pre7, usunieto wywolanie umount(device), pozostawiajac jedynie umount(dir) (poniewaz urzadzenia moga byc obecnie montowane w wiecej niz jednym miejscu, zatem podanie urzadzenia nie jest wystarczajace). UWAGI umount() i montowania dzielone Montowania dzielone powoduja, ze wszelka aktywnosc na montowaniu, w tym operacje umount(), sa przekierowywane do kazdego montowania dzielonego w grupie montowan rownoleglych i do kazdego montowania podleglego (slave mount) w tej grupie. Oznacza to, ze umount() kazdego montowania rownoleglego w zbiorze montowan dzielonych spowoduje odmontowanie wszystkich montowan rownoleglych oraz jednoczesnie odmontowanie wszelkich ich montowan podleglych. Ta propagacja odmontowania moze byc szczegolnie zaskakujaca w systemach, w ktorych kazde montowanie jest domyslnie dzielone. W takich systemach, rekurencyjne montowanie z podpieciem, katalogu glownego systemu plikow do podkatalogu, a nastepnie odmontowanie tego podkatalogu ze znacznikiem MNT_DETACH, spowoduje leniwe odmontowania kazdego montowania w przestrzeni nazw montowan. Aby zapewnic, ze umount() nie bedzie propagowane w ten sposob, przed wywolaniem umount(), montowanie mozna przemontowac za pomoca wywolania mount(2) z argumentem mount_flags, ktory zawiera MS_REC oraz MS_PRIVATE. ZOBACZ TAKZE mount(2), mount_namespaces(7), path_resolution(7), mount(8), umount(8) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.8 2 maja 2024 r. umount(2)