summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2018-09-12 19:02:41 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2018-09-12 19:02:41 -0400
commit2babf772f07281bf5a3beb778ad924fdc061a125 (patch)
treebc89ca453e8380234fb462eed2d16b9ca0ea98ee
Initial commitfeature-abstract
-rw-r--r--usenix2019.sty97
-rw-r--r--usenix2019.tex324
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}
+
+
+
+
+
+
+