diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2018-09-12 19:02:41 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2018-09-12 19:02:41 -0400 |
commit | 2babf772f07281bf5a3beb778ad924fdc061a125 (patch) | |
tree | bc89ca453e8380234fb462eed2d16b9ca0ea98ee |
Initial commitfeature-abstract
-rw-r--r-- | usenix2019.sty | 97 | ||||
-rw-r--r-- | usenix2019.tex | 324 |
2 files changed, 421 insertions, 0 deletions
diff --git a/usenix2019.sty b/usenix2019.sty new file mode 100644 index 0000000..dbab970 --- /dev/null +++ b/usenix2019.sty @@ -0,0 +1,97 @@ +% usenix.sty - to be used with latex2e for USENIX.
+% To use this style file, look at the template usenix_template.tex
+%
+% $Id: usenix.sty,v 1.2 2005/02/16 22:30:47 maniatis Exp $
+%
+% The following definitions are modifications of standard article.sty
+% definitions, arranged to do a better job of matching the USENIX
+% guidelines.
+% It will automatically select two-column mode and the Times-Roman
+% font.
+
+%
+% USENIX papers are two-column.
+% Times-Roman font is nice if you can get it (requires NFSS,
+% which is in latex2e.
+
+\if@twocolumn\else\input twocolumn.sty\fi
+\usepackage{mathptmx} % times roman, including math (where possible)
+
+%
+% USENIX wants margins of: 0.75" sides, 1" bottom, and 1" top.
+% 0.33" gutter between columns.
+% Gives active areas of 7" x 9"
+%
+\setlength{\textheight}{9.0in}
+\setlength{\columnsep}{0.33in}
+\setlength{\textwidth}{7.00in}
+
+\setlength{\topmargin}{0.0in}
+
+\setlength{\headheight}{0.0in}
+
+\setlength{\headsep}{0.0in}
+
+\addtolength{\oddsidemargin}{-0.25in}
+\addtolength{\evensidemargin}{-0.25in}
+
+% Usenix wants no page numbers for camera-ready papers, so that they can
+% number them themselves. But submitted papers should have page numbers
+% for the reviewers' convenience.
+%
+%
+% \pagestyle{empty}
+
+%
+% Usenix titles are in 14-point bold type, with no date, and with no
+% change in the empty page headers. The whole author section is 12 point
+% italic--- you must use {\rm } around the actual author names to get
+% them in roman.
+%
+\def\maketitle{\par
+ \begingroup
+ \renewcommand\thefootnote{\fnsymbol{footnote}}%
+ \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+ \if@twocolumn
+ \twocolumn[\@maketitle]%
+ \else \newpage
+ \global\@topnum\z@
+ \@maketitle \fi\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \let\maketitle\relax
+ \let\@maketitle\relax
+ \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
+
+\def\@maketitle{\newpage
+ \vbox to 2.5in{
+ \vspace*{\fill}
+ \vskip 2em
+ \begin{center}%
+ {\Large\bf \@title \par}%
+ \vskip 0.375in minus 0.300in
+ {\large\it
+ \lineskip .5em
+ \begin{tabular}[t]{c}\@author
+ \end{tabular}\par}%
+ \end{center}%
+ \par
+ \vspace*{\fill}
+% \vskip 1.5em
+ }
+}
+
+%
+% The abstract is preceded by a 12-pt bold centered heading
+\def\abstract{\begin{center}%
+{\large\bf \abstractname\vspace{-.5em}\vspace{\z@}}%
+\end{center}}
+\def\endabstract{}
+
+%
+% Main section titles are 12-pt bold. Others can be same or smaller.
+%
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus
+ -.2ex}{2.3ex plus.2ex}{\reset@font\large\bf}}
diff --git a/usenix2019.tex b/usenix2019.tex new file mode 100644 index 0000000..34557a4 --- /dev/null +++ b/usenix2019.tex @@ -0,0 +1,324 @@ +% TEMPLATE for Usenix papers, specifically to meet requirements of +% USENIX '05 +% originally a template for producing IEEE-format articles using LaTeX. +% written by Matthew Ward, CS Department, Worcester Polytechnic Institute. +% adapted by David Beazley for his excellent SWIG paper in Proceedings, +% Tcl 96 +% turned into a smartass generic template by De Clarke, with thanks to +% both the above pioneers +% use at your own risk. Complaints to /dev/null. +% make it two column with no page numbering, default is 10 point + +% Munged by Fred Douglis <douglis@research.att.com> 10/97 to separate +% the .sty file from the LaTeX source template, so that people can +% more easily include the .sty file into an existing document. Also +% changed to more closely follow the style guidelines as represented +% by the Word sample file. + +% Note that since 2010, USENIX does not require endnotes. If you want +% foot of page notes, don't include the endnotes package in the +% usepackage command, below. + +% This version uses the latex2e styles, not the very ancient 2.09 stuff. +\documentclass[letterpaper,twocolumn,10pt]{article} +% \usepackage{usenix2019,epsfig,endnotes} +\usepackage{usenix2019,epsfig} + +\begin{document} + +%don't want date printed +\date{} + +%make title bold and 14 pt font (Latex default is non-bold, 16 pt) +\title{\Large \bf bcachefs : A next generation filesystem } + +%for single author (just remove % characters) +\author{ +{\rm Kent Overstreet}\\ +\and +{\rm Second Name}\\ +Second Institution +% copy the following lines to add more authors +% \and +% {\rm Name}\\ +%Name Institution +} % end author + +\maketitle + +% Use the following at camera-ready time to suppress page numbers. +% Comment it out when you first submit the paper for review. +\thispagestyle{empty} + + +\subsection*{Abstract} + +bcachefs is a new b-tree based, CoW local POSIX filesystem for Linux. Here we +describe the background, status, and an overview of the key design elements. + +\section{Introduction} + +\subsection{What is bcachefs?} + +bcachefs is a full featured POSIX filesystem, with a featureset aimed at +competing with ZFS, btrfs and xfs. Existing features include: + +\begin{itemize} + \item Copy on Write + \item Full data checksumming + \item Compression + \item Encryption (AEAD style encryption using ChaCha20 and Poly1305) + \item Multi-device + \item Replication + \item Online grow/shrink and add/remove of devices, and a completely + flexible data layout + \item Tiering/caching (both writethrough and writeback; IO stack is in + fact policy driven now) +\end{itemize} +Upcoming features: +\begin{itemize} + \item Erasure coding (Reed-Solomon, with ability to add others) + \item Snapshotting +\end{itemize} + +\subsection{Status} + +bcachefs is in outside use by a small community of early adopters and testers, +and likely soon in a production capacity as well. Upstreaming is hopefully +imminent as there are no blockers left on the bcachefs side. + +\section{What makes bcachefs interesting?} + +\begin{itemize} + \item The design is a major departure from existing filesystems. In + particular it is constructed more as a layer on top of a generic + key-value store, with much more consistent handling of metadata + and on disk data structures. + \item This simplification is possible because we have a very + sophisticated and scalable b-tree implementation, which has been + under development for nearly 10 years now, inherited from + bcache. +\end{itemize} + +\section{bcachefs design novelties} + +\begin{itemize} + \item Auxiliary search tree for searching within a btree node + +\end{itemize} + + + +\section{bcachefs design fetaures} + +\subsection{Filesystem as RDBMS} + +In bcachefs, all metadata is organized into a small number of "btree" - +effectively tables: + +\begin{itemize} + \item Inodes table + \item Extents table + \item Dirents table + \item Xattrs table + \item etc. +\end{itemize} + +This is a major departure from most existing filesystems, where most data +structures hang off of the inodes. This isn't an unreasonable way to do things - +it's an effective way to shard most data structures and historically, those data +structures weren't particularly scalable so you really wanted that sharding +(i.e. block based filesystems that used the double/triple indirect block +scheme). + +But bcachefs's history meant that we started out with a btree implementation +scalable enough that we no longer needed that sharding - bcache uses a single +btree for indexing every cached extent, regardless of the number of volumes +being cached (and a cached volume in bcache is equivalent to a file in +bcachefs). + +This means we have a single unified, iterator based API for manipulating +essentially all filesystem data (everything not stored in the superblock), and +that metadata is all in a single flat namespace. + +This is a huge win for the complexity of the filesystem code itself. Rename, for +example, is just a couple of operations on keys in the dirents btree, done +atomically in a single update operation - drastically simpler than most other +filesystems. + +Even better, we don't need complex logging to make high level filesystem +operations like create, link and rename atomic. Instead, they make heavy use of +the btree's ability to use multiple iterators simultaneously, and then the final +update is done by passing a list of (iterator, new key) pairs to the btree +update path - for atomicity, all that is required is that the btree update path +use the same journal reservation for all the updates to be done. + +This make journalling and in particular journal replay drastically simpler than +on other contemporary filesystems. + + + + + + +A paragraph of text goes here. Lots of text. Plenty of interesting +text. \\ + +% More fascinating text. Features\endnote{Remember to use endnotes, not footnotes!} galore, plethora of promises.\\ + +\section{This is Another Section} + +Some embedded literal typset code might +look like the following : + +{\tt \small +\begin{verbatim} +int wrap_fact(ClientData clientData, + Tcl_Interp *interp, + int argc, char *argv[]) { + int result; + int arg0; + if (argc != 2) { + interp->result = "wrong # args"; + return TCL_ERROR; + } + arg0 = atoi(argv[1]); + result = fact(arg0); + sprintf(interp->result,"%d",result); + return TCL_OK; +} +\end{verbatim} +} + +Now we're going to cite somebody. Watch for the cite tag. +Here it comes~\cite{Chaum1981,Diffie1976}. The tilde character (\~{}) +in the source means a non-breaking space. This way, your reference will +always be attached to the word that preceded it, instead of going to the +next line. + +\section{This Section has SubSections} +\subsection{First SubSection} + +Here's a typical figure reference. The figure is centered at the +top of the column. It's scaled. It's explicitly placed. You'll +have to tweak the numbers to get what you want.\\ + +% you can also use the wonderful epsfig package... +\begin{figure}[t] +\begin{center} +\begin{picture}(300,150)(0,200) +\put(-15,-30){\special{psfile = fig1.ps hscale = 50 vscale = 50}} +\end{picture}\\ +\end{center} +\caption{Wonderful Flowchart} +\end{figure} + +This text came after the figure, so we'll casually refer to Figure 1 +as we go on our merry way. + +\subsection{New Subsection} + +It can get tricky typesetting Tcl and C code in LaTeX because they share +a lot of mystical feelings about certain magic characters. You +will have to do a lot of escaping to typeset curly braces and percent +signs, for example, like this: +``The {\tt \%module} directive +sets the name of the initialization function. This is optional, but is +recommended if building a Tcl 7.5 module. +Everything inside the {\tt \%\{, \%\}} +block is copied directly into the output. allowing the inclusion of +header files and additional C code." \\ + +Sometimes you want to really call attention to a piece of text. You +can center it in the column like this: +\begin{center} +{\tt \_1008e614\_Vector\_p} +\end{center} +and people will really notice it.\\ + +\noindent +The noindent at the start of this paragraph makes it clear that it's +a continuation of the preceding text, not a new para in its own right. + + +Now this is an ingenious way to get a forced space. +{\tt Real~$*$} and {\tt double~$*$} are equivalent. + +Now here is another way to call attention to a line of code, but instead +of centering it, we noindent and bold it.\\ + +\noindent +{\bf \tt size\_t : fread ptr size nobj stream } \\ + +And here we have made an indented para like a definition tag (dt) +in HTML. You don't need a surrounding list macro pair. +\begin{itemize} +\item[] {\tt fread} reads from {\tt stream} into the array {\tt ptr} at +most {\tt nobj} objects of size {\tt size}. {\tt fread} returns +the number of objects read. +\end{itemize} +This concludes the definitions tag. + +\subsection{How to Build Your Paper} + +You have to run {\tt latex} once to prepare your references for +munging. Then run {\tt bibtex} to build your bibliography metadata. +Then run {\tt latex} twice to ensure all references have been resolved. +If your source file is called {\tt usenixTemplate.tex} and your {\tt + bibtex} file is called {\tt usenixTemplate.bib}, here's what you do: +{\tt \small +\begin{verbatim} +latex usenixTemplate +bibtex usenixTemplate +latex usenixTemplate +latex usenixTemplate +\end{verbatim} +} + + +\subsection{Last SubSection} + +Well, it's getting boring isn't it. This is the last subsection +before we wrap it up. + +\section{Acknowledgments} + +A polite author always includes acknowledgments. Thank everyone, +especially those who funded the work. + +\section{Availability} + +It's great when this section says that MyWonderfulApp is free software, +available via anonymous FTP from + +\begin{center} +{\tt ftp.site.dom/pub/myname/Wonderful}\\ +\end{center} + +Also, it's even greater when you can write that information is also +available on the Wonderful homepage at + +\begin{center} +{\tt http://www.site.dom/\~{}myname/SWIG} +\end{center} + +Now we get serious and fill in those references. Remember you will +have to run latex twice on the document in order to resolve those +cite tags you met earlier. This is where they get resolved. +We've preserved some real ones in addition to the template-speak. +After the bibliography you are DONE. + +{\footnotesize \bibliographystyle{acm} +\bibliography{../common/bibliography}} + + +% \theendnotes + +\end{document} + + + + + + + |