\documentclass{beamer}

\usepackage{beamerthemeshadow}

\title{XFS --- The Black Leather Jacket of filesystems}
\author{Josef ``Jeff'' Sipek\\ $<$jeffpc@josefsipek.net$>$}
\date{July 8, 2008}

\begin{document}
\frame{\titlepage}

\AtBeginSection[]
{
\begin{frame}
	\frametitle{Outline}
	\tableofcontents[currentsection]
\end{frame}
}

\section{History}
\begin{frame}
	\frametitle{History: Stoneage (1992)}
	\begin{itemize}
		\item Berkeley's FFS was state of the art
		\item IRIX had EFS (FFS with extents)
		\item Many limitations
		\begin{itemize}
			\item Small file sizes (2 GB)
			\item Small filesystem sizes (8GB)
			\item Statically allocated metadata
			\item Long recovery times
			\item Slow operations on large directories
			\item No extended attributes
			\item No access control lists
		\end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{History: Enlightment (1993)}
	\begin{center}
	\includegraphics[width=0.8\textwidth]{sgi.eps}
	\end{center}
\end{frame}

%
% Features
%
\section{Features}
\begin{frame}
	\frametitle{Features: Allocation}
	\begin{itemize}
		\item Delayed allocation
		\begin{itemize}
			\item Allocate on flush
			\item Write reserves disk space, decide where later
		\end{itemize}
		\item Pre-allocation
		\begin{itemize}
			\item Reserve space before it is written
			\item Minimizes fragmentation
		\end{itemize}
		\item Direct I/O support
		\item Stripe aware allocator
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Features: Inodes}
	\begin{itemize}
		\item Dynamically allocated in clusters
		\item Inode size is mkfs option
		\begin{itemize}
			\item 256 Byte (default) -- 4 kByte (max)
		\end{itemize}
		\item Extended Attributes
		\begin{itemize}
			\item name=value pairs
			\item Used by ACLs, Capabilities, SELinux, DMAPI
		\end{itemize}
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Features: Other}
	\begin{itemize}
		\item B+ Trees
		\item 64-bit
		\item Variable block size (512 Bytes -- 64 kB)
		\item Allocation Groups
		\item Lots of utilities
		\item Direct I/O
		\item DMAPI
		\item EA/ACL
		\item online fs growth
		\item amazingly fast
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Why use it?}
	\begin{itemize}
		\item Stable, mature codebase
		\begin{itemize}
			\item oldest journaling filesystem on Linux
		\end{itemize}
		\item Very well performing
		\item DMAPI support
		\item Good support for EAs / ACLs
	\end{itemize}
\end{frame}

\begin{frame}
	\frametitle{Why \emph{not} use it?}
	\begin{itemize}
		\item No data journaling
		\item Got time to waste
	\end{itemize}
\end{frame}

%
% Demos
%
\section{Demos}
\begin{frame}
	\frametitle{\texttt{\textbf{xfsdump}}}
	xfsdump ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfsrestore}}}
	xfsrestore ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{mkfs/mount}}}
	mkfs/mount
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_growfs}}}
	xfs\_growfs ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_freeze}}}
	freeze / unfreeze
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_check}} \& \texttt{\textbf{xfs\_repair}}}
	check / repair
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_io}}}
	xfs\_io ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_quota}}}
	xfs\_quota ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_admin}}}
	xfs\_admin ...
\end{frame}

\begin{frame}
	\frametitle{\texttt{\textbf{xfs\_bmap}}}
	xfs\_bmap ...
\end{frame}
%
% Wrap-up
%
\section{}
\begin{frame}
	\frametitle{Questions?}
	\begin{center}
	\includegraphics[width=\textwidth]{xfs.eps}
	\end{center}
\end{frame}

\begin{frame}
	\frametitle{More info}
	\begin{itemize}
		\item \url{http://oss.sgi.com/projects/xfs/}
		\item \url{xfs@oss.sgi.com}
		\item \url{http://oss.sgi.com/projects/xfs/papers/ukuug2003.pdf}
	\end{itemize}
\end{frame}

\end{document}
