From 0f6ee8a8f46d13019502c311ee782ef07b7f45d8 Mon Sep 17 00:00:00 2001 From: Simone Piccardi Date: Mon, 9 Jan 2012 19:31:32 +0000 Subject: [PATCH] Correzioni varie --- filedir.tex | 134 ++++++++++++++++++++----------------- img/dir_links.dia | Bin 2939 -> 3044 bytes img/filesys_struct.dia | Bin 4930 -> 5047 bytes listati/file_system_type.h | 2 - 4 files changed, 73 insertions(+), 63 deletions(-) diff --git a/filedir.tex b/filedir.tex index 514705b..1964e7d 100644 --- a/filedir.tex +++ b/filedir.tex @@ -61,8 +61,8 @@ astrazione che prevede quattro tipi di oggetti strettamente correlati: i filesystem, le \textit{dentry}, gli \textit{inode} ed i file. A questi oggetti corrispondono una serie di apposite strutture definite dal kernel che contengono come campi le funzioni di gestione e realizzano l'infrastruttura -del VFS. L'interfaccia è estremamente complessa, ne faremo pertanto una -trattazione estremamente semplificata che consenta di comprenderne i principi +del VFS. L'interfaccia è molto complessa, ne faremo pertanto una trattazione +estremamente semplificata che consenta di comprenderne i principi difunzionamento. Il VFS usa una tabella mantenuta dal kernel che contiene il nome di ciascun @@ -88,14 +88,14 @@ verrà inserita nella tabella, ed il nuovo filesystem comparirà in La struttura \kstruct{file\_system\_type}, oltre ad una serie di dati interni, come il nome del tipo di filesystem nel campo \var{name},\footnote{quello che viene riportato in \procfile{/proc/filesystems} e che viene usato come - parametro dell'opzione \texttt{-t} del comando \texttt{mount}.} contiene i -riferimenti alle funzioni di base che consentono l'utilizzo di quel -filesystem. In particolare la funzione \code{mount} del quarto campo è quella -che verrà invocata tutte le volte che si dovrà effettuare il montaggio di un -filesystem di quel tipo. Per ogni nuovo filesystem si dovrà allocare una di -queste strutture ed inizializzare i relativi campi con i dati specifici diquel -filesystem, ed in particolare si dovra creare anche la relativa versione della -funzione \code{mount}. + valore del parametro dell'opzione \texttt{-t} del comando \texttt{mount} che + indica il tipo di filesystem.} contiene i riferimenti alle funzioni di base +che consentono l'utilizzo di quel filesystem. In particolare la funzione +\code{mount} del quarto campo è quella che verrà invocata tutte le volte che +si dovrà effettuare il montaggio di un filesystem di quel tipo. Per ogni nuovo +filesystem si dovrà allocare una di queste strutture ed inizializzare i +relativi campi con i dati specifici di quel filesystem, ed in particolare si +dovrà creare anche la relativa versione della funzione \code{mount}. Come illustrato in fig.~\ref{fig:kstruct_file_system_type} questa funzione restituisce una \textit{dentry}, abbreviazione che sta per \textit{directory @@ -104,9 +104,10 @@ la \textit{pathname resolution}, ciascuna di esse corrisponde ad un \textit{pathname} e contiene il riferimento ad un \textit{inode}, che come vedremo a breve è l'oggetto usato dal kernel per identificare un un file.\footnote{in questo caso si parla di file come di un qualunque oggetto - generico che sta sul filesystem.} La \textit{dentry} ottenuta dalla chiamata -alla funzione \code{mount} sarà inserita in corrispondenza al -\textit{pathname} della directory in cui il filesystem è stato montato. + generico che sta sul filesystem e non dell'oggetto file del VFS cui + accennavamo prima.} La \textit{dentry} ottenuta dalla chiamata alla funzione +\code{mount} sarà inserita in corrispondenza al \textit{pathname} della +directory in cui il filesystem è stato montato. % NOTA: struct dentry è dichiarata in include/linux/dcache.h @@ -116,7 +117,7 @@ nella cosiddetta \textit{directory entry cache} (spesso chiamata in breve \textit{pathname} viene effettuata una ricerca nella \textit{dcache} per ottenere immediatamente la \textit{dentry} corrispondente,\footnote{il buon funzionamento della \textit{dcache} è in effetti di una delle parti più - critiche per le prestazioni del sistema.} che a sua ci darà, tramite + critiche per le prestazioni del sistema.} che a sua volta ci darà, tramite l'\textit{inode}, il riferimento al file. Dato che normalmente non è possibile mantenere nella \textit{dcache} le @@ -190,10 +191,10 @@ una struttura di tipo \kstruct{inode\_operation}, la cui definizione si può trovare nel file \texttt{include/kernel/fs.h} dei sorgenti del kernel. Questa struttura non è altro che una tabella di funzioni, ogni suo membro cioè -è un puntatore ad una funzione, e, come suggerisce il nome della struttura -stessa, queste funzioni, le principali delle quali sono riportate in -tab.~\ref{tab:file_inode_operations}) sono quelle che definiscono le -operazioni che il VFS può compiere su un \textit{inode}. +è un puntatore ad una funzione e, come suggerisce il nome della struttura +stessa, queste funzioni sono quelle che definiscono le operazioni che il VFS +può compiere su un \textit{inode}. Si sono riportate in +tab.~\ref{tab:file_inode_operations} le più rilevanti. \begin{table}[htb] \centering @@ -229,18 +230,19 @@ operazioni che il VFS può compiere su un \textit{inode}. Possiamo notare come molte di queste funzioni abbiano nomi sostanzialmente identici alle varie \textit{system call} con le quali si gestiscono file e -directory che tratteremo nel resto del capitolo. Quello che succede è che +directory, che tratteremo nel resto del capitolo. Quello che succede è che tutte le volte che deve essere eseguita una \textit{system call}, o una qualunque altra operazione su un \textit{inode} (come \texttt{lookup}) il VFS andrà ad utilizzare la funzione corrispondente attraverso il puntatore \var{i\_op}. Sarà allora sufficiente che nella realizzazione di un filesystem si crei una -opportuna istanza di \kstruct{inode\_operation} contenente i puntatori alla -implementazione di queste funzioni per quel filesystem e quel punto le -strutture \kstruct{inode} usate per gli oggetti di quel filesystem otterranno -il puntatore a detta istanza di \kstruct{inode\_operation} e verranno -automaticamente usate le funzioni corrette. +implementazione di queste funzioni per quel filesystem e si allochi una +opportuna istanza di \kstruct{inode\_operation} contenente i puntatori a dette +funzioni. A quel punto le strutture \kstruct{inode} usate per gli oggetti di +quel filesystem otterranno il puntatore alla relativa istanza di +\kstruct{inode\_operation} e verranno automaticamente usate le funzioni +corrette. Si noti però come in tab.~\ref{tab:file_inode_operations} non sia presente la funzione \texttt{open} che invece è citata in @@ -248,8 +250,9 @@ tab.~\ref{tab:file_file_operations}.\footnote{essa può essere comunque invocata dato che nella struttura \kstruct{inode} è presente anche il puntatore \func{i\_fop} alla struttura \kstruct{file\_operation} che fornisce detta funzione.} Questo avviene perché su Linux l'apertura di un -file richiede comunque un'altra operazione: l'allocazione di una struttura di -tipo \kstruct{file} che viene associata ad ogni file aperto nel sistema. +file richiede comunque un'altra operazione che mette in gioco l'omonimo +oggetto del VFS: l'allocazione di una struttura di tipo \kstruct{file} che +viene associata ad ogni file aperto nel sistema. I motivi per cui viene usata una struttura a parte sono diversi, anzitutto, come illustrato in sez.~\ref{sec:file_fd}, questa è necessaria per le @@ -327,7 +330,7 @@ stesso modo sulla porta seriale come su un normale file di dati, e lavorare sui file allo stesso modo indipendentemente dal filesystem. Il VFS realizza la quasi totalità delle operazioni relative ai file grazie -alle funzioni presenti nelle due strutture \kstruct{inode\_operation} +alle funzioni presenti nelle due strutture \kstruct{inode\_operation} e \kstruct{file\_operation}. Ovviamente non è detto che tutte le operazioni possibili siano poi disponibili in tutti i casi, ad esempio una \code{seek} non è realizzabile per un dispositivo come la porta seriale o per una fifo, @@ -352,34 +355,39 @@ proprie. Per questo non entreremo nei dettagli di un filesystem specifico, ma daremo una descrizione a grandi linee che si adatta alle caratteristiche comuni di qualunque filesystem di un sistema unix-like. -Lo spazio fisico di un disco viene usualmente diviso in partizioni; ogni -partizione può contenere un filesystem. Una possibile strutturazione -dell'informazione su un disco è riportata in fig.~\ref{fig:file_disk_filesys}, -in essa per semplicità si è fatto riferimento alla struttura del filesystem -\acr{ext2}, che prevede una separazione dei dati in \textit{block group} che -replicano il cosiddetto \textit{superblock} (sulle caratteristiche di -\acr{ext2} e derivati torneremo in sez.~\ref{sec:file_ext2}). È comunque -caratteristica comune di tutti i filesystem per Unix, indipendentemente da -come poi viene strutturata nei dettagli questa informazione, prevedere una -divisione fra la lista degli \itindex{inode} \textit{inode} e lo spazio a -disposizione per i dati e le directory.\footnote{questo non è del tutto vero - per filesystem evoluti come \textsl{btrfs}, ma per il momento limitiamoci - alla implementazione classica.} +Una possibile strutturazione dell'informazione su un disco è riportata in +fig.~\ref{fig:file_disk_filesys}, dove si hanno tre filesystem su tre +partizioni. In essa per semplicità si è fatto riferimento alla struttura del +filesystem \acr{ext2}, che prevede una suddivisione dei dati in \textit{block + group}. All'interno di ciascun \textit{block group} viene anzitutto +replicato il cosiddetto \textit{superblock}, (la struttura che contiene +l'indice iniziale del filesystem e che consente di accedere a tutti i dati +sottostanti) e creata una opportuna suddivisione dei dati e delle informazioni +per accedere agli stessi. Sulle caratteristiche di \acr{ext2} e derivati +torneremo in sez.~\ref{sec:file_ext2}. + +È comunque caratteristica comune di tutti i filesystem per Unix, +indipendentemente da come poi viene strutturata nei dettagli questa +informazione, prevedere la presenza di due tipi di risorse: gli +\itindex{inode} \textit{inode}, cui abbiamo già accennato in +sez.~\ref{sec:file_vfs_work}, che sono le strutture che identificano i singoli +oggetti sul filesystem, e i blocchi, che invece attengono allo spazio disco +che viene messo a disposizione per i dati in essi contenuti. \begin{figure}[!htb] \centering - \includegraphics[width=14cm]{img/disk_struct} + \includegraphics[width=12cm]{img/disk_struct} \caption{Organizzazione dello spazio su un disco in partizioni e filesystem.} \label{fig:file_disk_filesys} \end{figure} Se si va ad esaminare con maggiore dettaglio la strutturazione -dell'informazione all'interno del singolo filesystem, tralasciando i dettagli -relativi al funzionamento del filesystem stesso come la strutturazione in -gruppi dei blocchi, il superblock e tutti i dati di gestione possiamo -esemplificare la situazione con uno schema come quello esposto in -fig.~\ref{fig:file_filesys_detail}. +dell'informazione all'interno del filesystem \textsl{ext2}, tralasciando i +dettagli relativi al funzionamento del filesystem stesso come la +strutturazione in gruppi dei blocchi, il \textit{superblock} e tutti i dati di +gestione possiamo esemplificare la situazione con uno schema come quello +esposto in fig.~\ref{fig:file_filesys_detail}. \begin{figure}[!htb] \centering @@ -389,24 +397,26 @@ fig.~\ref{fig:file_filesys_detail}. \end{figure} Da fig.~\ref{fig:file_filesys_detail} si evidenziano alcune delle -caratteristiche di base di un filesystem, sulle quali è bene porre attenzione -visto che sono fondamentali per capire il funzionamento delle funzioni che -manipolano i file e le directory che tratteremo nel prossimo capitolo; in -particolare è opportuno ricordare sempre che: +caratteristiche di base di un filesystem, che restano le stesse anche su +filesystem la cui organizzazione dei dati è totalmente diversa da quella +illustrata, e sulle quali è bene porre attenzione visto che sono fondamentali +per capire il funzionamento delle funzioni che manipolano i file e le +directory che tratteremo nel prosieguo del capitolo. In particolare è +opportuno tenere sempre presente che: \begin{enumerate} -\item L'\textit{inode} \itindex{inode} contiene tutte le informazioni (i - cosiddetti \textsl{metadati}) riguardanti il file: il tipo di file, i +\item L'\textit{inode} \itindex{inode} contiene tutte le informazioni, i + cosiddetti \textsl{metadati}, riguardanti il file: il tipo di file, i permessi di accesso, le dimensioni, i puntatori ai blocchi fisici che contengono i dati e così via. Le informazioni che la funzione \func{stat} (vedi sez.~\ref{sec:file_stat}) fornisce provengono dall'\textit{inode}. Dentro una directory si troverà solo il nome del file e il numero \itindex{inode} dell'\textit{inode} ad esso associato, cioè quella che da - qui in poi chiameremo una \textsl{voce} (come traduzione dell'inglese - \textit{directory entry}, che non useremo anche per evitare confusione con - le \textit{dentry} del kernel di cui si parlava in - sez.~\ref{sec:file_vfs_work}). + qui in poi chiameremo una \textsl{voce}, che abbiamo scelto come traduzione + dell'inglese \textit{directory entry}, che non useremo anche per evitare + confusione con le \textit{dentry} del kernel di cui si parlava in + sez.~\ref{sec:file_vfs_work}. \item Come mostrato in fig.~\ref{fig:file_filesys_detail} si possono avere più voci che puntano allo stesso \textit{inode}. Ogni \textit{inode} ha un @@ -418,11 +428,13 @@ particolare è opportuno ricordare sempre che: file, ma si limita ad eliminare la relativa voce da una directory e decrementare il numero di riferimenti \itindex{inode} nell'\textit{inode}. -\item Il numero di \textit{inode} nella voce si riferisce ad un \textit{inode} - nello stesso filesystem e non ci può essere una directory che contiene - riferimenti ad \itindex{inode} \textit{inode} relativi ad altri filesystem. - Questo limita l'uso del comando \cmd{ln} (che crea una nuova voce per un - file esistente con la funzione \func{link}) al filesystem corrente. +\item All'interno di ogni filesystem ogni \textit{inode} è identificato da un + numero univoco. Il numero di \textit{inode} nella voce si riferisce ad un + \textit{inode} a questo numero e non ci può essere una directory che + contiene riferimenti ad \itindex{inode} \textit{inode} relativi ad altri + filesystem. Questo limita l'uso del comando \cmd{ln} (che crea una nuova + voce per un file esistente con la funzione \func{link}) al filesystem + corrente. \item Quando si cambia nome ad un file senza cambiare filesystem, il contenuto del file non viene spostato fisicamente, viene semplicemente creata una diff --git a/img/dir_links.dia b/img/dir_links.dia index 82ac44f90415efc35b77a068814b69248e74b688..7b0faf1c962344975a4c4c1faa3b56f61964de62 100644 GIT binary patch literal 3044 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 literal 2939 zcmV->3xxC^iwFP!000001MOW~Z{xTXe$THkJg-@qcTzi>S#$~%eJIcZ-987ht#Q2G9f^X_i^P?oEoCzGeAryzY^M`d0F zY4RAXO zO}km1=EdlHl-`X$eXIVACrvk#y?##gy^0p`w1}hMySqmEPZ(a(^(rn7yIrpGb)uV; z&#P9Gj(*I~oiSV+Y!4q+CYDBFWlz^tDOr3qb-!2-#eR zx0{&4n@HhJ6!0dJ_5CU@$|6e2wwY<3r*V|kmdfHWzTD1w7Ny!{PMr$Ay!UTOS>|Vs z|67!|%Y}j-x4rKF8La>B$vT;)@v$>V zvapeZ9?yZyZ=PKqge>>$b9+P>zKI3ZpZ8~~-XqrvVUG>9u zue~t!M+X92nMkAOxM;fnx|QBhbAub!*|`e&^uO_}Y);8X20U}%* zp^|?V0n`5{=I3Q5<1}90&+;N`3%#9lsti=z(LS#YZ-`!twpb$XqAV4`l zfP6uKG(rH60Ob*I1qfg^5FjtTpKm~b4Db#D1Uv#{FDLZ~7zzTo9Rvsm2;eUWP-a{V zj{xBj@Sza!Tl}Lu0s+w%0xH0Yn zwv3P8#W;Ih9!c1rO4%RFI)l=Ov_u~=K+fnxVQtCK2N5AQu^ztIvP=3{MzbRK^Z`pB zEkE@10ZAXq8htQu`rw30W$2=bKD6CXnm~CN(Z{ODXYqRN2?Uxzm?sc-1QJ>xkkFu7 zNx@{9B`k!tgsKo+zZZ;41BYRR;DMJ-0NLzxKrfu2 z%t7oihk$1e#sxD>v0)C0xH1)W17QwN9kA5lCktsql? zr~<|qX8P^LlmPO zOH*VDe0;9VxE#@2)r`+oKqZsJz+o6scCuXfFdJ@aO!)!2OW_nYgp)fcZsj}0t-?id zEBD2%*YTLAwDOFP0|10O0B{gHdiTEy_wQX@#evZdh5aR{GpaY`Jx|7a5hQXv5iyh9>L#T;B)(!n=T5-YYS-LL z+-f`wL_HD0UOhq8lY8}ark)hrQBUDOJ-5@I%Eh#&^wXYKp`OH^dWMb?xAJA$vrgQq zp-g**%+Gqlil?9TbSR!yYKD{p=?r(I)4}s?K52Um!fCBuNI57suZNxHftB51r$)mt zgp*Lly>bF7r}FjYE|rrHYWH_kt&A}A-QUqQ)|w}ozUKFbz-)nX8k)Z!Nu7JwBO$X^ ztrP|W5+P7|MghhlQP}uDBU+zPAQWX`XfP+#5Cl5O@_Br7gWQVrI?C23RtAEsYhxwnpDGEaEzRJvqD#vXiG$hN++wz68&EC>b%Uwmy3i~v zEG`0EXF>vOKzxguaxNSii{jEcglYW8`IK1etd2ENx9D^(oatWBxzY96CgOY(Sv5I% zEIpPas*7^&jc2X9;fq?<-~78lr3?vt%8-Jm3@PLc;Q=k;*U+Nq7~x>Iv?whs=K#KD zij*oexW{$<9YIu7#E6gtq{h~n9pgPijp96Goh%?QNsTj2Fgn`;SI2TX7NedUJvX}L l#;^}J%D&uKzfYs*xcG8YztR5|MYQ~K^FP}|7pvCa000L+z(D{2 diff --git a/img/filesys_struct.dia b/img/filesys_struct.dia index f9562562f36fac45e83aa6a4cc7cffa570ee8c25..c08ed10d3f49d733d2b3915a880e2f3dda20eaec 100644 GIT binary patch literal 5047 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 AwEzGB diff --git a/listati/file_system_type.h b/listati/file_system_type.h index 4f4ceb9..dabe309 100644 --- a/listati/file_system_type.h +++ b/listati/file_system_type.h @@ -9,7 +9,5 @@ struct file_system_type { struct module *owner; struct file_system_type * next; struct list_head fs_supers; - - struct lock_class_key s_lock_key; ... }; -- 2.30.2