summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes.txt13
-rw-r--r--PKG-INFO2
-rwxr-xr-xcontrib/benchmark.py12
-rw-r--r--contrib/expire_backups.12
-rw-r--r--contrib/pcp.12
-rw-r--r--doc/html/.buildinfo2
-rw-r--r--doc/html/_sources/issues.txt4
-rw-r--r--doc/html/_sources/man/ctrl.txt2
-rw-r--r--doc/html/_static/jquery.js1170
-rw-r--r--doc/html/about.html10
-rw-r--r--doc/html/adm.html14
-rw-r--r--doc/html/authinfo.html10
-rw-r--r--doc/html/backends.html10
-rw-r--r--doc/html/contrib.html10
-rw-r--r--doc/html/durability.html10
-rw-r--r--doc/html/fsck.html14
-rw-r--r--doc/html/impl_details.html10
-rw-r--r--doc/html/index.html10
-rw-r--r--doc/html/installation.html10
-rw-r--r--doc/html/issues.html14
-rw-r--r--doc/html/man/adm.html14
-rw-r--r--doc/html/man/cp.html10
-rw-r--r--doc/html/man/ctrl.html12
-rw-r--r--doc/html/man/expire_backups.html10
-rw-r--r--doc/html/man/fsck.html14
-rw-r--r--doc/html/man/index.html10
-rw-r--r--doc/html/man/lock.html10
-rw-r--r--doc/html/man/mkfs.html14
-rw-r--r--doc/html/man/mount.html23
-rw-r--r--doc/html/man/pcp.html10
-rw-r--r--doc/html/man/rm.html10
-rw-r--r--doc/html/man/stat.html10
-rw-r--r--doc/html/man/umount.html10
-rw-r--r--doc/html/mkfs.html14
-rw-r--r--doc/html/mount.html23
-rw-r--r--doc/html/objects.invbin579 -> 577 bytes
-rw-r--r--doc/html/resources.html10
-rw-r--r--doc/html/search.html10
-rw-r--r--doc/html/searchindex.js2
-rw-r--r--doc/html/special.html10
-rw-r--r--doc/html/tips.html10
-rw-r--r--doc/html/umount.html10
-rw-r--r--doc/latex/manual.aux83
-rw-r--r--doc/latex/manual.log688
-rw-r--r--doc/latex/manual.out140
-rw-r--r--doc/latex/manual.tex56
-rw-r--r--doc/latex/manual.toc26
-rw-r--r--doc/man/fsck.s3ql.16
-rw-r--r--doc/man/mkfs.s3ql.16
-rw-r--r--doc/man/mount.s3ql.114
-rw-r--r--doc/man/s3qladm.16
-rw-r--r--doc/man/s3qlcp.12
-rw-r--r--doc/man/s3qlctrl.14
-rw-r--r--doc/man/s3qllock.12
-rw-r--r--doc/man/s3qlrm.12
-rw-r--r--doc/man/s3qlstat.12
-rw-r--r--doc/man/umount.s3ql.12
-rw-r--r--doc/manual.pdfbin310875 -> 225680 bytes
-rw-r--r--rst/issues.rst4
-rw-r--r--rst/man/ctrl.rst2
-rw-r--r--src/s3ql.egg-info/PKG-INFO2
-rw-r--r--src/s3ql/__init__.py2
-rw-r--r--src/s3ql/_deltadump.c2
-rw-r--r--src/s3ql/adm.py17
-rw-r--r--src/s3ql/backends/s3c.py19
-rw-r--r--src/s3ql/backends/swift.py20
-rw-r--r--src/s3ql/block_cache.py2
-rw-r--r--src/s3ql/common.py21
-rw-r--r--src/s3ql/ctrl.py2
-rw-r--r--src/s3ql/fs.py37
-rw-r--r--src/s3ql/fsck.py35
-rw-r--r--src/s3ql/mkfs.py8
-rw-r--r--src/s3ql/mount.py18
-rw-r--r--src/s3ql/parse_args.py2
-rw-r--r--src/s3ql/statfs.py8
-rw-r--r--src/s3ql/umount.py89
-rw-r--r--tests/t1_backends.py18
-rw-r--r--tests/t3_fsck.py43
-rw-r--r--tests/t4_fuse.py2
79 files changed, 1747 insertions, 1222 deletions
diff --git a/Changes.txt b/Changes.txt
index 51a7a7d..5277018 100644
--- a/Changes.txt
+++ b/Changes.txt
@@ -1,3 +1,11 @@
+2012-09-03, S3QL 1.12
+
+ * Be more verbose about how to remedy the situation when attempting
+ to upgrade file system needing fsck.
+
+ * Fsck now detects and fixes directory entries which do not have an
+ entry type stored in their mode field.
+
2012-05-04, S3QL 1.11.1
* Fixed crash when using S3 backend.
@@ -5,7 +13,10 @@
* Increase minimum reported file system size to 1 TB, and work
around df bug so that size is reported properly.
-
+
+ * umount.s3ql now produces a more helpful error message if the
+ file system has crashed.
+
2012-04-29, S3QL 1.11
* S3QL no longer uses the confusing "bucket" term (which is S3
diff --git a/PKG-INFO b/PKG-INFO
index 4b0c152..fb8afae 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: s3ql
-Version: 1.11.1
+Version: 1.12
Summary: a full-featured file system for online data storage
Home-page: http://code.google.com/p/s3ql/
Author: Nikolaus Rath
diff --git a/contrib/benchmark.py b/contrib/benchmark.py
index f171073..e217332 100755
--- a/contrib/benchmark.py
+++ b/contrib/benchmark.py
@@ -113,7 +113,7 @@ def main(args=None):
subprocess.check_call(['umount.s3ql', mnt_dir])
fuse_speed = copied / write_time
- log.info('Cache throughput: %d KB/sec', fuse_speed / 1024)
+ log.info('Cache throughput: %d KiB/sec', fuse_speed / 1024)
# Upload random data to prevent effects of compression
# on the network layer
@@ -142,12 +142,12 @@ def main(args=None):
(upload_size, upload_time) = backend.perform_write(do_write, 's3ql_testdata')
upload_time = time.time() - upload_time
backend_speed = upload_size / upload_time
- log.info('Backend throughput: %d KB/sec', backend_speed / 1024)
+ log.info('Backend throughput: %d KiB/sec', backend_speed / 1024)
backend.delete('s3ql_testdata')
src = options.file
size = os.fstat(options.file.fileno()).st_size
- log.info('Test file size: %.2f MB', (size / 1024 ** 2))
+ log.info('Test file size: %.2f MiB', (size / 1024 ** 2))
in_speed = dict()
out_speed = dict()
@@ -167,8 +167,8 @@ def main(args=None):
dt = time.time() - stamp
in_speed[alg] = size / dt
out_speed[alg] = dst_fh.get_obj_size() / dt
- log.info('%s compression speed: %d KB/sec per thread (in)', alg, in_speed[alg] / 1024)
- log.info('%s compression speed: %d KB/sec per thread (out)', alg, out_speed[alg] / 1024)
+ log.info('%s compression speed: %d KiB/sec per thread (in)', alg, in_speed[alg] / 1024)
+ log.info('%s compression speed: %d KiB/sec per thread (out)', alg, out_speed[alg] / 1024)
print('')
@@ -201,7 +201,7 @@ def main(args=None):
speeds.append(speed / 1024)
print('%-26s' % ('Max FS throughput (%s):' % alg),
- ('%7d KB/s' * len(threads)) % tuple(speeds))
+ ('%7d KiB/s' * len(threads)) % tuple(speeds))
print('%-26s' % '..limited by:',
('%12s' * len(threads)) % tuple(limits))
diff --git a/contrib/expire_backups.1 b/contrib/expire_backups.1
index 0c72d4b..2aaa4ab 100644
--- a/contrib/expire_backups.1
+++ b/contrib/expire_backups.1
@@ -1,4 +1,4 @@
-.TH "EXPIRE_BACKUPS" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "EXPIRE_BACKUPS" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
expire_backups \- Intelligently expire old backups
.
diff --git a/contrib/pcp.1 b/contrib/pcp.1
index 0de1312..f14f1e5 100644
--- a/contrib/pcp.1
+++ b/contrib/pcp.1
@@ -1,4 +1,4 @@
-.TH "PCP" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "PCP" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
pcp \- Recursive, parallel copy of directory trees
.
diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo
index 690e76e..32ca797 100644
--- a/doc/html/.buildinfo
+++ b/doc/html/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: a755e82483ba73a999549c95c58fcb2a
+config: 5f4ff63492a9b107a00c2cd82913c2a6
tags: fbb0d17656682115ca4d033fb2f83ba1
diff --git a/doc/html/_sources/issues.txt b/doc/html/_sources/issues.txt
index 9e9db5d..b5d8735 100644
--- a/doc/html/_sources/issues.txt
+++ b/doc/html/_sources/issues.txt
@@ -10,9 +10,9 @@ Known Issues
details.
* S3QL is rather slow when an application tries to write data in
- unreasonably small chunks. If a 1 MB file is copied in chunks of 1
+ unreasonably small chunks. If a 1 MiB file is copied in chunks of 1
KB, this will take more than 10 times as long as when it's copied
- with the (recommended) chunk size of 128 KB.
+ with the (recommended) chunk size of 128 KiB.
This is a limitation of the FUSE library (which does not yet support
write caching) which will hopefully be addressed in some future FUSE
diff --git a/doc/html/_sources/man/ctrl.txt b/doc/html/_sources/man/ctrl.txt
index 8173162..0acc8f0 100644
--- a/doc/html/_sources/man/ctrl.txt
+++ b/doc/html/_sources/man/ctrl.txt
@@ -41,7 +41,7 @@ upload-meta
cachesize
Changes the cache size of the file system. This action requires an
- additional argument that specifies the new cache size in kB, so the
+ additional argument that specifies the new cache size in KiB, so the
complete command line is::
s3qlctrl [options] cachesize <mountpoint> <new-cache-size>
diff --git a/doc/html/_static/jquery.js b/doc/html/_static/jquery.js
index 8ccd0ea..f8b3fb8 100644
--- a/doc/html/_static/jquery.js
+++ b/doc/html/_static/jquery.js
@@ -1,5 +1,5 @@
/*!
- * jQuery JavaScript Library v1.7.1
+ * jQuery JavaScript Library v1.7.2
* http://jquery.com/
*
* Copyright 2011, John Resig
@@ -11,7 +11,7 @@
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
- * Date: Mon Nov 21 21:11:03 2011 -0500
+ * Date: Sat Aug 4 06:33:40 UTC 2012
*/
(function( window, undefined ) {
@@ -210,7 +210,7 @@ jQuery.fn = jQuery.prototype = {
selector: "",
// The current version of jQuery being used
- jquery: "1.7.1",
+ jquery: "1.7.2",
// The default length of a jQuery object is 0
length: 0,
@@ -497,9 +497,8 @@ jQuery.extend({
return jQuery.type(obj) === "array";
},
- // A crude way of determining if an object is a window
isWindow: function( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
+ return obj != null && obj == obj.window;
},
isNumeric: function( obj ) {
@@ -579,6 +578,9 @@ jQuery.extend({
// Cross-browser xml parsing
parseXML: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
var xml, tmp;
try {
if ( window.DOMParser ) { // Standard
@@ -822,31 +824,55 @@ jQuery.extend({
// Mutifunctional method to get and set values to a collection
// The value/s can optionally be executed if it's a function
- access: function( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
+ access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
+ var exec,
+ bulk = key == null,
+ i = 0,
+ length = elems.length;
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- jQuery.access( elems, k, key[k], exec, fn, value );
+ // Sets many values
+ if ( key && typeof key === "object" ) {
+ for ( i in key ) {
+ jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
}
- return elems;
- }
+ chainable = 1;
- // Setting one attribute
- if ( value !== undefined ) {
+ // Sets one value
+ } else if ( value !== undefined ) {
// Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
+ exec = pass === undefined && jQuery.isFunction( value );
+
+ if ( bulk ) {
+ // Bulk operations only iterate when executing function values
+ if ( exec ) {
+ exec = fn;
+ fn = function( elem, key, value ) {
+ return exec.call( jQuery( elem ), value );
+ };
+
+ // Otherwise they run against the entire set
+ } else {
+ fn.call( elems, value );
+ fn = null;
+ }
+ }
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ if ( fn ) {
+ for (; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
}
- return elems;
+ chainable = 1;
}
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
+ return chainable ?
+ elems :
+
+ // Gets
+ bulk ?
+ fn.call( elems ) :
+ length ? fn( elems[0], key ) : emptyGet;
},
now: function() {
@@ -1005,6 +1031,8 @@ jQuery.Callbacks = function( flags ) {
stack = [],
// Last fire value (for non-forgettable lists)
memory,
+ // Flag to know if list was already fired
+ fired,
// Flag to know if list is currently firing
firing,
// First callback to fire (used internally by add and fireWith)
@@ -1038,6 +1066,7 @@ jQuery.Callbacks = function( flags ) {
fire = function( context, args ) {
args = args || [];
memory = !flags.memory || [ context, args ];
+ fired = true;
firing = true;
firingIndex = firingStart || 0;
firingStart = 0;
@@ -1173,7 +1202,7 @@ jQuery.Callbacks = function( flags ) {
},
// To know if the callbacks have already been called at least once
fired: function() {
- return !!memory;
+ return !!fired;
}
};
@@ -1336,7 +1365,6 @@ jQuery.support = (function() {
select,
opt,
input,
- marginDiv,
fragment,
tds,
events,
@@ -1419,9 +1447,13 @@ jQuery.support = (function() {
noCloneEvent: true,
inlineBlockNeedsLayout: false,
shrinkWrapBlocks: false,
- reliableMarginRight: true
+ reliableMarginRight: true,
+ pixelMargin: true
};
+ // jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
+ jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
+
// Make sure checked status is properly cloned
input.checked = true;
support.noCloneChecked = input.cloneNode( true ).checked;
@@ -1456,6 +1488,10 @@ jQuery.support = (function() {
support.radioValue = input.value === "t";
input.setAttribute("checked", "checked");
+
+ // #11217 - WebKit loses check when the name is after the checked attribute
+ input.setAttribute( "name", "t" );
+
div.appendChild( input );
fragment = document.createDocumentFragment();
fragment.appendChild( div.lastChild );
@@ -1470,23 +1506,6 @@ jQuery.support = (function() {
fragment.removeChild( input );
fragment.appendChild( div );
- div.innerHTML = "";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. For more
- // info see bug #3333
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- if ( window.getComputedStyle ) {
- marginDiv = document.createElement( "div" );
- marginDiv.style.width = "0";
- marginDiv.style.marginRight = "0";
- div.style.width = "2px";
- div.appendChild( marginDiv );
- support.reliableMarginRight =
- ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
- }
-
// Technique from Juriy Zaytsev
// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
// We only care about the case where non-standard event systems
@@ -1494,7 +1513,7 @@ jQuery.support = (function() {
// avoid an eval call (in setAttribute) which can cause CSP
// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
if ( div.attachEvent ) {
- for( i in {
+ for ( i in {
submit: 1,
change: 1,
focusin: 1
@@ -1512,12 +1531,13 @@ jQuery.support = (function() {
fragment.removeChild( div );
// Null elements to avoid leaks in IE
- fragment = select = opt = marginDiv = div = input = null;
+ fragment = select = opt = div = input = null;
// Run tests that need a body at doc ready
jQuery(function() {
var container, outer, inner, table, td, offsetSupport,
- conMarginTop, ptlm, vb, style, html,
+ marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
+ paddingMarginBorderVisibility, paddingMarginBorder,
body = document.getElementsByTagName("body")[0];
if ( !body ) {
@@ -1526,15 +1546,16 @@ jQuery.support = (function() {
}
conMarginTop = 1;
- ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
- vb = "visibility:hidden;border:0;";
- style = "style='" + ptlm + "border:5px solid #000;padding:0;'";
- html = "<div " + style + "><div></div></div>" +
- "<table " + style + " cellpadding='0' cellspacing='0'>" +
+ paddingMarginBorder = "padding:0;margin:0;border:";
+ positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
+ paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
+ style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
+ html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
+ "<table " + style + "' cellpadding='0' cellspacing='0'>" +
"<tr><td></td></tr></table>";
container = document.createElement("div");
- container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
+ container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
body.insertBefore( container, body.firstChild );
// Construct the test element
@@ -1548,7 +1569,7 @@ jQuery.support = (function() {
// display:none (it is still safe to use offsets if a parent element is
// hidden; don safety goggles and see bug #4512 for more information).
// (only IE 8 fails this test)
- div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
tds = div.getElementsByTagName( "td" );
isSupported = ( tds[ 0 ].offsetHeight === 0 );
@@ -1559,28 +1580,44 @@ jQuery.support = (function() {
// (IE <= 8 fail this test)
support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
- // Figure out if the W3C box model works as expected
- div.innerHTML = "";
- div.style.width = div.style.paddingLeft = "1px";
- jQuery.boxModel = support.boxModel = div.offsetWidth === 2;
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( window.getComputedStyle ) {
+ div.innerHTML = "";
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.style.width = "2px";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
if ( typeof div.style.zoom !== "undefined" ) {
// Check if natively block-level elements act like inline-block
// elements when setting their display to 'inline' and giving
// them layout
// (IE < 8 does this)
+ div.innerHTML = "";
+ div.style.width = div.style.padding = "1px";
+ div.style.border = 0;
+ div.style.overflow = "hidden";
div.style.display = "inline";
div.style.zoom = 1;
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
// Check if elements with layout shrink-wrap their children
// (IE 6 does this)
- div.style.display = "";
- div.innerHTML = "<div style='width:4px;'></div>";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ div.style.display = "block";
+ div.style.overflow = "visible";
+ div.innerHTML = "<div style='width:5px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
}
- div.style.cssText = ptlm + vb;
+ div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
div.innerHTML = html;
outer = div.firstChild;
@@ -1605,8 +1642,17 @@ jQuery.support = (function() {
offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
+ if ( window.getComputedStyle ) {
+ div.style.marginTop = "1%";
+ support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
+ }
+
+ if ( typeof container.style.zoom !== "undefined" ) {
+ container.style.zoom = 1;
+ }
+
body.removeChild( container );
- div = container = null;
+ marginDiv = div = container = null;
jQuery.extend( support, offsetSupport );
});
@@ -1863,62 +1909,70 @@ jQuery.extend({
jQuery.fn.extend({
data: function( key, value ) {
- var parts, attr, name,
+ var parts, part, attr, name, l,
+ elem = this[0],
+ i = 0,
data = null;
- if ( typeof key === "undefined" ) {
+ // Gets all values
+ if ( key === undefined ) {
if ( this.length ) {
- data = jQuery.data( this[0] );
+ data = jQuery.data( elem );
- if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) {
- attr = this[0].attributes;
- for ( var i = 0, l = attr.length; i < l; i++ ) {
+ if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
+ attr = elem.attributes;
+ for ( l = attr.length; i < l; i++ ) {
name = attr[i].name;
if ( name.indexOf( "data-" ) === 0 ) {
name = jQuery.camelCase( name.substring(5) );
- dataAttr( this[0], name, data[ name ] );
+ dataAttr( elem, name, data[ name ] );
}
}
- jQuery._data( this[0], "parsedAttrs", true );
+ jQuery._data( elem, "parsedAttrs", true );
}
}
return data;
+ }
- } else if ( typeof key === "object" ) {
+ // Sets multiple values
+ if ( typeof key === "object" ) {
return this.each(function() {
jQuery.data( this, key );
});
}
- parts = key.split(".");
+ parts = key.split( ".", 2 );
parts[1] = parts[1] ? "." + parts[1] : "";
+ part = parts[1] + "!";
- if ( value === undefined ) {
- data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+ return jQuery.access( this, function( value ) {
- // Try to fetch any internally stored data first
- if ( data === undefined && this.length ) {
- data = jQuery.data( this[0], key );
- data = dataAttr( this[0], key, data );
- }
+ if ( value === undefined ) {
+ data = this.triggerHandler( "getData" + part, [ parts[0] ] );
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
+ // Try to fetch any internally stored data first
+ if ( data === undefined && elem ) {
+ data = jQuery.data( elem, key );
+ data = dataAttr( elem, key, data );
+ }
- } else {
- return this.each(function() {
- var self = jQuery( this ),
- args = [ parts[0], value ];
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ }
- self.triggerHandler( "setData" + parts[1] + "!", args );
+ parts[1] = value;
+ this.each(function() {
+ var self = jQuery( this );
+
+ self.triggerHandler( "setData" + part, parts );
jQuery.data( this, key, value );
- self.triggerHandler( "changeData" + parts[1] + "!", args );
+ self.triggerHandler( "changeData" + part, parts );
});
- }
+ }, null, value, arguments.length > 1, null, false );
},
removeData: function( key ) {
@@ -1942,7 +1996,7 @@ function dataAttr( elem, key, data ) {
data = data === "true" ? true :
data === "false" ? false :
data === "null" ? null :
- jQuery.isNumeric( data ) ? parseFloat( data ) :
+ jQuery.isNumeric( data ) ? +data :
rbrace.test( data ) ? jQuery.parseJSON( data ) :
data;
} catch( e ) {}
@@ -2077,21 +2131,27 @@ jQuery.extend({
jQuery.fn.extend({
queue: function( type, data ) {
+ var setter = 2;
+
if ( typeof type !== "string" ) {
data = type;
type = "fx";
+ setter--;
}
- if ( data === undefined ) {
+ if ( arguments.length < setter ) {
return jQuery.queue( this[0], type );
}
- return this.each(function() {
- var queue = jQuery.queue( this, type, data );
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
+ return data === undefined ?
+ this :
+ this.each(function() {
+ var queue = jQuery.queue( this, type, data );
+
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
},
dequeue: function( type ) {
return this.each(function() {
@@ -2145,7 +2205,7 @@ jQuery.fn.extend({
}
}
resolve();
- return defer.promise();
+ return defer.promise( object );
}
});
@@ -2164,7 +2224,7 @@ var rclass = /[\n\t\r]/g,
jQuery.fn.extend({
attr: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.attr );
+ return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
},
removeAttr: function( name ) {
@@ -2174,7 +2234,7 @@ jQuery.fn.extend({
},
prop: function( name, value ) {
- return jQuery.access( this, name, value, true, jQuery.prop );
+ return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
},
removeProp: function( name ) {
@@ -2314,7 +2374,7 @@ jQuery.fn.extend({
if ( !arguments.length ) {
if ( elem ) {
- hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
+ hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
return ret;
@@ -2358,7 +2418,7 @@ jQuery.fn.extend({
});
}
- hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+ hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
// If set returns undefined, fall back to normal setting
if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
@@ -2504,7 +2564,7 @@ jQuery.extend({
},
removeAttr: function( elem, value ) {
- var propName, attrNames, name, l,
+ var propName, attrNames, name, l, isBool,
i = 0;
if ( value && elem.nodeType === 1 ) {
@@ -2516,13 +2576,17 @@ jQuery.extend({
if ( name ) {
propName = jQuery.propFix[ name ] || name;
+ isBool = rboolean.test( name );
// See #9699 for explanation of this approach (setting first, then removal)
- jQuery.attr( elem, name, "" );
+ // Do not do this for boolean attributes (see #10870)
+ if ( !isBool ) {
+ jQuery.attr( elem, name, "" );
+ }
elem.removeAttribute( getSetAttribute ? name : propName );
// Set corresponding property to false for boolean attributes
- if ( rboolean.test( name ) && propName in elem ) {
+ if ( isBool && propName in elem ) {
elem[ propName ] = false;
}
}
@@ -2676,7 +2740,8 @@ if ( !getSetAttribute ) {
fixSpecified = {
name: true,
- id: true
+ id: true,
+ coords: true
};
// Use this for any attribute in IE6/7
@@ -2806,7 +2871,7 @@ jQuery.each([ "radio", "checkbox" ], function() {
var rformElems = /^(?:textarea|input|select)$/i,
rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
- rhoverHack = /\bhover(\.\S+)?\b/,
+ rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
rkeyEvent = /^key/,
rmouseEvent = /^(?:mouse|contextmenu)|click/,
rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
@@ -2854,6 +2919,7 @@ jQuery.event = {
if ( handler.handler ) {
handleObjIn = handler;
handler = handleObjIn.handler;
+ selector = handleObjIn.selector;
}
// Make sure that the handler has a unique ID, used to find/remove it later
@@ -2905,7 +2971,7 @@ jQuery.event = {
handler: handler,
guid: handler.guid,
selector: selector,
- quick: quickParse( selector ),
+ quick: selector && quickParse( selector ),
namespace: namespaces.join(".")
}, handleObjIn );
@@ -3194,6 +3260,7 @@ jQuery.event = {
delegateCount = handlers.delegateCount,
args = [].slice.call( arguments, 0 ),
run_all = !event.exclusive && !event.namespace,
+ special = jQuery.event.special[ event.type ] || {},
handlerQueue = [],
i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
@@ -3201,34 +3268,43 @@ jQuery.event = {
args[0] = event;
event.delegateTarget = this;
+ // Call the preDispatch hook for the mapped type, and let it bail if desired
+ if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+ return;
+ }
+
// Determine handlers that should run if there are delegated events
- // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) {
+ // Avoid non-left-click bubbling in Firefox (#3861)
+ if ( delegateCount && !(event.button && event.type === "click") ) {
// Pregenerate a single jQuery object for reuse with .is()
jqcur = jQuery(this);
jqcur.context = this.ownerDocument || this;
for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
- selMatch = {};
- matches = [];
- jqcur[0] = cur;
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
- sel = handleObj.selector;
-
- if ( selMatch[ sel ] === undefined ) {
- selMatch[ sel ] = (
- handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
- );
+
+ // Don't process events on disabled elements (#6911, #8165)
+ if ( cur.disabled !== true ) {
+ selMatch = {};
+ matches = [];
+ jqcur[0] = cur;
+ for ( i = 0; i < delegateCount; i++ ) {
+ handleObj = handlers[ i ];
+ sel = handleObj.selector;
+
+ if ( selMatch[ sel ] === undefined ) {
+ selMatch[ sel ] = (
+ handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
+ );
+ }
+ if ( selMatch[ sel ] ) {
+ matches.push( handleObj );
+ }
}
- if ( selMatch[ sel ] ) {
- matches.push( handleObj );
+ if ( matches.length ) {
+ handlerQueue.push({ elem: cur, matches: matches });
}
}
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, matches: matches });
- }
}
}
@@ -3266,6 +3342,11 @@ jQuery.event = {
}
}
+ // Call the postDispatch hook for the mapped type
+ if ( special.postDispatch ) {
+ special.postDispatch.call( this, event );
+ }
+
return event.result;
},
@@ -3557,16 +3638,23 @@ if ( !jQuery.support.submitBubbles ) {
form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
if ( form && !form._submit_attached ) {
jQuery.event.add( form, "submit._submit", function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
+ event._submit_bubble = true;
});
form._submit_attached = true;
}
});
// return undefined since we don't need an event listener
},
+
+ postDispatch: function( event ) {
+ // If form was submitted by the user, bubble the event up the tree
+ if ( event._submit_bubble ) {
+ delete event._submit_bubble;
+ if ( this.parentNode && !event.isTrigger ) {
+ jQuery.event.simulate( "submit", this.parentNode, event, true );
+ }
+ }
+ },
teardown: function() {
// Only need this for delegated form submit events
@@ -3671,9 +3759,9 @@ jQuery.fn.extend({
// Types can be a map of types/handlers
if ( typeof types === "object" ) {
// ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
+ if ( typeof selector !== "string" ) { // && selector != null
// ( types-Object, data )
- data = selector;
+ data = data || selector;
selector = undefined;
}
for ( type in types ) {
@@ -3719,14 +3807,14 @@ jQuery.fn.extend({
});
},
one: function( types, selector, data, fn ) {
- return this.on.call( this, types, selector, data, fn, 1 );
+ return this.on( types, selector, data, fn, 1 );
},
off: function( types, selector, fn ) {
if ( types && types.preventDefault && types.handleObj ) {
// ( event ) dispatched jQuery.Event
var handleObj = types.handleObj;
jQuery( types.delegateTarget ).off(
- handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type,
+ handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
handleObj.selector,
handleObj.handler
);
@@ -3885,7 +3973,7 @@ var Sizzle = function( selector, context, results, seed ) {
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
}
-
+
if ( !selector || typeof selector !== "string" ) {
return results;
}
@@ -3895,7 +3983,7 @@ var Sizzle = function( selector, context, results, seed ) {
contextXML = Sizzle.isXML( context ),
parts = [],
soFar = selector;
-
+
// Reset the position of the chunker regexp (start from head)
do {
chunker.exec( "" );
@@ -3903,9 +3991,9 @@ var Sizzle = function( selector, context, results, seed ) {
if ( m ) {
soFar = m[3];
-
+
parts.push( m[1] );
-
+
if ( m[2] ) {
extra = m[3];
break;
@@ -3929,7 +4017,7 @@ var Sizzle = function( selector, context, results, seed ) {
if ( Expr.relative[ selector ] ) {
selector += parts.shift();
}
-
+
set = posProcess( selector, set, seed );
}
}
@@ -4057,7 +4145,7 @@ Sizzle.find = function( expr, context, isXML ) {
for ( i = 0, len = Expr.order.length; i < len; i++ ) {
type = Expr.order[i];
-
+
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
left = match[1];
match.splice( 1, 1 );
@@ -4189,7 +4277,7 @@ var getText = Sizzle.getText = function( elem ) {
ret = "";
if ( nodeType ) {
- if ( nodeType === 1 || nodeType === 9 ) {
+ if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
// Use textContent || innerText for elements
if ( typeof elem.textContent === 'string' ) {
return elem.textContent;
@@ -4429,7 +4517,7 @@ var Expr = Sizzle.selectors = {
ATTR: function( match, curLoop, inplace, result, not, isXML ) {
var name = match[1] = match[1].replace( rBackslash, "" );
-
+
if ( !isXML && Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}
@@ -4463,7 +4551,7 @@ var Expr = Sizzle.selectors = {
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
return true;
}
-
+
return match;
},
@@ -4473,7 +4561,7 @@ var Expr = Sizzle.selectors = {
return match;
}
},
-
+
filters: {
enabled: function( elem ) {
return elem.disabled === false && elem.type !== "hidden";
@@ -4486,14 +4574,14 @@ var Expr = Sizzle.selectors = {
checked: function( elem ) {
return elem.checked === true;
},
-
+
selected: function( elem ) {
// Accessing this property makes selected-by-default
// options in Safari work properly
if ( elem.parentNode ) {
elem.parentNode.selectedIndex;
}
-
+
return elem.selected === true;
},
@@ -4515,7 +4603,7 @@ var Expr = Sizzle.selectors = {
text: function( elem ) {
var attr = elem.getAttribute( "type" ), type = elem.type;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
// use getAttribute instead to test this case
return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
},
@@ -4633,22 +4721,23 @@ var Expr = Sizzle.selectors = {
switch ( type ) {
case "only":
case "first":
- while ( (node = node.previousSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
}
}
- if ( type === "first" ) {
- return true;
+ if ( type === "first" ) {
+ return true;
}
node = elem;
+ /* falls through */
case "last":
- while ( (node = node.nextSibling) ) {
- if ( node.nodeType === 1 ) {
- return false;
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
}
}
@@ -4661,22 +4750,22 @@ var Expr = Sizzle.selectors = {
if ( first === 1 && last === 0 ) {
return true;
}
-
+
doneName = match[0];
parent = elem.parentNode;
-
+
if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
count = 0;
-
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType === 1 ) {
node.nodeIndex = ++count;
}
- }
+ }
parent[ expando ] = doneName;
}
-
+
diff = elem.nodeIndex - last;
if ( first === 0 ) {
@@ -4695,7 +4784,7 @@ var Expr = Sizzle.selectors = {
TAG: function( elem, match ) {
return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
},
-
+
CLASS: function( elem, match ) {
return (" " + (elem.className || elem.getAttribute("class")) + " ")
.indexOf( match ) > -1;
@@ -4757,6 +4846,9 @@ for ( var type in Expr.match ) {
Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
+// Expose origPOS
+// "global" as in regardless of relation to brackets/parens
+Expr.match.globalPOS = origPOS;
var makeArray = function( array, results ) {
array = Array.prototype.slice.call( array, 0 );
@@ -4765,7 +4857,7 @@ var makeArray = function( array, results ) {
results.push.apply( results, array );
return results;
}
-
+
return array;
};
@@ -4997,7 +5089,7 @@ if ( document.querySelectorAll ) {
if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
return;
}
-
+
Sizzle = function( query, context, extra, seed ) {
context = context || document;
@@ -5006,24 +5098,24 @@ if ( document.querySelectorAll ) {
if ( !seed && !Sizzle.isXML(context) ) {
// See if we find a selector to speed up
var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
-
+
if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
// Speed-up: Sizzle("TAG")
if ( match[1] ) {
return makeArray( context.getElementsByTagName( query ), extra );
-
+
// Speed-up: Sizzle(".CLASS")
} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
return makeArray( context.getElementsByClassName( match[2] ), extra );
}
}
-
+
if ( context.nodeType === 9 ) {
// Speed-up: Sizzle("body")
// The body element only exists once, optimize finding it
if ( query === "body" && context.body ) {
return makeArray( [ context.body ], extra );
-
+
// Speed-up: Sizzle("#ID")
} else if ( match && match[3] ) {
var elem = context.getElementById( match[3] );
@@ -5036,12 +5128,12 @@ if ( document.querySelectorAll ) {
if ( elem.id === match[3] ) {
return makeArray( [ elem ], extra );
}
-
+
} else {
return makeArray( [], extra );
}
}
-
+
try {
return makeArray( context.querySelectorAll(query), extra );
} catch(qsaError) {}
@@ -5079,7 +5171,7 @@ if ( document.querySelectorAll ) {
}
}
}
-
+
return oldSizzle(query, context, extra, seed);
};
@@ -5106,7 +5198,7 @@ if ( document.querySelectorAll ) {
// This should fail with an exception
// Gecko does not error, returns false instead
matches.call( document.documentElement, "[test!='']:sizzle" );
-
+
} catch( pseudoError ) {
pseudoWorks = true;
}
@@ -5116,7 +5208,7 @@ if ( document.querySelectorAll ) {
expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
if ( !Sizzle.isXML( node ) ) {
- try {
+ try {
if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
var ret = matches.call( node, expr );
@@ -5153,7 +5245,7 @@ if ( document.querySelectorAll ) {
if ( div.getElementsByClassName("e").length === 1 ) {
return;
}
-
+
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function( match, context, isXML ) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
@@ -5204,7 +5296,7 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
if ( elem ) {
var match = false;
-
+
elem = elem[dir];
while ( elem ) {
@@ -5257,7 +5349,7 @@ if ( document.documentElement.contains ) {
Sizzle.isXML = function( elem ) {
// documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
+ // (such as loading iframes in IE - #4833)
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
return documentElement ? documentElement.nodeName !== "HTML" : false;
@@ -5307,7 +5399,7 @@ var runtil = /Until$/,
rmultiselector = /,/,
isSimple = /^.[^:#\[\.,]*$/,
slice = Array.prototype.slice,
- POS = jQuery.expr.match.POS,
+ POS = jQuery.expr.match.globalPOS,
// methods guaranteed to produce a unique set when starting from a unique set
guaranteedUnique = {
children: true,
@@ -5374,11 +5466,11 @@ jQuery.fn.extend({
},
is: function( selector ) {
- return !!selector && (
+ return !!selector && (
typeof selector === "string" ?
// If this is a positional selector, check membership in the returned set
// so $("p:first").is("p:last") won't return true for a doc with two "p".
- POS.test( selector ) ?
+ POS.test( selector ) ?
jQuery( selector, this.context ).index( this[0] ) >= 0 :
jQuery.filter( selector, this ).length > 0 :
this.filter( selector ).length > 0 );
@@ -5386,7 +5478,7 @@ jQuery.fn.extend({
closest: function( selectors, context ) {
var ret = [], i, l, cur = this[0];
-
+
// Array (deprecated as of jQuery 1.7)
if ( jQuery.isArray( selectors ) ) {
var level = 1;
@@ -5505,7 +5597,7 @@ jQuery.each({
return jQuery.dir( elem, "previousSibling", until );
},
siblings: function( elem ) {
- return jQuery.sibling( elem.parentNode.firstChild, elem );
+ return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
},
children: function( elem ) {
return jQuery.sibling( elem.firstChild );
@@ -5639,7 +5731,7 @@ function createSafeFragment( document ) {
return safeFrag;
}
-var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" +
+var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
rleadingWhitespace = /^\s+/,
@@ -5649,7 +5741,7 @@ var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|fig
rhtml = /<|&#?\w+;/,
rnoInnerhtml = /<(?:script|style)/i,
rnocache = /<(?:script|object|embed|option|style)/i,
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")", "i"),
+ rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
rscriptType = /\/(java|ecma)script/i,
@@ -5676,20 +5768,12 @@ if ( !jQuery.support.htmlSerialize ) {
}
jQuery.fn.extend({
- text: function( text ) {
- if ( jQuery.isFunction(text) ) {
- return this.each(function(i) {
- var self = jQuery( this );
-
- self.text( text.call(this, i, self.text()) );
- });
- }
-
- if ( typeof text !== "object" && text !== undefined ) {
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
- }
-
- return jQuery.text( this );
+ text: function( value ) {
+ return jQuery.access( this, function( value ) {
+ return value === undefined ?
+ jQuery.text( this ) :
+ this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
+ }, null, value, arguments.length );
},
wrapAll: function( html ) {
@@ -5841,44 +5925,44 @@ jQuery.fn.extend({
},
html: function( value ) {
- if ( value === undefined ) {
- return this[0] && this[0].nodeType === 1 ?
- this[0].innerHTML.replace(rinlinejQuery, "") :
- null;
+ return jQuery.access( this, function( value ) {
+ var elem = this[0] || {},
+ i = 0,
+ l = this.length;
- // See if we can take a shortcut and just use innerHTML
- } else if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
- !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
+ if ( value === undefined ) {
+ return elem.nodeType === 1 ?
+ elem.innerHTML.replace( rinlinejQuery, "" ) :
+ null;
+ }
- value = value.replace(rxhtmlTag, "<$1></$2>");
- try {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( this[i].nodeType === 1 ) {
- jQuery.cleanData( this[i].getElementsByTagName("*") );
- this[i].innerHTML = value;
- }
- }
+ if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+ ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
+ !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {
- this.empty().append( value );
- }
+ value = value.replace( rxhtmlTag, "<$1></$2>" );
- } else if ( jQuery.isFunction( value ) ) {
- this.each(function(i){
- var self = jQuery( this );
+ try {
+ for (; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ elem = this[i] || {};
+ if ( elem.nodeType === 1 ) {
+ jQuery.cleanData( elem.getElementsByTagName( "*" ) );
+ elem.innerHTML = value;
+ }
+ }
- self.html( value.call(this, i, self.html()) );
- });
+ elem = 0;
- } else {
- this.empty().append( value );
- }
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {}
+ }
- return this;
+ if ( elem ) {
+ this.empty().append( value );
+ }
+ }, null, value, arguments.length );
},
replaceWith: function( value ) {
@@ -5981,7 +6065,23 @@ jQuery.fn.extend({
}
if ( scripts.length ) {
- jQuery.each( scripts, evalScript );
+ jQuery.each( scripts, function( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ type: "GET",
+ global: false,
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+ });
}
}
@@ -6013,7 +6113,7 @@ function cloneCopyEvent( src, dest ) {
for ( type in events ) {
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
+ jQuery.event.add( dest, type, events[ type ][ i ] );
}
}
}
@@ -6075,11 +6175,20 @@ function cloneFixAttributes( src, dest ) {
// cloning other types of input fields
} else if ( nodeName === "input" || nodeName === "textarea" ) {
dest.defaultValue = src.defaultValue;
+
+ // IE blanks contents when cloning scripts
+ } else if ( nodeName === "script" && dest.text !== src.text ) {
+ dest.text = src.text;
}
// Event data gets referenced instead of copied if the expando
// gets copied too
dest.removeAttribute( jQuery.expando );
+
+ // Clear flags for bubbling special change/submit events, they must
+ // be reattached when the newly cloned events are first activated
+ dest.removeAttribute( "_submit_attached" );
+ dest.removeAttribute( "_change_attached" );
}
jQuery.buildFragment = function( args, nodes, scripts ) {
@@ -6204,7 +6313,7 @@ jQuery.extend({
destElements,
i,
// IE<=8 does not properly clone detached, unknown element nodes
- clone = jQuery.support.html5Clone || !rnoshimcache.test( "<" + elem.nodeName ) ?
+ clone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?
elem.cloneNode( true ) :
shimCloneNode( elem );
@@ -6254,7 +6363,8 @@ jQuery.extend({
},
clean: function( elems, context, fragment, scripts ) {
- var checkScriptType;
+ var checkScriptType, script, j,
+ ret = [];
context = context || document;
@@ -6263,8 +6373,6 @@ jQuery.extend({
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
}
- var ret = [], j;
-
for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
if ( typeof elem === "number" ) {
elem += "";
@@ -6286,7 +6394,9 @@ jQuery.extend({
var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
wrap = wrapMap[ tag ] || wrapMap._default,
depth = wrap[0],
- div = context.createElement("div");
+ div = context.createElement("div"),
+ safeChildNodes = safeFragment.childNodes,
+ remove;
// Append wrapper element to unknown element safe doc fragment
if ( context === document ) {
@@ -6331,6 +6441,21 @@ jQuery.extend({
}
elem = div.childNodes;
+
+ // Clear elements from DocumentFragment (safeFragment or otherwise)
+ // to avoid hoarding elements. Fixes #11356
+ if ( div ) {
+ div.parentNode.removeChild( div );
+
+ // Guard against -1 index exceptions in FF3.6
+ if ( safeChildNodes.length > 0 ) {
+ remove = safeChildNodes[ safeChildNodes.length - 1 ];
+
+ if ( remove && remove.parentNode ) {
+ remove.parentNode.removeChild( remove );
+ }
+ }
+ }
}
}
@@ -6359,16 +6484,17 @@ jQuery.extend({
return !elem.type || rscriptType.test( elem.type );
};
for ( i = 0; ret[i]; i++ ) {
- if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ script = ret[i];
+ if ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {
+ scripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );
} else {
- if ( ret[i].nodeType === 1 ) {
- var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+ if ( script.nodeType === 1 ) {
+ var jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );
ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
}
- fragment.appendChild( ret[i] );
+ fragment.appendChild( script );
}
}
}
@@ -6422,22 +6548,6 @@ jQuery.extend({
}
});
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
- }
-
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
-
@@ -6445,29 +6555,27 @@ var ralpha = /alpha\([^)]*\)/i,
ropacity = /opacity=([^)]*)/,
// fixed for IE9, see #8346
rupper = /([A-Z]|^ms)/g,
- rnumpx = /^-?\d+(?:px)?$/i,
- rnum = /^-?\d/,
+ rnum = /^[\-+]?(?:\d*\.)?\d+$/i,
+ rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
rrelNum = /^([\-+])=([\-+.\de]+)/,
+ rmargin = /^margin/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssWidth = [ "Left", "Right" ],
- cssHeight = [ "Top", "Bottom" ],
+
+ // order is important!
+ cssExpand = [ "Top", "Right", "Bottom", "Left" ],
+
curCSS,
getComputedStyle,
currentStyle;
jQuery.fn.css = function( name, value ) {
- // Setting 'undefined' is a no-op
- if ( arguments.length === 2 && value === undefined ) {
- return this;
- }
-
- return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return jQuery.access( this, function( elem, name, value ) {
return value !== undefined ?
jQuery.style( elem, name, value ) :
jQuery.css( elem, name );
- });
+ }, name, value, arguments.length > 1 );
};
jQuery.extend({
@@ -6478,7 +6586,7 @@ jQuery.extend({
get: function( elem, computed ) {
if ( computed ) {
// We should always get a number back from opacity
- var ret = curCSS( elem, "opacity", "opacity" );
+ var ret = curCSS( elem, "opacity" );
return ret === "" ? "1" : ret;
} else {
@@ -6586,137 +6694,55 @@ jQuery.extend({
// A method for quickly swapping in/out CSS properties to get correct calculations
swap: function( elem, options, callback ) {
- var old = {};
+ var old = {},
+ ret, name;
// Remember the old values, and insert the new ones
- for ( var name in options ) {
+ for ( name in options ) {
old[ name ] = elem.style[ name ];
elem.style[ name ] = options[ name ];
}
- callback.call( elem );
+ ret = callback.call( elem );
// Revert the old values
for ( name in options ) {
elem.style[ name ] = old[ name ];
}
+
+ return ret;
}
});
-// DEPRECATED, Use jQuery.css() instead
+// DEPRECATED in 1.3, Use jQuery.css() instead
jQuery.curCSS = jQuery.css;
-jQuery.each(["height", "width"], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- var val;
-
- if ( computed ) {
- if ( elem.offsetWidth !== 0 ) {
- return getWH( elem, name, extra );
- } else {
- jQuery.swap( elem, cssShow, function() {
- val = getWH( elem, name, extra );
- });
- }
-
- return val;
- }
- },
-
- set: function( elem, value ) {
- if ( rnumpx.test( value ) ) {
- // ignore negative width and height values #1599
- value = parseFloat( value );
-
- if ( value >= 0 ) {
- return value + "px";
- }
-
- } else {
- return value;
- }
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( parseFloat( RegExp.$1 ) / 100 ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle,
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
-
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
- // style.removeAttribute is IE Only, but so apparently is this code path...
- style.removeAttribute( "filter" );
-
- // if there there is no filter style applied in a css rule, we are done
- if ( currentStyle && !currentStyle.filter ) {
- return;
- }
- }
-
- // otherwise, set new filter values
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-jQuery(function() {
- // This hook cannot be added until DOM ready because the support test
- // for it is not run until after DOM ready
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- var ret;
- jQuery.swap( elem, { "display": "inline-block" }, function() {
- if ( computed ) {
- ret = curCSS( elem, "margin-right", "marginRight" );
- } else {
- ret = elem.style.marginRight;
- }
- });
- return ret;
- }
- };
- }
-});
-
if ( document.defaultView && document.defaultView.getComputedStyle ) {
getComputedStyle = function( elem, name ) {
- var ret, defaultView, computedStyle;
+ var ret, defaultView, computedStyle, width,
+ style = elem.style;
name = name.replace( rupper, "-$1" ).toLowerCase();
if ( (defaultView = elem.ownerDocument.defaultView) &&
(computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+
ret = computedStyle.getPropertyValue( name );
if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
ret = jQuery.style( elem, name );
}
}
+ // A tribute to the "awesome hack by Dean Edwards"
+ // WebKit uses "computed value (percentage if specified)" instead of "used value" for margins
+ // which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
+ if ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {
+ width = style.width;
+ style.width = ret;
+ ret = computedStyle.width;
+ style.width = width;
+ }
+
return ret;
};
}
@@ -6729,7 +6755,7 @@ if ( document.documentElement.currentStyle ) {
// Avoid setting ret to empty string here
// so we don't default to auto
- if ( ret === null && style && (uncomputed = style[ name ]) ) {
+ if ( ret == null && style && (uncomputed = style[ name ]) ) {
ret = uncomputed;
}
@@ -6738,7 +6764,7 @@ if ( document.documentElement.currentStyle ) {
// If we're not dealing with a regular pixel number
// but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ if ( rnumnonpx.test( ret ) ) {
// Remember the original values
left = style.left;
@@ -6748,7 +6774,7 @@ if ( document.documentElement.currentStyle ) {
if ( rsLeft ) {
elem.runtimeStyle.left = elem.currentStyle.left;
}
- style.left = name === "fontSize" ? "1em" : ( ret || 0 );
+ style.left = name === "fontSize" ? "1em" : ret;
ret = style.pixelLeft + "px";
// Revert the changed values
@@ -6764,24 +6790,23 @@ if ( document.documentElement.currentStyle ) {
curCSS = getComputedStyle || currentStyle;
-function getWH( elem, name, extra ) {
+function getWidthOrHeight( elem, name, extra ) {
// Start with offset property
var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- which = name === "width" ? cssWidth : cssHeight,
- i = 0,
- len = which.length;
+ i = name === "width" ? 1 : 0,
+ len = 4;
if ( val > 0 ) {
if ( extra !== "border" ) {
- for ( ; i < len; i++ ) {
+ for ( ; i < len; i += 2 ) {
if ( !extra ) {
- val -= parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+ val -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
}
if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+ val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;
} else {
- val -= parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+ val -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
}
}
}
@@ -6790,22 +6815,28 @@ function getWH( elem, name, extra ) {
}
// Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, name );
+ val = curCSS( elem, name );
if ( val < 0 || val == null ) {
- val = elem.style[ name ] || 0;
+ val = elem.style[ name ];
}
+
+ // Computed unit is not pixels. Stop here and return.
+ if ( rnumnonpx.test(val) ) {
+ return val;
+ }
+
// Normalize "", auto, and prepare for extra
val = parseFloat( val ) || 0;
// Add padding, border, margin
if ( extra ) {
- for ( ; i < len; i++ ) {
- val += parseFloat( jQuery.css( elem, "padding" + which[ i ] ) ) || 0;
+ for ( ; i < len; i += 2 ) {
+ val += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
if ( extra !== "padding" ) {
- val += parseFloat( jQuery.css( elem, "border" + which[ i ] + "Width" ) ) || 0;
+ val += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
}
if ( extra === "margin" ) {
- val += parseFloat( jQuery.css( elem, extra + which[ i ] ) ) || 0;
+ val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;
}
}
}
@@ -6813,6 +6844,89 @@ function getWH( elem, name, extra ) {
return val + "px";
}
+jQuery.each([ "height", "width" ], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWidthOrHeight( elem, name, extra );
+ } else {
+ return jQuery.swap( elem, cssShow, function() {
+ return getWidthOrHeight( elem, name, extra );
+ });
+ }
+ }
+ },
+
+ set: function( elem, value ) {
+ return rnum.test( value ) ?
+ value + "px" :
+ value;
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
+
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
+
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
+
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
+ }
+
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
+
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ return jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ return curCSS( elem, "margin-right" );
+ } else {
+ return elem.style.marginRight;
+ }
+ });
+ }
+ };
+ }
+});
+
if ( jQuery.expr && jQuery.expr.filters ) {
jQuery.expr.filters.hidden = function( elem ) {
var width = elem.offsetWidth,
@@ -6826,6 +6940,31 @@ if ( jQuery.expr && jQuery.expr.filters ) {
};
}
+// These hooks are used by animate to expand properties
+jQuery.each({
+ margin: "",
+ padding: "",
+ border: "Width"
+}, function( prefix, suffix ) {
+
+ jQuery.cssHooks[ prefix + suffix ] = {
+ expand: function( value ) {
+ var i,
+
+ // assumes a single number if not a string
+ parts = typeof value === "string" ? value.split(" ") : [ value ],
+ expanded = {};
+
+ for ( i = 0; i < 4; i++ ) {
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+ }
+
+ return expanded;
+ }
+ };
+});
+
@@ -7144,7 +7283,7 @@ jQuery.extend({
isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
global: true,
type: "GET",
- contentType: "application/x-www-form-urlencoded",
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
processData: true,
async: true,
/*
@@ -7470,7 +7609,7 @@ jQuery.extend({
// Apply prefilters
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
- // If request was aborted inside a prefiler, stop there
+ // If request was aborted inside a prefilter, stop there
if ( state === 2 ) {
return false;
}
@@ -7643,11 +7782,11 @@ function buildParams( prefix, obj, traditional, add ) {
// a server error. Possible fixes are to modify rack's
// deserialization algorithm or to provide an option or flag
// to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
}
});
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ } else if ( !traditional && jQuery.type( obj ) === "object" ) {
// Serialize object item.
for ( var name in obj ) {
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
@@ -7843,8 +7982,7 @@ jQuery.ajaxSetup({
// Detect, normalize options and install callbacks for jsonp requests
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
- var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
- ( typeof s.data === "string" );
+ var inspectData = ( typeof s.data === "string" ) && /^application\/x\-www\-form\-urlencoded/.test( s.contentType );
if ( s.dataTypes[ 0 ] === "jsonp" ||
s.jsonp !== false && ( jsre.test( s.url ) ||
@@ -8145,7 +8283,13 @@ if ( jQuery.support.ajax ) {
if ( xml && xml.documentElement /* #4958 */ ) {
responses.xml = xml;
}
- responses.text = xhr.responseText;
+
+ // When requesting binary data, IE6-9 will throw an exception
+ // on any attempt to access responseText (#11426)
+ try {
+ responses.text = xhr.responseText;
+ } catch( _ ) {
+ }
// Firefox throws an exception when accessing
// statusText for faulty cross-domain requests
@@ -8253,7 +8397,8 @@ jQuery.fn.extend({
// Set elements which have been overridden with display: none
// in a stylesheet to whatever the default browser style is
// for such an element
- if ( display === "" && jQuery.css(elem, "display") === "none" ) {
+ if ( (display === "" && jQuery.css(elem, "display") === "none") ||
+ !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
}
}
@@ -8357,24 +8502,37 @@ jQuery.fn.extend({
var opt = jQuery.extend( {}, optall ),
isElement = this.nodeType === 1,
hidden = isElement && jQuery(this).is(":hidden"),
- name, val, p, e,
+ name, val, p, e, hooks, replace,
parts, start, end, unit,
method;
// will store per property easing and be used to determine when an animation is complete
opt.animatedProperties = {};
+ // first pass over propertys to expand / normalize
for ( p in prop ) {
-
- // property name normalization
name = jQuery.camelCase( p );
if ( p !== name ) {
prop[ name ] = prop[ p ];
delete prop[ p ];
}
- val = prop[ name ];
+ if ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {
+ replace = hooks.expand( prop[ name ] );
+ delete prop[ name ];
+ // not quite $.extend, this wont overwrite keys already present.
+ // also - reusing 'p' from above because we have the correct "name"
+ for ( p in replace ) {
+ if ( ! ( p in prop ) ) {
+ prop[ p ] = replace[ p ];
+ }
+ }
+ }
+ }
+
+ for ( name in prop ) {
+ val = prop[ name ];
// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
if ( jQuery.isArray( val ) ) {
opt.animatedProperties[ name ] = val[ 1 ];
@@ -8601,11 +8759,11 @@ jQuery.extend({
},
easing: {
- linear: function( p, n, firstNum, diff ) {
- return firstNum + diff * p;
+ linear: function( p ) {
+ return p;
},
- swing: function( p, n, firstNum, diff ) {
- return ( ( -Math.cos( p*Math.PI ) / 2 ) + 0.5 ) * diff + firstNum;
+ swing: function( p ) {
+ return ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;
}
},
@@ -8663,8 +8821,12 @@ jQuery.fx.prototype = {
t.queue = this.options.queue;
t.elem = this.elem;
t.saveState = function() {
- if ( self.options.hide && jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
- jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+ if ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
+ if ( self.options.hide ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.start );
+ } else if ( self.options.show ) {
+ jQuery._data( self.elem, "fxshow" + self.prop, self.end );
+ }
}
};
@@ -8831,12 +8993,14 @@ jQuery.extend( jQuery.fx, {
}
});
-// Adds width/height step functions
-// Do not set anything below 0
-jQuery.each([ "width", "height" ], function( i, prop ) {
- jQuery.fx.step[ prop ] = function( fx ) {
- jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
- };
+// Ensure props that can't be negative don't go there on undershoot easing
+jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {
+ // exclude marginTop, marginLeft, marginBottom and marginRight from this list
+ if ( prop.indexOf( "margin" ) ) {
+ jQuery.fx.step[ prop ] = function( fx ) {
+ jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
+ };
+ }
});
if ( jQuery.expr && jQuery.expr.filters ) {
@@ -8873,7 +9037,7 @@ function defaultDisplay( nodeName ) {
// document to it; WebKit & Firefox won't allow reusing the iframe document.
if ( !iframeDoc || !iframe.createElement ) {
iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
- iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );
iframeDoc.close();
}
@@ -8895,41 +9059,23 @@ function defaultDisplay( nodeName ) {
-var rtable = /^t(?:able|d|h)$/i,
+var getOffset,
+ rtable = /^t(?:able|d|h)$/i,
rroot = /^(?:body|html)$/i;
if ( "getBoundingClientRect" in document.documentElement ) {
- jQuery.fn.offset = function( options ) {
- var elem = this[0], box;
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
+ getOffset = function( elem, doc, docElem, box ) {
try {
box = elem.getBoundingClientRect();
} catch(e) {}
- var doc = elem.ownerDocument,
- docElem = doc.documentElement;
-
// Make sure we're not dealing with a disconnected DOM node
if ( !box || !jQuery.contains( docElem, elem ) ) {
return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
}
var body = doc.body,
- win = getWindow(doc),
+ win = getWindow( doc ),
clientTop = docElem.clientTop || body.clientTop || 0,
clientLeft = docElem.clientLeft || body.clientLeft || 0,
scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
@@ -8941,28 +9087,10 @@ if ( "getBoundingClientRect" in document.documentElement ) {
};
} else {
- jQuery.fn.offset = function( options ) {
- var elem = this[0];
-
- if ( options ) {
- return this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- if ( !elem || !elem.ownerDocument ) {
- return null;
- }
-
- if ( elem === elem.ownerDocument.body ) {
- return jQuery.offset.bodyOffset( elem );
- }
-
+ getOffset = function( elem, doc, docElem ) {
var computedStyle,
offsetParent = elem.offsetParent,
prevOffsetParent = elem,
- doc = elem.ownerDocument,
- docElem = doc.documentElement,
body = doc.body,
defaultView = doc.defaultView,
prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
@@ -9013,6 +9141,29 @@ if ( "getBoundingClientRect" in document.documentElement ) {
};
}
+jQuery.fn.offset = function( options ) {
+ if ( arguments.length ) {
+ return options === undefined ?
+ this :
+ this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ var elem = this[0],
+ doc = elem && elem.ownerDocument;
+
+ if ( !doc ) {
+ return null;
+ }
+
+ if ( elem === doc.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ return getOffset( elem, doc, doc.documentElement );
+};
+
jQuery.offset = {
bodyOffset: function( body ) {
@@ -9118,42 +9269,30 @@ jQuery.fn.extend({
// Create scrollLeft and scrollTop methods
-jQuery.each( ["Left", "Top"], function( i, name ) {
- var method = "scroll" + name;
+jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
+ var top = /Y/.test( prop );
jQuery.fn[ method ] = function( val ) {
- var elem, win;
+ return jQuery.access( this, function( elem, method, val ) {
+ var win = getWindow( elem );
- if ( val === undefined ) {
- elem = this[ 0 ];
-
- if ( !elem ) {
- return null;
+ if ( val === undefined ) {
+ return win ? (prop in win) ? win[ prop ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
}
- win = getWindow( elem );
-
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
- jQuery.support.boxModel && win.document.documentElement[ method ] ||
- win.document.body[ method ] :
- elem[ method ];
- }
-
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
-
if ( win ) {
win.scrollTo(
- !i ? val : jQuery( win ).scrollLeft(),
- i ? val : jQuery( win ).scrollTop()
+ !top ? val : jQuery( win ).scrollLeft(),
+ top ? val : jQuery( win ).scrollTop()
);
} else {
- this[ method ] = val;
+ elem[ method ] = val;
}
- });
+ }, method, val, arguments.length, null );
};
});
@@ -9169,9 +9308,10 @@ function getWindow( elem ) {
// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function( i, name ) {
-
- var type = name.toLowerCase();
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+ var clientProp = "client" + name,
+ scrollProp = "scroll" + name,
+ offsetProp = "offset" + name;
// innerHeight and innerWidth
jQuery.fn[ "inner" + name ] = function() {
@@ -9193,50 +9333,48 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
null;
};
- jQuery.fn[ type ] = function( size ) {
- // Get window width or height
- var elem = this[0];
- if ( !elem ) {
- return size == null ? null : this;
- }
+ jQuery.fn[ type ] = function( value ) {
+ return jQuery.access( this, function( elem, type, value ) {
+ var doc, docElemProp, orig, ret;
- if ( jQuery.isFunction( size ) ) {
- return this.each(function( i ) {
- var self = jQuery( this );
- self[ type ]( size.call( this, i, self[ type ]() ) );
- });
- }
+ if ( jQuery.isWindow( elem ) ) {
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ doc = elem.document;
+ docElemProp = doc.documentElement[ clientProp ];
+ return jQuery.support.boxModel && docElemProp ||
+ doc.body && doc.body[ clientProp ] || docElemProp;
+ }
- if ( jQuery.isWindow( elem ) ) {
- // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
- var docElemProp = elem.document.documentElement[ "client" + name ],
- body = elem.document.body;
- return elem.document.compatMode === "CSS1Compat" && docElemProp ||
- body && body[ "client" + name ] || docElemProp;
-
- // Get document width or height
- } else if ( elem.nodeType === 9 ) {
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- return Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- );
+ // Get document width or height
+ if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ doc = elem.documentElement;
- // Get or set width or height on the element
- } else if ( size === undefined ) {
- var orig = jQuery.css( elem, type ),
- ret = parseFloat( orig );
+ // when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]
+ // so we can't use max, as it'll choose the incorrect offset[Width/Height]
+ // instead we use the correct client[Width/Height]
+ // support:IE6
+ if ( doc[ clientProp ] >= doc[ scrollProp ] ) {
+ return doc[ clientProp ];
+ }
+
+ return Math.max(
+ elem.body[ scrollProp ], doc[ scrollProp ],
+ elem.body[ offsetProp ], doc[ offsetProp ]
+ );
+ }
- return jQuery.isNumeric( ret ) ? ret : orig;
+ // Get width or height on the element
+ if ( value === undefined ) {
+ orig = jQuery.css( elem, type );
+ ret = parseFloat( orig );
+ return jQuery.isNumeric( ret ) ? ret : orig;
+ }
- // Set the width or height on the element (default to pixels if value is unitless)
- } else {
- return this.css( type, typeof size === "string" ? size : size + "px" );
- }
+ // Set the width or height on the element
+ jQuery( elem ).css( type, value );
+ }, type, value, arguments.length, null );
};
-
});
diff --git a/doc/html/about.html b/doc/html/about.html
index c826518..8369eb1 100644
--- a/doc/html/about.html
+++ b/doc/html/about.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>About S3QL &mdash; S3QL 1.11.1 documentation</title>
+ <title>About S3QL &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="#" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Installation" href="installation.html" />
<link rel="prev" title="S3QL User’s Guide" href="index.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="index.html" title="S3QL User’s Guide"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -187,7 +187,7 @@ will, although being inconvenient, not endanger any stored data.</p>
<li class="right" >
<a href="index.html" title="S3QL User’s Guide"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/adm.html b/doc/html/adm.html
index 83f670c..ce73702 100644
--- a/doc/html/adm.html
+++ b/doc/html/adm.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Managing File Systems &mdash; S3QL 1.11.1 documentation</title>
+ <title>Managing File Systems &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Mounting" href="mount.html" />
<link rel="prev" title="File System Creation" href="mkfs.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="mkfs.html" title="File System Creation"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -124,8 +124,8 @@ specified multiple times.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
<tt class="docutils literal"><span class="pre">none</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--authfile <var>&lt;path&gt;</var></span></kbd></td>
@@ -218,7 +218,7 @@ for help on the mailing list first (see <a class="reference internal" href="reso
<li class="right" >
<a href="mkfs.html" title="File System Creation"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/authinfo.html b/doc/html/authinfo.html
index f4b7a58..56c121b 100644
--- a/doc/html/authinfo.html
+++ b/doc/html/authinfo.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Storing Authentication Information &mdash; S3QL 1.11.1 documentation</title>
+ <title>Storing Authentication Information &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Contributed Programs" href="contrib.html" />
<link rel="prev" title="Checking for Errors" href="fsck.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="fsck.html" title="Checking for Errors"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -165,7 +165,7 @@ module</a>.</p>
<li class="right" >
<a href="fsck.html" title="Checking for Errors"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/backends.html b/doc/html/backends.html
index 9706bd8..87f73d4 100644
--- a/doc/html/backends.html
+++ b/doc/html/backends.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Storage Backends &mdash; S3QL 1.11.1 documentation</title>
+ <title>Storage Backends &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Important Rules to Avoid Losing Data" href="durability.html" />
<link rel="prev" title="Installation" href="installation.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="installation.html" title="Installation"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -272,7 +272,7 @@ storage url <tt class="docutils literal"><span class="pre">local:///home/john/s3
<li class="right" >
<a href="installation.html" title="Installation"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/contrib.html b/doc/html/contrib.html
index 7819367..68a6978 100644
--- a/doc/html/contrib.html
+++ b/doc/html/contrib.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Contributed Programs &mdash; S3QL 1.11.1 documentation</title>
+ <title>Contributed Programs &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Tips &amp; Tricks" href="tips.html" />
<link rel="prev" title="Storing Authentication Information" href="authinfo.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="authinfo.html" title="Storing Authentication Information"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -231,7 +231,7 @@ start, and properly unmounts it when the system is shut down.</p>
<li class="right" >
<a href="authinfo.html" title="Storing Authentication Information"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/durability.html b/doc/html/durability.html
index 1b5292f..733a5bc 100644
--- a/doc/html/durability.html
+++ b/doc/html/durability.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Important Rules to Avoid Losing Data &mdash; S3QL 1.11.1 documentation</title>
+ <title>Important Rules to Avoid Losing Data &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="File System Creation" href="mkfs.html" />
<link rel="prev" title="Storage Backends" href="backends.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="backends.html" title="Storage Backends"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -343,7 +343,7 @@ over long periods of time.</p>
<li class="right" >
<a href="backends.html" title="Storage Backends"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/fsck.html b/doc/html/fsck.html
index a0ce2af..33ed852 100644
--- a/doc/html/fsck.html
+++ b/doc/html/fsck.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Checking for Errors &mdash; S3QL 1.11.1 documentation</title>
+ <title>Checking for Errors &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Storing Authentication Information" href="authinfo.html" />
<link rel="prev" title="Unmounting" href="umount.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="umount.html" title="Unmounting"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -105,8 +105,8 @@ or if you suspect that there might be errors, you should run the
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
<tt class="docutils literal"><span class="pre">~/.s3ql/fsck.log</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--cachedir <var>&lt;path&gt;</var></span></kbd></td>
@@ -161,7 +161,7 @@ option is not set.</td></tr>
<li class="right" >
<a href="umount.html" title="Unmounting"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/impl_details.html b/doc/html/impl_details.html
index 4d85c47..defe552 100644
--- a/doc/html/impl_details.html
+++ b/doc/html/impl_details.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Implementation Details &mdash; S3QL 1.11.1 documentation</title>
+ <title>Implementation Details &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="prev" title="Further Resources / Getting Help" href="resources.html" />
</head>
<body>
@@ -36,7 +36,7 @@
<li class="right" style="margin-right: 10px">
<a href="resources.html" title="Further Resources / Getting Help"
accesskey="P">previous</a></li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -216,7 +216,7 @@ new S3 object.</p>
<li class="right" style="margin-right: 10px">
<a href="resources.html" title="Further Resources / Getting Help"
>previous</a></li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/index.html b/doc/html/index.html
index d036122..db8dbd5 100644
--- a/doc/html/index.html
+++ b/doc/html/index.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>S3QL User’s Guide &mdash; S3QL 1.11.1 documentation</title>
+ <title>S3QL User’s Guide &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="#" />
+ <link rel="top" title="S3QL 1.12 documentation" href="#" />
<link rel="next" title="About S3QL" href="about.html" />
</head>
<body>
@@ -36,7 +36,7 @@
<li class="right" style="margin-right: 10px">
<a href="about.html" title="About S3QL"
accesskey="N">next</a></li>
- <li><a href="#">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="#">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -196,7 +196,7 @@
<li class="right" style="margin-right: 10px">
<a href="about.html" title="About S3QL"
>next</a></li>
- <li><a href="#">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="#">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/installation.html b/doc/html/installation.html
index 1345c4c..ba75f56 100644
--- a/doc/html/installation.html
+++ b/doc/html/installation.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Installation &mdash; S3QL 1.11.1 documentation</title>
+ <title>Installation &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Storage Backends" href="backends.html" />
<link rel="prev" title="About S3QL" href="about.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="about.html" title="About S3QL"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -186,7 +186,7 @@ have to run <tt class="docutils literal"><span class="pre">sudo</span> <span cla
<li class="right" >
<a href="about.html" title="About S3QL"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/issues.html b/doc/html/issues.html
index aabff7e..295a45c 100644
--- a/doc/html/issues.html
+++ b/doc/html/issues.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Known Issues &mdash; S3QL 1.11.1 documentation</title>
+ <title>Known Issues &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Manpages" href="man/index.html" />
<link rel="prev" title="Tips &amp; Tricks" href="tips.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="tips.html" title="Tips &amp; Tricks"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -96,9 +96,9 @@ man-in-the-middle attack is principally possible. See <a class="reference extern
details.</p>
</li>
<li><p class="first">S3QL is rather slow when an application tries to write data in
-unreasonably small chunks. If a 1 MB file is copied in chunks of 1
+unreasonably small chunks. If a 1 MiB file is copied in chunks of 1
KB, this will take more than 10 times as long as when it&#8217;s copied
-with the (recommended) chunk size of 128 KB.</p>
+with the (recommended) chunk size of 128 KiB.</p>
<p>This is a limitation of the FUSE library (which does not yet support
write caching) which will hopefully be addressed in some future FUSE
version.</p>
@@ -167,7 +167,7 @@ the backend.</p>
<li class="right" >
<a href="tips.html" title="Tips &amp; Tricks"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/man/adm.html b/doc/html/man/adm.html
index 9d6a42e..d4f473d 100644
--- a/doc/html/man/adm.html
+++ b/doc/html/man/adm.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qladm command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qladm command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The mount.s3ql command" href="mount.html" />
<link rel="prev" title="The mkfs.s3ql command" href="mkfs.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="mkfs.html" title="The mkfs.s3ql command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -142,8 +142,8 @@ specified multiple times.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
<tt class="docutils literal"><span class="pre">none</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--authfile <var>&lt;path&gt;</var></span></kbd></td>
@@ -212,7 +212,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="mkfs.html" title="The mkfs.s3ql command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/cp.html b/doc/html/man/cp.html
index 198322c..9d9b966 100644
--- a/doc/html/man/cp.html
+++ b/doc/html/man/cp.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qlcp command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qlcp command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qlrm command" href="rm.html" />
<link rel="prev" title="The s3qlctrl command" href="ctrl.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="ctrl.html" title="The s3qlctrl command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -212,7 +212,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="ctrl.html" title="The s3qlctrl command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/ctrl.html b/doc/html/man/ctrl.html
index 41875b2..69bfbb8 100644
--- a/doc/html/man/ctrl.html
+++ b/doc/html/man/ctrl.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qlctrl command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qlctrl command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qlcp command" href="cp.html" />
<link rel="prev" title="The s3qlstat command" href="stat.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="stat.html" title="The s3qlstat command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -132,7 +132,7 @@ removed in the future (see <a class="reference external" href="http://code.googl
block while a snapshot of the metadata is prepared for upload.</dd>
<dt>cachesize</dt>
<dd><p class="first">Changes the cache size of the file system. This action requires an
-additional argument that specifies the new cache size in kB, so the
+additional argument that specifies the new cache size in KiB, so the
complete command line is:</p>
<div class="last highlight-commandline"><div class="highlight"><pre><span class="l">s3qlctrl </span><span class="ge">[options]</span><span class="l"> cachesize </span><span class="nv">&lt;mountpoint&gt;</span><span class="l"> </span><span class="nv">&lt;new-cache-size&gt;</span><span class="l"></span>
</pre></div>
@@ -203,7 +203,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="stat.html" title="The s3qlstat command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/expire_backups.html b/doc/html/man/expire_backups.html
index c8f6f43..4e15b2c 100644
--- a/doc/html/man/expire_backups.html
+++ b/doc/html/man/expire_backups.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The expire_backups command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The expire_backups command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="Further Resources / Getting Help" href="../resources.html" />
<link rel="prev" title="The pcp command" href="pcp.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="pcp.html" title="The pcp command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -233,7 +233,7 @@ error occured.</p>
<li class="right" >
<a href="pcp.html" title="The pcp command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/fsck.html b/doc/html/man/fsck.html
index f922930..4bc9d8f 100644
--- a/doc/html/man/fsck.html
+++ b/doc/html/man/fsck.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The fsck.s3ql command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The fsck.s3ql command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The pcp command" href="pcp.html" />
<link rel="prev" title="The umount.s3ql command" href="umount.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="umount.html" title="The umount.s3ql command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -131,8 +131,8 @@ available backends.</p>
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable logging. Default:
<tt class="docutils literal"><span class="pre">~/.s3ql/fsck.log</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--cachedir <var>&lt;path&gt;</var></span></kbd></td>
@@ -200,7 +200,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="umount.html" title="The umount.s3ql command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/index.html b/doc/html/man/index.html
index 3225f48..9c0354b 100644
--- a/doc/html/man/index.html
+++ b/doc/html/man/index.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Manpages &mdash; S3QL 1.11.1 documentation</title>
+ <title>Manpages &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="next" title="The mkfs.s3ql command" href="mkfs.html" />
<link rel="prev" title="Known Issues" href="../issues.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="../issues.html" title="Known Issues"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -140,7 +140,7 @@ here in the User&#8217;s Guide.</p>
<li class="right" >
<a href="../issues.html" title="Known Issues"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/man/lock.html b/doc/html/man/lock.html
index 79b929f..0358009 100644
--- a/doc/html/man/lock.html
+++ b/doc/html/man/lock.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qllock command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qllock command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The umount.s3ql command" href="umount.html" />
<link rel="prev" title="The s3qlrm command" href="rm.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="rm.html" title="The s3qlrm command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -203,7 +203,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="rm.html" title="The s3qlrm command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/mkfs.html b/doc/html/man/mkfs.html
index d164700..f7aac4f 100644
--- a/doc/html/man/mkfs.html
+++ b/doc/html/man/mkfs.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The mkfs.s3ql command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The mkfs.s3ql command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qladm command" href="adm.html" />
<link rel="prev" title="Manpages" href="index.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="index.html" title="Manpages"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -165,9 +165,9 @@ option is not set.</td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--max-obj-size <var>&lt;size&gt;</var></span></kbd></td>
</tr>
-<tr><td>&nbsp;</td><td>Maximum size of storage objects in KB. Files bigger
+<tr><td>&nbsp;</td><td>Maximum size of storage objects in KiB. Files bigger
than this will be spread over multiple objects in the
-storage backend. Default: 10240 KB.</td></tr>
+storage backend. Default: 10240 KiB.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--plain</span></kbd></td>
<td>Create unencrypted file system.</td></tr>
@@ -207,7 +207,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="index.html" title="Manpages"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/mount.html b/doc/html/man/mount.html
index 773be71..23b3076 100644
--- a/doc/html/man/mount.html
+++ b/doc/html/man/mount.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The mount.s3ql command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The mount.s3ql command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qlstat command" href="stat.html" />
<link rel="prev" title="The s3qladm command" href="adm.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="adm.html" title="The s3qladm command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -130,7 +130,7 @@ description of the available backends.</p>
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be
-rotated when it reaches 1 MB, and at most 5 old log
+rotated when it reaches 1 MiB, and at most 5 old log
files will be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable
logging. Default: <tt class="docutils literal"><span class="pre">~/.s3ql/mount.log</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
@@ -164,8 +164,8 @@ option is not set.</td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--cachesize <var>&lt;size&gt;</var></span></kbd></td>
</tr>
-<tr><td>&nbsp;</td><td>Cache size in kb (default: 102400 (100 MB)). Should be
-at least 10 times the maximum object size of the
+<tr><td>&nbsp;</td><td>Cache size in KiB (default: 102400 (100 MiB)). Should
+be at least 10 times the maximum object size of the
filesystem, otherwise an object may be retrieved and
written several times during a single write() or
read() operation.</td></tr>
@@ -178,13 +178,6 @@ you increase this number you have to make sure that
your process file descriptor limit (as set with
<tt class="docutils literal"><span class="pre">ulimit</span> <span class="pre">-n</span></tt>) is high enough (at least the number of
cache entries + 100).</td></tr>
-<tr><td class="option-group" colspan="2">
-<kbd><span class="option">--min-obj-size <var>&lt;size&gt;</var></span></kbd></td>
-</tr>
-<tr><td>&nbsp;</td><td>Minimum size of storage objects in KB. Files smaller
-than this may be combined into groups that are stored
-as single objects in the storage backend. Default: 512
-KB.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--allow-other</span></kbd></td>
<td>Normally, only the user who called <tt class="docutils literal"><span class="pre">mount.s3ql</span></tt> can
@@ -265,7 +258,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="adm.html" title="The s3qladm command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/pcp.html b/doc/html/man/pcp.html
index f00e519..8127b12 100644
--- a/doc/html/man/pcp.html
+++ b/doc/html/man/pcp.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The pcp command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The pcp command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The expire_backups command" href="expire_backups.html" />
<link rel="prev" title="The fsck.s3ql command" href="fsck.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="fsck.html" title="The fsck.s3ql command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -176,7 +176,7 @@ error occured.</p>
<li class="right" >
<a href="fsck.html" title="The fsck.s3ql command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/rm.html b/doc/html/man/rm.html
index cb56faf..818d1a3 100644
--- a/doc/html/man/rm.html
+++ b/doc/html/man/rm.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qlrm command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qlrm command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qllock command" href="lock.html" />
<link rel="prev" title="The s3qlcp command" href="cp.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="cp.html" title="The s3qlcp command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -176,7 +176,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="cp.html" title="The s3qlcp command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/stat.html b/doc/html/man/stat.html
index ebfca95..269f602 100644
--- a/doc/html/man/stat.html
+++ b/doc/html/man/stat.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The s3qlstat command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The s3qlstat command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The s3qlctrl command" href="ctrl.html" />
<link rel="prev" title="The mount.s3ql command" href="mount.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="mount.html" title="The mount.s3ql command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -171,7 +171,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="mount.html" title="The mount.s3ql command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/man/umount.html b/doc/html/man/umount.html
index 524c62f..3571d60 100644
--- a/doc/html/man/umount.html
+++ b/doc/html/man/umount.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>The umount.s3ql command &mdash; S3QL 1.11.1 documentation</title>
+ <title>The umount.s3ql command &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="../_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="author" title="About these documents" href="../about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="../index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="../index.html" />
<link rel="up" title="Manpages" href="index.html" />
<link rel="next" title="The fsck.s3ql command" href="fsck.html" />
<link rel="prev" title="The s3qllock command" href="lock.html" />
@@ -41,7 +41,7 @@
<li class="right" >
<a href="lock.html" title="The s3qllock command"
accesskey="P">previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Manpages</a> &raquo;</li>
</ul>
</div>
@@ -181,7 +181,7 @@ system, common locations are <tt class="file docutils literal"><span class="pre"
<li class="right" >
<a href="lock.html" title="The s3qllock command"
>previous</a> |</li>
- <li><a href="../index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="../index.html">S3QL 1.12 documentation</a> &raquo;</li>
<li><a href="index.html" >Manpages</a> &raquo;</li>
</ul>
</div>
diff --git a/doc/html/mkfs.html b/doc/html/mkfs.html
index c788c11..984395e 100644
--- a/doc/html/mkfs.html
+++ b/doc/html/mkfs.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>File System Creation &mdash; S3QL 1.11.1 documentation</title>
+ <title>File System Creation &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Managing File Systems" href="adm.html" />
<link rel="prev" title="Important Rules to Avoid Losing Data" href="durability.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="durability.html" title="Important Rules to Avoid Losing Data"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -135,9 +135,9 @@ option is not set.</td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--max-obj-size <var>&lt;size&gt;</var></span></kbd></td>
</tr>
-<tr><td>&nbsp;</td><td>Maximum size of storage objects in KB. Files bigger
+<tr><td>&nbsp;</td><td>Maximum size of storage objects in KiB. Files bigger
than this will be spread over multiple objects in the
-storage backend. Default: 10240 KB.</td></tr>
+storage backend. Default: 10240 KiB.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--plain</span></kbd></td>
<td>Create unencrypted file system.</td></tr>
@@ -168,7 +168,7 @@ option to prevent accidental creation of an encrypted file system.</p>
<li class="right" >
<a href="durability.html" title="Important Rules to Avoid Losing Data"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/mount.html b/doc/html/mount.html
index fc7dd04..1b5d0c3 100644
--- a/doc/html/mount.html
+++ b/doc/html/mount.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Mounting &mdash; S3QL 1.11.1 documentation</title>
+ <title>Mounting &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Advanced S3QL Features" href="special.html" />
<link rel="prev" title="Managing File Systems" href="adm.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="adm.html" title="Managing File Systems"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -115,7 +115,7 @@ mounted on one computer at a time.</p>
<tr><td class="option-group">
<kbd><span class="option">--log <var>&lt;target&gt;</var></span></kbd></td>
<td>Write logging info into this file. File will be
-rotated when it reaches 1 MB, and at most 5 old log
+rotated when it reaches 1 MiB, and at most 5 old log
files will be kept. Specify <tt class="docutils literal"><span class="pre">none</span></tt> to disable
logging. Default: <tt class="docutils literal"><span class="pre">~/.s3ql/mount.log</span></tt></td></tr>
<tr><td class="option-group" colspan="2">
@@ -149,8 +149,8 @@ option is not set.</td></tr>
<tr><td class="option-group" colspan="2">
<kbd><span class="option">--cachesize <var>&lt;size&gt;</var></span></kbd></td>
</tr>
-<tr><td>&nbsp;</td><td>Cache size in kb (default: 102400 (100 MB)). Should be
-at least 10 times the maximum object size of the
+<tr><td>&nbsp;</td><td>Cache size in KiB (default: 102400 (100 MiB)). Should
+be at least 10 times the maximum object size of the
filesystem, otherwise an object may be retrieved and
written several times during a single write() or
read() operation.</td></tr>
@@ -163,13 +163,6 @@ you increase this number you have to make sure that
your process file descriptor limit (as set with
<tt class="docutils literal"><span class="pre">ulimit</span> <span class="pre">-n</span></tt>) is high enough (at least the number of
cache entries + 100).</td></tr>
-<tr><td class="option-group" colspan="2">
-<kbd><span class="option">--min-obj-size <var>&lt;size&gt;</var></span></kbd></td>
-</tr>
-<tr><td>&nbsp;</td><td>Minimum size of storage objects in KB. Files smaller
-than this may be combined into groups that are stored
-as single objects in the storage backend. Default: 512
-KB.</td></tr>
<tr><td class="option-group">
<kbd><span class="option">--allow-other</span></kbd></td>
<td>Normally, only the user who called <tt class="docutils literal"><span class="pre">mount.s3ql</span></tt> can
@@ -402,7 +395,7 @@ mounted.</li>
<li class="right" >
<a href="adm.html" title="Managing File Systems"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/objects.inv b/doc/html/objects.inv
index c484b7e..1059f88 100644
--- a/doc/html/objects.inv
+++ b/doc/html/objects.inv
Binary files differ
diff --git a/doc/html/resources.html b/doc/html/resources.html
index 8a6b2da..f61734e 100644
--- a/doc/html/resources.html
+++ b/doc/html/resources.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Further Resources / Getting Help &mdash; S3QL 1.11.1 documentation</title>
+ <title>Further Resources / Getting Help &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Implementation Details" href="impl_details.html" />
<link rel="prev" title="The expire_backups command" href="man/expire_backups.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="man/expire_backups.html" title="The expire_backups command"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -117,7 +117,7 @@ can subscribe by sending a mail to
<li class="right" >
<a href="man/expire_backups.html" title="The expire_backups command"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/search.html b/doc/html/search.html
index 0cd7b18..74c8736 100644
--- a/doc/html/search.html
+++ b/doc/html/search.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Search &mdash; S3QL 1.11.1 documentation</title>
+ <title>Search &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -27,7 +27,7 @@
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
@@ -38,7 +38,7 @@
<div class="related">
<h3>Navigation</h3>
<ul>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -105,7 +105,7 @@
<div class="related">
<h3>Navigation</h3>
<ul>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js
index 7fb2047..923db9e 100644
--- a/doc/html/searchindex.js
+++ b/doc/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({objects:{},terms:{suffici:1,all:[0,1,2,3,5,7,8,11,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29],code:[8,18,0,24,11,25,10,27,23,3,4,28,6,21],partial:1,queri:1,global:[],mnt:[5,15,29],month:[5,27],secondli:1,prefix:[12,13],stumbl:14,notquitesecret:12,follow:[0,1,2,3,4,5,6,7,8,10,11,12,14,15,16,17,18,20,21,24,25,26,27,28,29],disk:[15,23,1],millisecond:22,whose:13,decid:15,middl:14,depend:[8,9,24,1,25,27,13,3,5,15,21,29],million:[],ulimit:[29,21],readabl:23,send:[29,22,17],rel:[13,4],init:[29,14],program:[0,2,3,4,5,6,7,8,9,10,11,14,16,18,20,21,24,25,26,27,28,29],those:[13,22],under:[13,24],aris:[],sha256:[23,22],neglig:[],worth:14,introduc:[18,7],sourc:[18,23,24,1,13,4,5,7],everi:[18,0,1,27,12,13,5,15,22,7],risk:[],mkf:[8,9,19,25,2,22],far:[15,1],nonc:22,subcommand:16,account:[21,13,29,22],util:[15,20],pycryptopp:24,failur:1,veri:[23,13,22,14,1],appar:13,tri:[16,22,14],administr:[0,7],level:[28,7],did:23,who:[11,29,21,22,26],cmd:[],list:[9,23,24,1,27,28,13,17,5,16,7],upload:[23,1,11,29,26,28,14,5,15,21,22,7],"try":[24,1,27,12,13,5],larg:[18,15,7,14],stderr:29,small:[15,22,14],blocksiz:[],mount:[18,9,0,21,19,1,11,29,10,26,28,13,7,3,5,6,15,16,22,14],dir:[18,29],pleas:[23,17],upper:1,smaller:[23,1,29,15,21,14],slower:[18,29,7],ifac:29,ten:13,whitespac:[],bucketnam:13,compens:1,sync:4,sign:13,consequ:1,hors:[0,7],design:[0,23,7,1],pass:[4,1],download:[16,24,22,3],further:[9,16,17],otherwis:[29,21,22],myusernam:29,port:13,append:22,rath:29,even:[8,0,21,1,11,25,26,20,2,13,3,16,29,7],what:[5,27,16,28,1],bzip2:[23,21,29],sub:[22,14],entir:[23,0,10,7,22],descriptor:[29,21],section:[12,13,22,1],abl:[0,1,11,26,13,7,17],invok:[28,16],asia:[],find:[0,29,7,14,1],access:[23,21,1,29,12,13,16,22,14],delet:[9,0,1,10,27,3,5,16,7],version:[0,1,2,3,4,6,14,8,10,11,16,18,20,21,22,23,24,25,26,27,28,29],suspect:20,consecut:13,"new":[8,0,21,1,25,29,27,28,5,16,22,7],net:[29,24],ever:1,"public":[],contrast:[0,7,1],metadata:[9,21,29,3,28,15,16,22,7],elimin:1,full:[8,18,0,1,11,25,10,28,23,3,5,6,21,29,7],themselv:12,absolut:[5,27,13],pacif:[],gener:[0,24,1,27,14,5,16,22,7],never:1,privat:[],here:[28,13,19],satisfi:24,explicitli:14,modif:14,address:14,path:[8,21,24,25,20,2,13,3,16,29],becom:[1,27,12,13,5,15,22],modifi:[18,23,22,7],sinc:[1,29,27,5,22,14],valu:[12,21,29,14],wait:[1,11,29,26,15,22,14],dry:27,convert:13,joes_bucket:[],ctr:22,checksum:[23,22],larger:1,step:5,precis:22,prior:1,amount:[28,15,13,23],throughput:[],pick:1,action:[28,16,7,3],opinion:13,implement:[9,22,1],magnitud:[18,7],chanc:1,obei:1,control:[13,7],fstab:[29,14],commun:13,appli:[12,15,1],modul:[8,21,24,25,20,2,12,13,3,28,16,29],cif:29,apw:24,filenam:15,unix:[23,15,22,14],api:13,visibl:1,marker:22,instal:[8,9,0,21,19,24,18,11,25,10,28,3,5,6,16],total:[29,7],establish:1,cloud:13,rackspacecloud:13,from:[8,18,0,21,24,1,25,23,20,27,2,12,13,29,3,4,5,15,16,22,7],describ:[13,1],would:[5,18,12,27,7],apswvers:24,usernam:12,upgrad:[9,16,3],implic:22,few:[5,24,1],live:13,concret:[],call:[18,0,1,29,10,27,28,5,6,15,21,7],usr:[8,18,0,11,25,10,28,3,5,6,21],recommend:[5,29,13,14],taken:[18,23,21,29,7],tape:[0,7],bill:12,type:[],until:[11,29,7,14,26],more:[23,24,1,14,4,28,22,7],sort:[5,27],desir:28,st_nlink:14,src:[18,7],peopl:13,hundr:[],relat:[],benchmark:[5,9,29],"19283712_yourname_s3ql":[],notic:[15,1],enhanc:5,warn:[28,16,10,13,7],sqlitelibvers:[],agent:13,sens:15,known:[9,23,13,14],obj:[2,25,21,29],compani:13,hold:13,unpack:24,cach:[8,9,23,21,25,29,20,2,14,3,28,16,22,7],must:[18,24,1,13,3,16,7],worst:[0,7],none:[8,21,1,29,20,3,16],word:[],sometim:16,hour:1,restor:[18,9,15,16,7],dest:18,setup:24,work:[23,24,1,26,27,5,15,22,14],uniqu:[12,13],dev:22,conceptu:23,remain:[29,22,1],wors:1,obvious:29,can:[0,1,2,3,5,6,7,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],learn:1,about:[9,23,1,29,13,6,15,22,7],root:[18,0,11,29,10,26,28,6,21,7],fetch:[18,22,7],overrid:1,claim:[13,1],sqlite:[24,22],prompt:[8,20],tar:15,give:[5,16,15,13,27],process:[1,11,29,26,4,5,15,21,14],lock:[0,7],sudo:24,share:[8,18,0,24,11,25,10,28,3,5,6,21,22],calcul:22,accept:[8,18,0,21,1,11,25,10,26,20,27,2,12,3,4,28,6,16,29],high:[23,1,29,13,4,21],critic:23,minimum:[15,21,29,23],want:[11,29,26,27,5,15,17],onlin:[0,13,23,7],unfortun:[15,13,14,1],occur:[8,18,0,1,11,25,10,27,3,4,28,6,21],ratio:29,concept:22,alwai:[8,18,21,1,25,29,20,27,2,13,7,3,5,16,22,14],cours:1,end:[29,16,22,1],turn:[5,27,29,14],rather:[1,27,14,5,15,7],anoth:1,ordinari:[18,11,26,7,1],write:[8,9,23,21,24,1,18,29,20,13,7,3,5,15,16,22,14],how:[5,27,15,22,1],manpag:[9,19],actual:[24,1,13,15,16,22],env:29,webpag:13,verifi:[13,14],simpl:[5,27,7],overwrit:[2,25],updat:[5,23,22,14,1],map:22,product:[],faq:17,resourc:[9,16,17],max:[2,25,21,29],earlier:[14,1],pyliblzma:24,reflect:22,badli:[16,3],wrong:[16,13,3],endang:23,mai:[18,0,21,24,1,29,17,23,26,28,13,7,3,5,15,16,14],multipl:[8,16,25,20,2,3,21,29],redund:[5,27,23,13,1],secondari:[],data:[8,9,23,21,1,18,11,25,29,26,20,2,13,7,3,5,28,15,16,22,14],grow:[23,29],physic:[5,18,0,16,7],man:[19,14],circumst:1,"short":[0,7],attempt:[8,29,14,1],practic:[15,13],third:15,neitheristhi:12,author:[29,14],favorit:[],apsw:24,element:29,issu:[18,9,0,24,29,17,10,23,13,7,28,6,14],inform:[9,1,29,27,12,13,28,21,22,7],maintain:29,combin:[15,13,29,21],allow:[8,18,0,21,25,10,20,27,2,13,29,3,4,5,6,15,16,28,7],enter:[2,25,22],exclus:15,volum:29,order:[18,12,7,1],talk:13,oper:[8,18,0,21,1,11,25,10,27,29,23,3,4,28,6,16,22],frontend:13,help:[9,24,17,28,13,14,3,5,16,7],east:[],over:[18,23,1,25,29,2,13,15,21,22,7],move:[23,16],soon:[],fifo:22,topsecret:[],increas:[1,29,13,15,21,22],affect:[18,29,7,14,1],effici:14,still:[18,23,1,11,29,26,22,7],dynam:[23,24],paramet:12,group:[29,21],s3qlctrl:[28,9,15,19,7],chosen:1,rogerbinn:24,fix:[0,1,27,14,5,7],inadvert:[18,7],better:[29,4,24,1],window:[9,1],html:22,restart:[29,14],persist:[],mail:[23,16,24,17],main:[10,7],might:[18,0,17,10,20,14,28,6,22,7],documents_januari:[18,7],them:[18,1,11,26,16,22,7],good:[0,27,14,5,15,7],synopsi:[8,18,0,11,25,10,27,3,4,28,6,21],thei:[18,0,19,23,27,5,15,22,7],python:[29,12,24,22],promin:14,safe:[18,15,7,1],fuse4bsd:24,dai:[5,27],initi:[],dat:[5,27],promis:1,terminolog:[],therebi:1,instead:[18,1,11,26,12,14,22,7],interrupt:16,potenti:1,now:[5,27,0,24,7],bigger:[2,25],choic:[24,1],term:[5,27],"__version__":24,somewher:[8,18,0,11,25,10,3,28,6,21,7],name:[18,25,29,27,2,12,13,5,15,21,22,7],joesdomain:[],crypto:22,authent:[8,9,21,25,20,2,12,13,3,16,29],easili:22,achiev:[18,23,1,29,5,7],exampl:[23,1,27,12,14,5,15,22,7],mode:[29,21,22,1],timeout:29,each:[29,27,12,5,21,22],debug:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],found:[12,15],beneath:7,confid:[],side:[],mean:[23,14,1],compil:29,just:[8,18,0,21,1,11,25,10,26,20,27,2,3,4,28,6,15,16,29,7],s3ql:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],due:[13,14],mkfifo:29,chunk:14,hard:[15,23,1],idea:[5,27,0,7,14],procedur:[18,22,7],realli:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,15,16,29,14],consum:1,contrib:[5,15,29],meta:[28,15,7],"static":24,significantli:[5,24,1],year:[5,27,23,13,1],s3_copi:[5,9],happen:[0,7,1],myfsdata:15,todo:[],special:[18,22,7],out:[23,13,14,1],lzma:[29,23,21,24,22],ftp:[],shown:13,network:[18,23,1,29,15,22,7],space:[18,23,7,14],open:[11,29,13,26],newli:1,utc:22,log_fifo:29,content:[18,23,1,29,0,22,7],cloudfil:[9,13,1],rise:1,suitabl:[23,24],rational:0,internet:[23,29],print:[8,18,0,21,24,11,25,10,26,20,27,2,3,4,28,6,16,29],eth0:29,bla:29,correct:[5,27],common:[8,18,0,11,25,10,3,28,6,21,7],foreground:[29,21],shut:[5,11,29,26,14],after:[18,0,1,23,13,15,16,7],insid:18,advanc:[9,7],migrat:5,documents_janurai:[],manipul:23,situat:[15,1],given:[22,14],free:[23,13],standard:[23,1,29,27,13,5,22],inod:22,reason:[10,1,29,26,20,27,13,14,5,15,7],base:29,theori:1,usual:[29,22],ask:[24,1,25,2,13,16,14],org:[29,22],"byte":[],likelihood:1,afterward:[15,22],bash:15,care:[18,23,7,14],sigkil:29,her:[0,7],thread:[5,29,21],befor:[18,23,1,11,29,26,13,14,22,7],could:[18,7],success:[],refus:[5,27],keep:[5,27,0,7,1],recov:[0,7],thing:[16,3],length:1,rais:[29,21],place:29,perman:[9,0,1,29,15,7],pycrypto:24,principl:29,confus:14,neglect:1,first:[23,24,1,29,12,13,15,16,22,14],origin:[],softwar:29,rang:[5,27],fs3:12,becaus:[18,23,1,29,5,22,7],directli:[13,22],malici:[0,7],carri:23,onc:[0,11,29,23,26,13,15,21,22,7],clariti:[],s3q:[],number:[23,24,1,29,27,14,4,5,15,21,22,7],capac:23,restrict:[28,29,21],date:[5,27],instruct:24,alreadi:[18,24,13,14,22,7],done:[29,22,1],wrapper:[5,4],llfuse:24,indistinguish:23,agre:22,miss:[27,1],s3c:13,size:[23,25,29,2,14,28,15,21,22,7],differ:[18,23,24,1,29,28,13,3,5,15,16,7],convent:14,script:[5,15,29,14],profil:[29,21],unknown:23,interact:3,s3qllock:[9,0,19,10,5,15,7],system:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29],least:[24,1,29,27,5,21,22],parallel:[5,15,21,29,4],checkpoint:1,attack:[0,7,14],necessarili:1,master:22,demonstr:5,statement:13,similarli:[],s3qlrm:[9,0,19,10,27,5,7],termin:[11,12,26,14],lost:[13,1],john:13,"final":[22,7],store:[8,9,23,21,1,25,29,20,27,2,12,13,3,5,15,16,22],low:[23,13],servi:[],luckili:[],consol:13,option:[0,1,2,3,4,5,6,7,8,10,11,14,15,16,18,20,21,24,25,26,27,28,29],especi:[15,13,23],shelf:[0,7],tool:13,copi:[18,9,23,1,14,4,5,15,16,22,7],inaccess:1,specifi:[8,21,25,29,20,27,2,12,13,3,5,28,16,22,14],arbitrari:[15,13],part:[23,29,27,4,5,22],pars:12,mostli:[],consult:[8,25,21,3],exactli:[5,18,27,7],haven:[],wide:[29,13,24],downright:13,target:[8,18,21,29,20,3,15,16,7],cachedir:[8,21,1,25,20,2,3,16,29],whenev:[29,12,24,15],prevent:[2,0,25,7,1],remov:[18,9,0,29,10,27,28,7,5,6,22,14],eleg:23,tree:[18,9,0,10,4,5,23,22,7],second:[1,29,27,12,5,15,21,22],structur:[23,16],charact:22,project:13,matter:[28,15,16],temporarili:29,friend:15,posit:22,video:29,minut:[5,27],led:12,typic:[18,7,1],pre:29,unencrypt:[2,25],sai:[18,7,1],comput:[23,1,29,27,5,22],entail:[],januari:[18,13,7],plaintext:[],explicit:15,ram:[],mind:1,argument:[28,16,3],correspond:13,"13th":23,packag:[5,24],expir:29,increment:[],disadvantag:[18,7],need:[18,21,24,1,29,27,13,5,16,22,7],seem:[15,13],exclud:[0,7],paramiko:[],caus:[13,1],engin:13,techniqu:1,equival:[5,27],min:[29,21],irrepar:16,destroi:[0,7],moreov:7,blindli:14,atim:14,accuraci:[5,27],note:[18,9,23,24,1,11,29,26,27,13,7,4,5,15,16,14],also:[0,1,3,4,5,6,7,8,10,11,12,13,15,18,19,21,22,23,24,25,26,27,28,29],builtin:[],denomin:[],take:[18,23,1,14,3,28,15,16,22,7],which:[18,10,24,1,23,27,12,14,5,22,7],discrep:[],transmit:[],environ:[13,24],uplink:5,singl:[15,21,29,1],swordfish:12,mktemp:29,begin:[12,22],sure:[21,24,29,13,15,16,22,14],importantli:[],distribut:[5,29,24,1],plenti:[],normal:[12,13,29,21],multipli:[],previou:[5,16],compress:[9,23,29,5,21,22,7],discov:1,most:[8,18,21,1,29,20,27,12,13,7,3,5,16,22,14],beta:23,said:1,rigor:[5,27],plan:[],strongest:[],stricli:[],choos:1,homepag:[8,18,0,11,25,10,3,28,6,21],"class":[8,18,0,11,25,10,27,28,3,4,5,6,21],independ:[23,21,29],tradit:1,simplic:23,renam:23,correctli:[14,20],ship:[27,29,4],url:[8,21,25,20,2,12,13,3,16,29],doc:[8,18,0,11,25,10,28,3,5,6,21,22],clear:[18,16,7],later:[18,0,13,7,14],cover:15,drive:[0,7],destruct:[0,7],doe:[23,1,29,26,13,22,14],declar:23,snapshot:[18,9,23,28,7],runtim:[9,7],determin:[5,29,22,1],sourceforg:[],occasion:13,region:[5,13,1],hmac:[23,22],gracefulli:[5,27],think:[],myawssecretaccesskei:[],theoret:15,show:27,carefulli:1,random:22,syntax:[29,20,2,28,16,7],connect:[8,23,21,25,29,20,2,13,3,15,16,22],session:22,permiss:[5,23,21,29],messageid:22,newest:[15,3],anywai:[],damag:[5,27,16,1],rotat:[8,16,29,20,3,21],redirect:29,current:[1,27,5,16,22,14],onli:[0,1,2,3,4,5,6,7,8,10,11,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29],slow:14,locat:[8,18,0,1,11,25,10,3,28,6,21,7],launchpad:24,much:4,transact:23,configur:[9,29,7],activ:[8,18,0,21,11,25,10,26,20,27,2,12,13,3,4,28,6,16,29,7],state:[5,27,23,14],than:[10,1,25,29,27,2,13,7,5,15,21,22,14],authinfo:[],latenc:[15,23,4],suppos:1,rich:[],factor:[5,13,1],folder:[18,24,7],local:[8,9,0,24,1,18,11,25,10,13,29,23,3,28,6,15,21,22],defin:[5,27,12,29],overwritten:22,loss:[13,1],contribut:[5,9],variou:[28,16,3],get:[8,9,0,21,24,25,29,20,27,2,17,3,5,28,16,22,7],googlegroup:17,nasti:[0,7],stop:29,autom:[5,23],regularli:[18,7],ssl:[8,21,25,20,2,3,16,29,14],s3rr:[],cannot:[5,27,22,1],ssh:[9,15,13],chat:13,report:[23,13,24,17,1],reconstruct:[5,27],awai:1,requir:[8,23,24,1,29,20,27,28,5,21,22,14],myawsaccesskeyid:[],reveal:23,enabl:[29,21],held:22,dramat:[15,13],intrins:15,method:[29,24],provid:[23,24,1,29,13,22,14],bad:15,statist:[6,7,9],though:1,contain:[24,1,29,27,13,5,22],userspac:[],nowher:[],where:[28,16,3,1],caches:[28,29,21,7],wiki:[24,22,17],kernel:24,set:[8,21,25,20,2,3,5,15,16,29],bucket1:[],speak:[29,1],bucket3:[],bucket2:[],startup:29,packet:22,maximum:[1,25,29,2,5,21,22],tip:[9,15],see:[8,18,0,21,1,11,25,10,27,28,13,29,7,3,4,5,6,15,16,22,14],num:[29,21],s3qlcp:[5,9,18,19,7],respons:1,fail:[24,14,1],close:[11,26],optimum:15,whatsoev:[0,23,7],best:[15,13,24,29],concern:1,infinit:[23,1],awar:1,statu:[8,9,0,1,18,11,25,10,27,23,3,4,28,6,21,14],detect:[23,13,1],extend:23,inconveni:23,hopefulli:14,databas:[23,22],review:1,wikipedia:22,label:[2,25],favor:23,enough:[15,21,29,1],smallest:1,between:[5,27,29,21,1],"import":[5,9,13,24,1],neither:[0,7,1],earli:14,across:23,attribut:23,forward:1,check:[8,9,24,1,29,20,16,22,14],amazon:[9,23,1,13,5,22,14],august:[],kei:[23,13,22],weak:[],inconsist:14,extens:23,lazi:[11,26],hardlink:[18,23,7],joe:[5,12],expire_backup:[5,9,19,27],solv:15,advertis:13,come:[5,15,23,1],local0:29,addit:[18,10,1,29,23,3,28,16,22,7],both:[18,23,22,7,1],protect:[0,23,7],accident:[2,0,25,7],last:12,irregular:[5,27],southeast:[],someth:[18,7],howev:[18,0,1,29,23,27,13,14,5,15,22,7],alon:[],job:[5,29],against:[23,0,24,22,7],configpars:12,etc:[18,29,7,14],consi:[],instanc:15,freeli:29,corrupt:1,com:[8,18,0,24,11,25,10,27,13,3,4,28,6,15,21,22,17],pcp:[5,9,15,19,4],load:29,among:13,simpli:[0,7,1],technic:[13,1],figur:1,within:[12,7],inspir:[18,7],buti:[],period:[0,22,7,1],insist:15,batch:[8,29,20],written:[23,21,29,26,1],non:[],littl:[29,24,1],shutdown:29,linux:[23,24,29],averag:[13,1],respect:[13,1],guid:[8,9,19,25,3,21],assum:29,duplic:[18,9,23,1,13,5,22,7],quit:24,worthless:[0,7],strong:[8,18,0,11,25,10,27,3,4,28,6,21],nikolau:29,west:[],rackspac:[9,13,1],devic:[29,22],three:[29,13,24],been:[0,1,11,29,23,26,20,27,13,7,5,15,16,22,14],mark:[8,20,1],compon:23,secret:13,trigger:7,interpret:29,untouch:1,subscrib:17,monthli:[18,7],immedi:[10,1,11,29,26,22,7],hesit:1,strategi:[5,27],invis:22,legaci:13,infect:[0,7],upstart:[5,29,21],great:[0,7],ani:[8,18,0,24,1,25,23,27,2,13,17,5,22,7],rsync_arg:15,zero:[15,1],understand:[29,21],togeth:13,els:16,tradition:[0,7],s3qlstat:[6,19,7,9],c11:[],present:1,"case":[18,0,24,1,23,27,12,5,15,16,22,7],replic:[5,18,23,7,1],trojan:[0,7],ident:[18,23,22,7,1],look:[15,1],gnu:14,solid:23,plain:[2,25],servic:[23,13,1],zlib:[29,21],histor:[],trick:[9,15],documents_februari:[18,7],weren:17,abov:[5,27,13,1],error:[8,9,0,1,18,11,25,10,20,27,23,3,4,28,6,21,14],login:[12,13],invoc:[5,27,1],ahax:4,loos:1,jibbadup:[],propag:22,runlevel:29,argpars:[],have:[0,1,2,4,5,7,11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,29],advantag:[5,27,0,7],stdout:29,almost:15,mtime:14,therefor:[5,29,13,14,1],remount:[],worri:[],destin:[18,15,7,4],archiv:[23,13,24],gsutil:[],conf:[5,9],incom:[],revis:[16,3],dedic:[29,14],sever:[23,24,1,29,13,4,5,15,21,22],tamper:[5,27],unmount:[9,1,11,29,26,20,3,5,15,16,22,14],develop:[9,23,13,24,22],minim:23,receiv:1,media:13,make:[18,0,21,24,29,23,27,13,14,5,15,16,22,7],flushcach:[28,7],same:[18,1,29,27,13,5,15,16,22,7],"while":[23,24,1,29,0,26,28,22,7],shorter:[],read:[8,18,23,21,1,25,29,20,2,12,13,3,15,16,22,7],renumb:[],unexpectedli:14,split:[23,22],auto:[29,21],pai:13,eventu:[9,22,1],infer:[5,27],higher:1,week:[5,27],geograph:[13,1],raid:1,hostnam:13,closest:13,lie:18,optim:[29,21],keyr:[],confidenti:[],upon:14,effect:[18,23,7,1],cycl:[5,27],hand:13,remot:[8,23,21,25,20,2,13,3,15,16,29],amazonwebservic:22,fuse:[29,14],temporari:1,user:[0,1,3,6,7,8,9,10,11,13,15,18,19,20,21,22,23,24,25,26,28,29],mani:[5,27,23,13,1],extern:[0,13,7],encrypt:[8,9,23,21,25,29,20,2,12,3,16,22],aka:22,recent:[29,27,5,16,22,14],lower:1,appropri:29,kept:[8,21,1,29,20,3,16],scenario:1,older:16,firstli:1,entri:[12,21,29],thu:1,irrelev:[],well:[0,21,1,29,10,27,12,5,16,7],without:[8,18,0,1,23,20,14,15,16,7],command:[0,2,3,4,5,6,7,8,9,10,11,12,14,16,18,19,20,21,24,25,26,27,28,29],expens:1,thi:[0,1,2,3,4,5,6,7,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29],filesystem:[25,29,20,2,15,21,22],gzip:23,credenti:[8,21,25,20,2,12,3,16,29],spend:15,ubuntu:24,left:[14,1],compromis:15,identifi:13,execut:[5,16,24,7],less:13,conform:23,complet:[18,1,29,27,28,5,21,7],lowest:[],obtain:[],rest:[15,22,1],indic:[],front:22,bandwidth:[5,23],kill:29,spread:[2,25,1],heavili:13,touch:[18,7],openstack:[9,23,13],storage_url:29,roughli:29,speed:[5,29],yet:[22,14,1],web:[13,1],viru:[0,7],detach:[11,26],homedir:[],easi:15,hint:[28,16,3],qualiti:13,point:[23,1,11,29,13,21,22],had:[5,18,27,7],except:[12,1],param:16,thousand:[29,13],gss:[],add:[0,7],valid:7,nor:[0,7],versa:[18,7],input:[8,20],logger:29,subsequ:[5,27,13],match:[13,1],build:24,bin:[15,24,29],applic:[12,13,22,14],transpar:23,preserv:[5,23],big:[15,14],regard:[18,7],exception:[],built:[],traffic:13,know:[5,18,27,7,1],background:[11,22,26],amp:15,bit:[23,22],password:[2,12,13,25],recurs:[5,9,10,7],presum:1,like:[18,0,1,29,23,14,4,21,22,7],insert:22,daemon:[29,21],swift:[9,13],ctime:14,specif:[0,24,13,14,28,16,7],header:[12,24],should:[8,18,0,21,24,1,11,25,10,26,20,13,7,3,28,6,15,16,29,14],outag:1,anyth:1,manual:[11,24,26,17],resolv:[17,1],noth:[0,7],princip:14,necessari:[16,22],either:[1,14,3,28,16,7],lose:[9,13,1],output:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],per:29,page:[13,19,1],yyyi:[5,27],imagin:[5,27,0,7],www:22,right:[15,1],old:[8,0,21,1,29,20,27,3,5,16,7],often:[15,13,1],deal:[],ll23bi:12,acknowledg:13,interv:[5,27,15,21,29],compat:[9,13],some:[0,1,3,4,5,6,14,8,10,11,13,18,20,21,22,23,24,25,26,27,28,29],umount:[9,19,11,29,26,14],self:24,certain:[],intern:[13,22,1],"export":[29,21],unchang:22,flush:[29,7],guarante:[5,27,13,1],server:[8,21,25,20,2,13,3,15,16,29,14],fanat:13,librari:[24,22,14],"24h":[29,21],rsync:[18,0,14,4,5,15,7],confirm:[10,7],stronger:[],freebsd:[23,24],avoid:[5,9,13,27,1],exec:29,definit:[5,27],februari:[18,7],protocol:13,backward:[],buffer:14,equal:29,exit:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],slash:13,peculiar:[13,1],auth:13,backend:[8,9,21,1,18,11,25,29,26,20,2,12,13,7,3,28,15,16,22,14],creep:23,refer:[19,1],machin:[],core:[5,1],plu:[],object:[1,25,29,2,13,21,22],run:[0,21,24,1,29,23,20,27,28,14,3,5,16,7],itself:[24,1],power:5,certif:[13,14],reach:[8,16,29,20,3,21,22],intellig:[5,27,23],view:19,usag:[5,18,27,7],symlink:23,solut:5,broken:1,host:13,nutshel:[9,1],unreason:14,although:[23,10,7,14],boundari:[5,27],bi23ll:12,immut:[9,0,10,5,23,15,7],impos:[],panel:13,sshf:[15,13],comparison:[],deflat:23,rare:[],socket:22,proce:24,memori:[],http:[8,18,0,24,11,25,10,27,13,3,4,28,6,21,22],storebackup:[18,7],acl:23,degre:1,messag:[8,16,25,29,20,2,3,21,22],fals:[29,21],bz2:22,backup:[18,9,0,1,29,23,27,13,3,5,15,16,7],disabl:[8,16,29,20,3,21],block:[23,1,11,29,26,14,28,22,7],repair:8,client:[],own:14,real:1,encount:[17,14],xyz:[],"float":22,encod:29,bound:1,automat:[8,9,21,1,25,29,20,2,13,3,5,16,22],two:[18,23,1,16,22,7],down:[5,11,29,26,14],nevertheless:[5,1],explain:1,ahv:15,authinfo2:[8,16,25,20,2,3,21,29],ensur:[5,27,15,23,1],chang:[18,9,0,1,29,23,14,3,28,16,22,7],insuffici:14,storag:[8,9,0,21,1,18,11,25,23,20,2,12,13,29,7,3,5,16,22,14],your:[8,18,0,19,24,1,11,25,10,27,28,13,7,3,5,6,15,21,29,14],durabl:[9,13,1],manag:[9,13,16],jspa:22,https_proxi:13,fast:[9,23,29,22,7],fusermount:[11,26,14],prepar:28,wai:[23,1,29,0,14,15,7],transfer:[5,15,23],support:[18,23,1,29,13,14,7],document:[8,18,0,11,25,10,3,28,6,21,7],question:17,s3_backup:[5,9],"long":[5,27,15,14,1],custom:13,avail:[8,0,21,25,29,27,14,3,5,16,22,7],start:[24,29,12,4,5,15],reli:[14,1],quiet:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],includ:[23,19,1,13,24,22,14],lot:15,suit:13,"var":13,perform:[9,23,24,1,29,28,13,3,4,5,15,16,14],succeed:[8,18,0,11,25,10,27,3,4,28,6,21],individu:[29,21,22,4],stage:[],"function":[16,22],properli:5,tracker:[23,24,17],interest:[22,7],form:[5,27,13,1],offer:[18,13,7,1],forc:[8,2,25,20],handl:[18,9,23,1,29,27,14,5,15,22,7],basic:[],continu:26,sigstop:[29,21],satur:29,measur:[5,1],newer:[24,1],don:[29,21],line:[28,23],mitig:1,bug:[23,24,17,14],faster:[10,7],info:[8,16,29,20,3,28,21],concaten:22,made:[18,0,1,23,15,22,7],furthermor:[12,23],consist:[9,12,13,22,1],possibl:[0,24,1,29,23,13,14,15,16,7],"default":[8,21,25,20,27,2,3,4,5,16,29],commit:[22,14],bucket:[5,12,13],displai:[],tell:[5,27,29],asynchron:23,authfil:[8,21,25,20,2,12,3,16,29],below:[13,7,1],limit:[18,0,29,10,28,14,5,6,21,7],s3ql_upstart:[5,9],unnot:13,problem:[8,18,0,1,17,23,27,14,5,15,22,7],similar:29,creation:[2,25,9],expect:[29,13,1],passphras:[9,12,13,3,16,22],featur:[18,9,0,1,23,13,7],hash:22,creat:[18,0,21,1,25,10,27,2,13,29,5,23,16,22,7],classic:[],retriev:[1,29,4,15,21,22],dure:[21,16,29],day_hour:[5,27],stabl:23,doesn:1,sale:13,strongli:[5,27],workaround:15,decreas:4,file:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,25,26,27,28,29],home:[5,15,13],request:1,exist:[18,0,1,25,10,27,2,13,5,22,7],improv:[5,9,15,4],mybucket:[],dd_hh:[5,27],link:[13,24,22],probabl:[23,1,27,5,15,16,7],http_proxi:13,again:[0,26,22,7,1],readi:[],relatim:14,umask:29,googl:[8,9,0,24,1,18,11,25,10,27,13,23,3,4,28,6,21,14],fs1:12,sequenti:[],when:[8,0,21,1,25,23,20,27,2,12,13,29,7,3,4,5,15,16,22,14],detail:[9,1,13,5,15,22,14],prepend:13,prais:13,field:[],fs2:12,other:[18,0,24,1,29,10,23,13,17,28,6,21,22,7],futur:[18,0,1,10,14,28,6,7],rememb:[],test:[23,24],you:[18,0,21,24,1,11,25,17,10,26,20,27,2,13,7,5,15,16,29,14],shrink:23,rid:[0,7],particular:[],variabl:[13,24],incompet:13,intend:[],clean:[8,22,20],fulli:1,mountpoint:[29,26,13,28,6,15,21,22,7],why:13,"return":[8,18,0,1,11,25,10,26,27,3,4,28,6,21,14],fsck:[8,9,19,1,29,20,13,16],briefli:[],releas:23,track:[5,27],log:[8,21,29,20,12,13,3,28,16,7],consid:[12,17,1],sql:26,decrypt:12,noleaf:14,unless:[2,0,25,7],ppa:24,pool:[],stai:[29,21],reduc:[5,13,1],outdat:1,infrequ:[],leav:14,longer:[23,0,26,27,14,5,16,7],algorithm:[9,23,29,5,21,22],vice:[18,7],directori:[0,1,2,3,4,5,7,8,10,11,13,14,15,16,18,20,21,22,23,24,25,27,29],reliabl:[13,1],cryptopp:22,descript:[8,18,0,11,25,10,27,3,4,28,6,15,21,29],save:[27,15,23,1],rule:[9,15,13,1],sftp:[],depth:[],ignor:[],fact:13,back:[0,13,7],time:[8,0,21,1,25,23,20,27,2,13,29,7,3,5,15,16,22,14],invari:22,s3qladm:[9,16,19,3,1],daili:[]},objtypes:{},titles:["The <strong class=\"program\">s3qllock</strong> command","Important Rules to Avoid Losing Data","File System Creation","The <strong class=\"program\">s3qladm</strong> command","The <strong class=\"program\">pcp</strong> command","Contributed Programs","The <strong class=\"program\">s3qlstat</strong> command","Advanced S3QL Features","The <strong class=\"program\">fsck.s3ql</strong> command","S3QL User&#8217;s Guide","The <strong class=\"program\">s3qlrm</strong> command","The <strong class=\"program\">umount.s3ql</strong> command","Storing Authentication Information","Storage Backends","Known Issues","Tips &amp; Tricks","Managing File Systems","Further Resources / Getting Help","The <strong class=\"program\">s3qlcp</strong> command","Manpages","Checking for Errors","The <strong class=\"program\">mount.s3ql</strong> command","Implementation Details","About S3QL","Installation","The <strong class=\"program\">mkfs.s3ql</strong> command","Unmounting","The <strong class=\"program\">expire_backups</strong> command","The <strong class=\"program\">s3qlctrl</strong> command","Mounting"],objnames:{},filenames:["man/lock","durability","mkfs","man/adm","man/pcp","contrib","man/stat","special","man/fsck","index","man/rm","man/umount","authinfo","backends","issues","tips","adm","resources","man/cp","man/index","fsck","man/mount","impl_details","about","installation","man/mkfs","umount","man/expire_backups","man/ctrl","mount"]}) \ No newline at end of file
+Search.setIndex({objects:{},terms:{all:[0,1,2,3,5,7,8,11,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29],code:[8,18,0,24,11,25,10,27,23,3,4,28,6,21],partial:1,queri:1,global:[],mnt:[5,15,29],month:[5,27],secondli:1,prefix:[12,13],stumbl:7,notquitesecret:12,follow:[0,1,2,3,4,5,6,7,8,10,11,12,14,15,16,17,18,20,21,24,25,26,27,28,29],disk:[15,23,1],intrins:15,locat:[8,18,0,1,11,25,10,3,28,6,21,14],millisecond:22,whose:13,decid:15,middl:7,depend:[8,9,24,1,25,27,13,3,5,15,21,29],system:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23,24,25,26,27,28,29],ulimit:[29,21],readabl:23,specif:[0,24,13,14,28,16,7],send:[29,22,17],init:[29,7],program:[0,2,3,4,5,6,7,8,9,10,11,14,16,18,20,21,24,25,26,27,28,29],present:1,under:[13,24],aris:[],sha256:[23,22],neglig:[],worth:7,introduc:[18,14],sourc:[18,23,24,1,13,4,5,14],everi:[18,0,1,27,12,13,5,15,22,14],risk:[],far:[15,1],nonc:22,subcommand:16,account:[21,13,29,22],util:[15,20],volum:29,failur:1,veri:[23,13,22,7,1],appar:13,documents_januari:[18,14],administr:[0,14],level:[28,14],did:23,cmd:[],list:[9,23,24,1,27,28,13,17,5,16,14],upload:[23,1,11,29,26,28,14,5,15,21,22,7],"try":[24,1,27,12,13,5],stderr:29,small:[15,22,7],refer:[19,1],servic:[23,13,1],dir:[18,29],pleas:[23,17],upper:1,review:1,smaller:[15,23,7,1],slower:[18,29,14],ifac:29,ten:13,client:[],messageid:22,compens:1,sync:4,sign:13,consequ:1,hors:[0,14],design:[0,23,14,1],pass:[4,1],download:[16,24,22,3],further:[9,16,17],myusernam:29,port:13,append:22,rath:29,even:[8,0,21,1,11,25,26,20,2,13,3,16,29,14],subsequ:[5,27,13],what:[5,27,16,28,1],bzip2:[23,21,29],sub:[22,7],descriptor:[29,21],preserv:[5,23],section:[12,13,22,1],abl:[0,1,11,26,13,14,17],invok:[28,16],asia:[],anywai:[],access:[23,21,1,29,12,13,16,22,7],delet:[9,0,1,10,27,3,5,16,14],version:[0,1,2,3,4,6,7,8,10,11,16,18,20,21,22,23,24,25,26,27,28,29],suspect:20,consecut:13,"new":[8,0,21,1,25,29,27,28,5,16,22,14],net:[29,24],significantli:[5,24,1],ever:1,"public":[],contrast:[0,14,1],metadata:[9,21,29,3,28,15,16,22,14],elimin:1,full:[8,18,0,1,11,25,10,28,23,3,5,6,21,29,14],themselv:12,pacif:[],gener:[0,24,1,27,14,5,16,22,7],never:1,privat:[],here:[28,13,19],satisfi:24,slow:7,modif:7,address:7,path:[8,21,24,25,20,2,13,3,16,29],becom:[1,27,12,13,5,15,22],modifi:[18,23,22,14],sinc:[1,29,27,5,22,7],valu:[12,21,29,7],wait:[1,11,29,26,15,22,7],dry:27,convert:13,invari:22,joes_bucket:[],ctr:22,checksum:[23,22],larger:1,host:13,loos:1,precis:22,prior:1,amount:[28,15,13,23],throughput:[],pick:1,action:[28,16,14,3],opinion:13,implement:[9,22,1],magnitud:[18,14],chanc:1,unreason:7,control:[13,14],configur:[9,29,14],retriev:[1,29,4,15,21,22],appli:[12,15,1],modul:[8,21,24,25,20,2,12,13,3,28,16,29],furthermor:[12,23],apw:24,filenam:15,unix:[23,15,22,7],api:13,visibl:1,marker:22,instal:[8,9,0,21,19,24,18,11,25,10,28,3,5,6,16],total:[29,14],establish:1,cloud:13,kei:[23,13,22],rackspacecloud:13,from:[8,18,0,21,24,1,25,23,20,27,2,12,13,29,3,4,5,15,16,22,14],describ:[13,1],would:[5,18,12,27,14],apswvers:24,"float":22,usernam:12,upgrad:[9,16,3],implic:22,few:[5,24,1],live:13,concret:[],call:[18,0,1,29,10,27,28,5,6,15,21,14],usr:[8,18,0,11,25,10,28,3,5,6,21],recommend:[5,29,13,7],taken:[18,23,21,29,14],suppos:1,weren:17,type:[],until:[11,29,7,14,26],more:[23,24,1,14,4,28,22,7],sort:[5,27],exit:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],desir:28,st_nlink:7,comparison:[],peopl:13,hundr:[],relat:[],benchmark:[5,9,29],deflat:23,notic:[15,1],enhanc:5,warn:[28,16,10,13,14],sqlitelibvers:[],depth:[],extens:23,agent:13,sens:15,known:[9,23,13,7],actual:[24,1,13,15,16,22],compani:13,hold:13,unpack:24,cach:[8,9,23,21,25,29,20,2,14,3,28,16,22,7],must:[18,24,1,13,3,16,14],worst:[0,14],none:[8,21,1,29,20,3,16],word:[],hour:1,restor:[18,9,15,16,14],setup:24,work:[23,24,1,26,27,5,15,22,7],uniqu:[12,13],dev:22,conceptu:23,remain:[29,22,1],wors:1,obvious:29,can:[0,1,2,3,5,6,7,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],learn:1,field:[],root:[18,0,11,29,10,26,28,6,21,14],fetch:[18,22,14],overrid:1,claim:[13,1],sqlite:[24,22],prompt:[8,20],tar:15,give:[5,16,15,13,27],process:[1,11,29,26,4,5,15,21,7],lock:[0,14],sudo:24,share:[8,18,0,24,11,25,10,28,3,5,6,21,22],accept:[8,18,0,21,1,11,25,10,26,20,27,2,12,3,4,28,6,16,29],high:[23,1,29,13,4,21],critic:23,minimum:[15,23],want:[11,29,26,27,5,15,17],onlin:[0,13,23,14],acl:23,occur:[8,18,0,1,11,25,10,27,3,4,28,6,21],concept:22,alwai:[8,18,21,1,25,29,20,27,2,13,7,3,5,16,22,14],cours:1,end:[29,16,22,1],manipul:23,thing:[16,3],rather:[1,27,14,5,15,7],anoth:1,ordinari:[18,11,26,14,1],write:[8,9,23,21,24,1,18,29,20,13,7,3,5,15,16,22,14],how:[5,27,15,22,1],env:29,instead:[18,1,11,26,12,14,22,7],simpl:[5,27,14],updat:[5,23,22,7,1],map:22,product:[],faq:17,resourc:[9,16,17],max:[2,25,21,29],earlier:[7,1],pyliblzma:24,reflect:22,badli:[16,3],wrong:[16,13,3],endang:23,mai:[18,0,21,24,1,29,17,23,26,28,13,7,3,5,15,16,14],multipl:[8,16,25,20,2,3,21,29],redund:[5,27,23,13,1],autom:[5,23],data:[8,9,23,21,1,18,11,25,29,26,20,2,13,7,3,5,28,15,16,22,14],grow:[23,29],physic:[5,18,0,16,14],man:[19,7],memori:[],circumst:1,"short":[0,14],attempt:[8,29,7,1],practic:[15,13],third:15,read:[8,18,23,21,1,25,29,20,2,12,13,3,15,16,22,14],neitheristhi:12,minim:23,favorit:[],apsw:24,element:29,issu:[18,9,0,24,29,17,10,23,13,7,28,6,14],inform:[9,1,29,27,12,13,28,21,22,14],maintain:29,combin:[15,13],allow:[8,18,0,21,25,10,20,27,2,13,29,3,4,5,6,15,16,28,14],enter:[2,25,22],exclus:15,pycryptopp:24,algorithm:[9,23,29,5,21,22],order:[18,12,14,1],talk:13,origin:[],obj:[2,25],frontend:13,help:[9,24,17,28,13,14,3,5,16,7],repair:8,over:[18,23,1,25,29,2,13,15,21,22,14],move:[23,16],soon:[],fifo:22,topsecret:[],report:[23,13,24,17,1],affect:[18,29,7,14,1],effici:7,still:[18,23,1,11,29,26,22,14],dynam:[23,24],paramet:12,group:[],concaten:22,chosen:1,fix:[0,1,27,14,5,7],inadvert:[18,14],better:[29,4,24,1],window:[9,1],renumb:[],requir:[8,23,24,1,29,20,27,28,5,21,22,7],persist:[],bin:[15,24,29],mail:[23,16,24,17],main:[10,14],might:[18,0,17,10,20,14,28,6,22,7],split:[23,22],tri:[16,22,7],them:[18,1,11,26,16,22,14],good:[0,27,14,5,15,7],synopsi:[8,18,0,11,25,10,27,3,4,28,6,21],thei:[18,0,19,23,27,5,15,22,14],python:[29,12,24,22],promin:7,safe:[18,15,14,1],fuse4bsd:24,dai:[5,27],initi:[],dat:[5,27],instanc:15,promis:1,automat:[8,9,21,1,25,29,20,2,13,3,5,16,22],therebi:1,verifi:[13,7],interrupt:16,aka:22,now:[5,27,0,24,14],bigger:[2,25],choic:[24,1],term:[5,27],eventu:[9,22,1],somewher:[8,18,0,11,25,10,3,28,6,21,14],name:[18,25,29,27,2,12,13,5,15,21,22,14],hardlink:[18,23,14],joesdomain:[],crypto:22,authent:[8,9,21,25,20,2,12,13,3,16,29],easili:22,achiev:[18,23,1,29,5,14],mode:[29,21,22,1],timeout:29,each:[29,27,12,5,21,22],debug:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],found:[12,15],beneath:14,confid:[],side:[],mean:[23,7,1],compil:29,s3ql:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29],reliabl:[13,1],mkfifo:29,chunk:7,hard:[15,23,1],idea:[5,27,0,7,14],procedur:[18,22,14],realli:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,15,16,29,7],consum:1,ensur:[5,27,15,23,1],meta:[28,15,14],"static":24,expect:[29,13,1],year:[5,27,23,13,1],s3_copi:[5,9],happen:[0,14,1],todo:[],special:[18,22,14],out:[23,13,7,1],lzma:[29,23,21,24,22],ftp:[],shown:13,encrypt:[8,9,23,21,25,29,20,2,12,3,16,22],network:[18,23,1,29,15,22,14],space:[18,23,7,14],miss:[27,1],newli:1,rational:0,content:[18,23,1,29,0,22,14],method:[29,24],suitabl:[23,24],rel:[13,4],internet:[23,29],print:[8,18,0,21,24,11,25,10,26,20,27,2,3,4,28,6,16,29],current:[1,27,5,16,22,7],eth0:29,bla:29,correct:[5,27],statist:[6,14,9],foreground:[29,21],shut:[5,11,29,26,7],after:[18,0,1,23,13,15,16,14],insid:18,advanc:[9,14],migrat:5,documents_janurai:[],million:[],situat:[15,1],differ:[18,23,24,1,29,28,13,3,5,15,16,14],free:[23,13],standard:[23,1,29,27,13,5,22],inod:22,reason:[10,1,29,26,20,27,13,14,5,15,7],base:29,theori:1,ask:[24,1,25,2,13,16,7],org:[29,22],"byte":[],likelihood:1,afterward:[15,22],bash:15,care:[18,23,7,14],sigkil:29,wai:[23,1,29,0,14,15,7],thread:[5,29,21],befor:[18,23,1,11,29,26,13,14,22,7],could:[18,14],refus:[5,27],keep:[5,27,0,14,1],recov:[0,14],turn:[5,27,29,7],length:1,fuse:[29,7],place:29,perman:[9,0,1,29,15,14],url:[8,21,25,20,2,12,13,3,16,29],principl:29,confus:7,neglect:1,first:[23,24,1,29,12,13,15,16,22,7],oper:[8,18,0,21,1,11,25,10,27,29,23,3,4,28,6,16,22],softwar:29,rang:[5,27],directli:[13,22],malici:[0,14],carri:23,onc:[0,11,29,23,26,13,15,21,22,14],clariti:[],s3q:[],number:[23,24,1,29,27,14,4,5,15,21,22,7],capac:23,restrict:[28,29,21],date:[5,27],instruct:24,alreadi:[18,24,13,14,22,7],done:[29,22,1],least:[24,1,29,27,5,21,22],llfuse:24,indistinguish:23,agre:22,open:[11,29,13,26],s3c:13,size:[23,25,29,2,14,28,15,21,22,7],given:[22,7],"long":[5,27,15,7,1],convent:7,script:[5,15,29,7],unknown:23,interact:3,s3qllock:[9,0,19,10,5,15,14],sometim:16,wrapper:[5,4],parallel:[5,15,21,29,4],checkpoint:1,attack:[0,7,14],necessarili:1,master:22,demonstr:5,statement:13,similarli:[],s3qlrm:[9,0,19,10,27,5,14],termin:[11,12,26,7],john:13,"final":[22,14],store:[8,9,23,21,1,25,29,20,27,2,12,13,3,5,15,16,22],includ:[23,19,1,13,24,22,7],servi:[],luckili:[],consol:13,option:[0,1,2,3,4,5,6,7,8,10,11,14,15,16,18,20,21,24,25,26,27,28,29],especi:[15,13,23],shelf:[0,14],tool:13,copi:[18,9,23,1,14,4,5,15,16,22,7],inaccess:1,specifi:[8,21,25,29,20,27,2,12,13,3,5,28,16,22,7],"var":13,part:[23,29,27,4,5,22],pars:12,mostli:[],consult:[8,25,21,3],exactli:[5,18,27,14],than:[10,1,25,29,27,2,13,7,5,15,22,14],wide:[29,13,24],downright:13,target:[8,18,21,29,20,3,15,16,14],whenev:[29,12,24,15],prevent:[2,0,25,14,1],remov:[18,9,0,29,10,27,28,7,5,6,22,14],older:16,tree:[18,9,0,10,4,5,23,22,14],second:[1,29,27,12,5,15,21,22],structur:[23,16],charact:22,project:13,matter:[28,15,16],optimum:15,num:[29,21],friend:15,histor:[],posit:22,video:29,minut:[5,27],other:[18,0,24,1,29,10,23,13,17,28,6,21,22,14],pre:29,unencrypt:[2,25],sai:[18,14,1],comput:[23,1,29,27,5,22],entail:[],close:[11,26],plaintext:[],explicit:15,ram:[],mind:1,argument:[28,16,3],correspond:13,"13th":23,packag:[5,24],expir:29,increment:[],disadvantag:[18,14],need:[18,21,24,1,29,27,13,5,16,22,14],seem:[15,13],exclud:[0,14],https_proxi:13,paramiko:[],caus:[13,1],engin:13,techniqu:1,equival:[5,27],min:[],irrepar:16,destroi:[0,14],moreov:14,blindli:7,atim:7,accuraci:[5,27],note:[18,9,23,24,1,11,29,26,27,13,7,4,5,15,16,14],also:[0,1,3,4,5,6,14,8,10,11,12,13,15,18,19,21,22,23,24,25,26,27,28,29],builtin:[],denomin:[],take:[18,23,1,14,3,28,15,16,22,7],which:[18,10,24,1,23,27,12,14,5,22,7],discrep:[],transmit:[],environ:[13,24],zlib:[29,21],uplink:5,singl:[15,21,29,1],mktemp:29,begin:[12,22],sure:[21,24,29,13,15,16,22,7],importantli:[],distribut:[5,29,24,1],plenti:[],normal:[12,13,29,21],multipli:[],previou:[5,16],compress:[9,23,29,5,21,22,14],discov:1,most:[8,18,21,1,29,20,27,12,13,7,3,5,16,22,14],beta:23,detect:[23,13,1],rigor:[5,27],plan:[],strongest:[],homepag:[8,18,0,11,25,10,3,28,6,21],"class":[8,18,0,11,25,10,27,28,3,4,5,6,21],relatim:7,tradit:1,simplic:23,renam:23,inconveni:23,ship:[27,29,4],filesystem:[25,29,20,2,15,21,22],authfil:[8,21,25,20,2,12,3,16,29],doc:[8,18,0,11,25,10,28,3,5,6,21,22],clear:[18,16,14],later:[18,0,13,7,14],cover:15,drive:[0,14],destruct:[0,14],doe:[23,1,29,26,13,22,7],declar:23,snapshot:[18,9,23,28,14],runtim:[9,14],determin:[5,29,22,1],occasion:13,left:[7,1],hmac:[23,22],fact:13,think:[],myawssecretaccesskei:[],show:27,carefulli:1,random:22,syntax:[29,20,2,28,16,14],session:22,permiss:[5,23,21,29],bucketnam:13,newest:[15,3],find:[0,29,7,14,1],damag:[5,27,16,1],rotat:[8,16,29,20,3,21],redirect:29,absolut:[5,27,13],onli:[0,1,2,3,4,5,6,7,8,10,11,13,14,15,16,18,20,21,22,23,24,25,26,27,28,29],explicitli:7,ratio:29,launchpad:24,transact:23,fstab:[29,7],activ:[8,18,0,21,11,25,10,26,20,27,2,12,13,3,4,28,6,16,29,14],enough:[15,21,29,1],start:[24,29,12,4,5,15],haven:[],authinfo:[],latenc:[15,23,4],tape:[0,14],rich:[],factor:[5,13,1],folder:[18,24,14],local:[8,9,0,24,1,18,11,25,10,13,29,23,3,28,6,15,21,22],defin:[5,27,12,29],overwritten:22,keyr:[],shrink:23,contribut:[5,9],variou:[28,16,3],get:[8,9,0,21,24,25,29,20,27,2,17,3,5,28,16,22,14],googlegroup:17,nasti:[0,14],stop:29,secondari:[],regularli:[18,14],ssl:[8,21,25,20,2,3,16,29,7],s3rr:[],cannot:[5,27,22,1],ssh:[9,15,13],increas:[1,29,13,15,21,22],reconstruct:[5,27],neither:[0,14,1],restart:[29,7],myawsaccesskeyid:[],reveal:23,enabl:[29,21],held:22,dramat:[15,13],"19283712_yourname_s3ql":[],myfsdata:15,provid:[23,24,1,29,13,22,7],bad:15,continu:26,common:[8,18,0,11,25,10,3,28,6,21,14],contain:[24,1,29,27,13,5,22],userspac:[],nowher:[],where:[28,16,3,1],valid:14,caches:[28,29,21,14],wiki:[24,22,17],kernel:24,set:[8,21,25,20,2,3,5,15,16,29],detail:[9,1,13,5,15,22,7],noleaf:7,bucket1:[],speak:[29,1],bucket3:[],bucket2:[],startup:29,packet:22,displai:[],see:[8,18,0,21,1,11,25,10,27,28,13,29,7,3,4,5,6,15,16,22,14],temporarili:29,s3qlcp:[5,9,18,19,14],respons:1,fail:[24,7,1],led:12,"__version__":24,becaus:[18,23,1,29,5,22,14],whatsoev:[0,23,14],best:[15,13,24,29],concern:1,infinit:[23,1],awar:1,statu:[8,9,0,1,18,11,25,10,27,23,3,4,28,6,21,7],said:1,extend:23,correctli:[7,20],hopefulli:7,databas:[23,22],boundari:[5,27],wikipedia:22,label:[2,25],favor:23,state:[5,27,23,7],smallest:1,between:[5,27,29,21,1],remount:[],"import":[5,9,13,24,1],awai:1,param:16,across:23,speed:[5,29],attribut:23,amazon:[9,23,1,13,5,22,7],august:[],manpag:[9,19],weak:[],inconsist:7,southeast:[],job:[5,29],entir:[23,0,10,14,22],joe:[5,12],expire_backup:[5,9,19,27],solv:15,advertis:13,come:[5,15,23,1],local0:29,roughli:29,addit:[18,10,1,29,23,3,28,16,22,14],both:[18,23,22,14,1],protect:[0,23,14],accident:[2,0,25,14],last:12,irregular:[5,27],rogerbinn:24,someth:[18,14],howev:[18,0,1,29,23,27,13,14,5,15,22,7],anyth:1,alon:[],lazi:[11,26],against:[23,0,24,22,14],configpars:12,etc:[18,29,7,14],consi:[],cachedir:[8,21,1,25,20,2,3,16,29],exec:29,freeli:29,corrupt:1,com:[8,18,0,24,11,25,10,27,13,3,4,28,6,15,21,22,17],pcp:[5,9,15,19,4],load:29,among:13,simpli:[0,14,1],technic:[13,1],figur:1,inspir:[18,14],buti:[],period:[0,22,14,1],insist:15,cryptopp:22,batch:[8,29,20],written:[23,21,29,26,1],littl:[29,24,1],shutdown:29,linux:[23,24,29],averag:[13,1],respect:[13,1],guid:[8,9,19,25,3,21],assum:29,duplic:[18,9,23,1,13,5,22,14],quit:24,worthless:[0,14],strong:[8,18,0,11,25,10,27,3,4,28,6,21],west:[],rackspac:[9,13,1],devic:[29,22],three:[29,13,24],been:[0,1,11,29,23,26,20,27,13,7,5,15,16,22,14],mark:[8,20,1],compon:23,secret:13,much:4,destin:[18,15,14,4],interpret:29,untouch:1,subscrib:17,monthli:[18,14],futur:[18,0,1,10,14,28,6,7],immedi:[10,1,11,29,26,22,14],hesit:1,strategi:[5,27],invis:22,legaci:13,infect:[0,14],upstart:[5,29,21],great:[0,14],ani:[8,18,0,24,1,25,23,27,2,13,17,5,22,14],zero:[15,1],understand:[29,21],togeth:13,input:[8,20],tradition:[0,14],s3qlstat:[6,19,14,9],logger:29,those:[13,22],"case":[18,0,24,1,23,27,12,5,15,16,22,14],replic:[5,18,23,14,1],trojan:[0,14],ident:[18,23,22,14,1],look:[15,1],gnu:7,solid:23,plain:[2,25],mount:[18,9,0,21,19,1,11,29,10,26,28,13,7,3,5,6,15,16,22,14],bill:12,sourceforg:[],trick:[9,15],documents_februari:[18,14],calcul:22,abov:[5,27,13,1],error:[8,9,0,1,18,11,25,10,20,27,23,3,4,28,6,21,7],login:[12,13],invoc:[5,27,1],ahax:4,region:[5,13,1],jibbadup:[],propag:22,argpars:[],have:[0,1,2,4,5,7,11,12,13,14,15,16,17,18,21,22,23,24,25,26,27,29],advantag:[5,27,0,14],stdout:29,almost:15,mtime:7,therefor:[5,29,13,7,1],non:[],worri:[],quiet:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],archiv:[23,13,24],gsutil:[],conf:[5,9],incom:[],revis:[16,3],dedic:[29,7],sever:[23,24,1,29,13,4,5,15,21,22],tamper:[5,27],unmount:[9,1,11,29,26,20,3,5,15,16,22,7],develop:[9,23,13,24,22],author:[29,7],receiv:1,media:13,make:[18,0,21,24,29,23,27,13,14,5,15,16,22,7],flushcach:[28,14],header:[12,24],same:[18,1,29,27,13,5,15,16,22,14],"while":[23,24,1,29,0,26,28,22,14],shorter:[],dest:18,when:[8,0,21,1,25,23,20,27,2,12,13,29,7,3,4,5,15,16,22,14],html:22,unexpectedli:7,nikolau:29,auto:[29,21],pai:13,document:[8,18,0,11,25,10,3,28,6,21,14],infer:[5,27],higher:1,week:[5,27],geograph:[13,1],raid:1,hostnam:13,closest:13,lie:18,optim:[29,21],swordfish:12,confidenti:[],upon:7,effect:[18,23,14,1],hand:13,remot:[8,23,21,25,20,2,13,3,15,16,29],amazonwebservic:22,rais:[29,21],temporari:1,user:[0,1,3,6,14,8,9,10,11,13,15,18,19,20,21,22,23,24,25,26,28,29],mani:[5,27,23,13,1],extern:[0,13,14],kib:[25,2,28,21,29,7],typic:[18,14,1],recent:[29,27,5,16,22,7],lower:1,appropri:29,kept:[8,21,1,29,20,3,16],scenario:1,eleg:23,firstli:1,entri:[12,21,29],thu:1,irrelev:[],well:[0,21,1,29,10,27,12,5,16,14],object:[1,25,29,2,13,21,22],without:[8,18,0,1,23,20,14,15,16,7],exampl:[23,1,27,12,14,5,15,22,7],command:[0,2,3,4,5,6,7,8,9,10,11,12,14,16,18,19,20,21,24,25,26,27,28,29],expens:1,thi:[0,1,2,3,4,5,6,7,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29],choos:1,gzip:23,credenti:[8,21,25,20,2,12,3,16,29],spend:15,ubuntu:24,usual:[29,22],compromis:15,mib:[8,16,29,20,3,21,7],identifi:13,just:[8,18,0,21,1,11,25,10,26,20,27,2,3,4,28,6,15,16,29,14],less:13,conform:23,complet:[18,1,29,27,28,5,21,14],obtain:[],rest:[15,22,1],indic:[],front:22,bandwidth:[5,23],kill:29,file:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,25,26,27,28,29],heavili:13,touch:[18,14],openstack:[9,23,13],storage_url:29,http_proxi:13,runlevel:29,yet:[22,7,1],web:[13,1],viru:[0,14],detach:[11,26],homedir:[],easi:15,hint:[28,16,3],doesn:1,qualiti:13,point:[23,1,11,29,13,21,22],had:[5,18,27,14],except:[12,1],theoret:15,gss:[],add:[0,14],spread:[2,25,1],nor:[0,14],versa:[18,14],els:16,c11:[],east:[],match:[13,1],build:24,earli:7,applic:[12,13,22,7],transpar:23,webpag:13,big:[15,7],ctime:7,fast:[9,23,29,22,14],built:[],traffic:13,know:[5,18,27,14,1],background:[11,22,26],insert:22,amp:15,bit:[23,22],password:[2,12,13,25],recurs:[5,9,10,14],you:[18,0,21,24,1,11,25,17,10,26,20,27,2,13,7,5,15,16,29,14],like:[18,0,1,29,23,14,4,21,22,7],loss:[13,1],daemon:[29,21],swift:[9,13],lost:[13,1],success:[],whitespac:[],should:[8,18,0,21,24,1,11,25,10,26,20,13,7,3,28,6,15,16,29,14],outag:1,arbitrari:[15,13],manual:[11,24,26,17],resolv:[17,1],noth:[0,14],princip:7,necessari:[16,22],either:[1,14,3,28,16,7],lose:[9,13,1],output:[8,18,0,21,11,25,10,26,20,27,2,3,4,28,6,16,29],"function":[16,22],per:29,page:[13,19,1],two:[18,23,1,16,22,14],yyyi:[5,27],imagin:[5,27,0,14],www:22,right:[15,1],old:[8,0,21,1,29,20,27,3,5,16,14],often:[15,13,1],deal:[],ll23bi:12,acknowledg:13,interv:[5,27,15,21,29],compat:[9,13],some:[0,1,3,4,5,6,7,8,10,11,13,18,20,21,22,23,24,25,26,27,28,29],umount:[9,19,11,29,26,7],self:24,intern:[13,22,1],"export":[29,21],unchang:22,flush:[29,14],home:[5,15,13],server:[8,21,25,20,2,13,3,15,16,29,7],fanat:13,librari:[24,22,7],basic:[],rsync:[18,0,14,4,5,15,7],confirm:[10,14],stronger:[],freebsd:[23,24],avoid:[5,9,13,27,1],though:1,definit:[5,27],februari:[18,14],protocol:13,buffer:7,equal:29,larg:[18,15,7,14],slash:13,peculiar:[13,1],auth:13,backend:[8,9,21,1,18,11,25,29,26,20,2,12,13,7,3,28,15,16,22,14],blocksiz:[],machin:[],core:[5,1],plu:[],who:[11,29,21,22,26],run:[0,21,24,1,29,23,20,27,28,14,3,5,16,7],power:5,certif:[13,7],reach:[8,16,29,20,3,21,22],view:19,usag:[5,18,27,14],symlink:23,solut:5,broken:1,step:5,nutshel:[9,1],obei:1,although:[23,10,7,14],januari:[18,13,14],bi23ll:12,immut:[9,0,10,5,23,15,14],impos:[],panel:13,sshf:[15,13],src:[18,14],about:[9,23,1,29,13,6,15,22,14],rare:[],socket:22,proce:24,commun:13,http:[8,18,0,24,11,25,10,27,13,3,4,28,6,21,22],briefli:[],storebackup:[18,14],unfortun:[15,13,7,1],degre:1,her:[0,14],back:[0,13,14],messag:[8,16,25,29,20,2,3,21,22],fals:[29,21],bz2:22,backup:[18,9,0,1,29,23,27,13,3,5,15,16,14],disabl:[8,16,29,20,3,21],block:[23,1,11,29,26,14,28,22,7],cloudfil:[9,13,1],ppa:24,own:7,real:1,encount:[17,7],xyz:[],within:[12,14],encod:29,bound:1,terminolog:[],due:[13,7],down:[5,11,29,26,7],nevertheless:[5,1],explain:1,ahv:15,authinfo2:[8,16,25,20,2,3,21,29],contrib:[5,15,29],chang:[18,9,0,1,29,23,14,3,28,16,22,7],insuffici:7,storag:[8,9,0,21,1,18,11,25,23,20,2,12,13,29,7,3,5,16,22,14],your:[8,18,0,19,24,1,11,25,10,27,28,13,7,3,5,6,15,21,29,14],durabl:[9,13,1],manag:[9,13,16],jspa:22,mkf:[8,9,19,25,2,22],stricli:[],fusermount:[11,26,7],prepar:28,suffici:1,transfer:[5,15,23],execut:[5,16,24,14],support:[18,23,1,29,13,14,7],question:17,s3_backup:[5,9],overwrit:[2,25],custom:13,avail:[8,0,21,25,29,27,14,3,5,16,22,7],intellig:[5,27,23],reli:[7,1],trigger:14,low:[23,13],lot:15,suit:13,forward:1,perform:[9,23,24,1,29,28,13,3,4,5,15,16,7],succeed:[8,18,0,11,25,10,27,3,4,28,6,21],individu:[29,21,22,4],stage:[],lowest:[],properli:5,tracker:[23,24,17],interest:[22,14],form:[5,27,13,1],offer:[18,13,14,1],forc:[8,2,25,20],handl:[18,9,23,1,29,27,14,5,15,22,7],regard:[18,14],"24h":[29,21],sigstop:[29,21],infrequ:[],satur:29,measur:[5,1],newer:[24,1],don:[29,21],line:[28,23],mitig:1,bug:[23,24,17,7],longer:[23,0,26,27,14,5,16,7],info:[8,16,29,20,3,28,21],utc:22,made:[18,0,1,23,15,22,14],cif:29,consist:[9,12,13,22,1],possibl:[0,24,1,29,23,13,14,15,16,7],"default":[8,21,25,20,27,2,3,4,5,16,29],commit:[22,7],bucket:[5,12,13],maximum:[1,25,29,2,5,21,22],tell:[5,27,29],asynchron:23,independ:[23,21,29],below:[13,14,1],limit:[18,0,29,10,28,14,5,6,21,7],s3ql_upstart:[5,9],unnot:13,problem:[8,18,0,1,17,23,27,14,5,15,22,7],similar:29,creation:[2,25,9],connect:[8,23,21,25,29,20,2,13,3,15,16,22],passphras:[9,12,13,3,16,22],featur:[18,9,0,1,23,13,14],hash:22,creat:[18,0,21,1,25,10,27,2,13,29,5,23,16,22,14],classic:[],certain:[],dure:[21,16,29],day_hour:[5,27],stabl:23,s3qlctrl:[28,9,15,19,14],sale:13,strongli:[5,27],workaround:15,decreas:4,chat:13,guarante:[5,27,13,1],request:1,exist:[18,0,1,25,10,27,2,13,5,22,14],improv:[5,9,15,4],mybucket:[],check:[8,9,24,1,29,20,16,22,7],link:[13,24,22],probabl:[23,1,27,5,15,16,14],otherwis:[29,21,22],again:[0,26,22,14,1],readi:[],rsync_arg:15,umask:29,googl:[8,9,0,24,1,18,11,25,10,27,13,23,3,4,28,6,21,7],sequenti:[],tip:[9,15],exception:[],prepend:13,prais:13,fs1:12,fs2:12,fs3:12,creep:23,rememb:[],test:[23,24],presum:1,thousand:[29,13],rid:[0,14],particular:[],variabl:[13,24],intend:[],clean:[8,22,20],fulli:1,mountpoint:[29,26,13,28,6,15,21,22,14],why:13,"return":[8,18,0,1,11,25,10,26,27,3,4,28,6,21,7],fsck:[8,9,19,1,29,20,13,16],rise:1,releas:23,track:[5,27],log:[8,21,29,20,12,13,3,28,16,14],consid:[12,17,1],sql:26,decrypt:12,log_fifo:29,unless:[2,0,25,14],dd_hh:[5,27],pool:[],stai:[29,21],reduc:[5,13,1],outdat:1,backward:[],leav:7,faster:[10,14],pycrypto:24,vice:[18,14],directori:[0,1,2,3,4,5,7,8,10,11,13,14,15,16,18,20,21,22,23,24,25,27,29],cycl:[5,27],incompet:13,descript:[8,18,0,11,25,10,27,3,4,28,6,15,21,29],save:[27,15,23,1],rule:[9,15,13,1],sftp:[],itself:[24,1],ignor:[],gracefulli:[5,27],potenti:1,time:[8,0,21,1,25,23,20,27,2,13,29,7,3,5,15,16,22,14],profil:[29,21],s3qladm:[9,16,19,3,1],daili:[]},objtypes:{},titles:["The <strong class=\"program\">s3qllock</strong> command","Important Rules to Avoid Losing Data","File System Creation","The <strong class=\"program\">s3qladm</strong> command","The <strong class=\"program\">pcp</strong> command","Contributed Programs","The <strong class=\"program\">s3qlstat</strong> command","Known Issues","The <strong class=\"program\">fsck.s3ql</strong> command","S3QL User&#8217;s Guide","The <strong class=\"program\">s3qlrm</strong> command","The <strong class=\"program\">umount.s3ql</strong> command","Storing Authentication Information","Storage Backends","Advanced S3QL Features","Tips &amp; Tricks","Managing File Systems","Further Resources / Getting Help","The <strong class=\"program\">s3qlcp</strong> command","Manpages","Checking for Errors","The <strong class=\"program\">mount.s3ql</strong> command","Implementation Details","About S3QL","Installation","The <strong class=\"program\">mkfs.s3ql</strong> command","Unmounting","The <strong class=\"program\">expire_backups</strong> command","The <strong class=\"program\">s3qlctrl</strong> command","Mounting"],objnames:{},filenames:["man/lock","durability","mkfs","man/adm","man/pcp","contrib","man/stat","issues","man/fsck","index","man/rm","man/umount","authinfo","backends","special","tips","adm","resources","man/cp","man/index","fsck","man/mount","impl_details","about","installation","man/mkfs","umount","man/expire_backups","man/ctrl","mount"]}) \ No newline at end of file
diff --git a/doc/html/special.html b/doc/html/special.html
index fccda71..aee65ac 100644
--- a/doc/html/special.html
+++ b/doc/html/special.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Advanced S3QL Features &mdash; S3QL 1.11.1 documentation</title>
+ <title>Advanced S3QL Features &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Unmounting" href="umount.html" />
<link rel="prev" title="Mounting" href="mount.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="mount.html" title="Mounting"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -268,7 +268,7 @@ been flushed.</td>
<li class="right" >
<a href="mount.html" title="Mounting"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/tips.html b/doc/html/tips.html
index 33a42fe..0d04f17 100644
--- a/doc/html/tips.html
+++ b/doc/html/tips.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Tips &amp; Tricks &mdash; S3QL 1.11.1 documentation</title>
+ <title>Tips &amp; Tricks &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Known Issues" href="issues.html" />
<link rel="prev" title="Contributed Programs" href="contrib.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="contrib.html" title="Contributed Programs"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -192,7 +192,7 @@ details.</p>
<li class="right" >
<a href="contrib.html" title="Contributed Programs"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/html/umount.html b/doc/html/umount.html
index 4900b4a..8bba649 100644
--- a/doc/html/umount.html
+++ b/doc/html/umount.html
@@ -8,7 +8,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Unmounting &mdash; S3QL 1.11.1 documentation</title>
+ <title>Unmounting &mdash; S3QL 1.12 documentation</title>
<link rel="stylesheet" href="_static/sphinxdoc.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -16,7 +16,7 @@
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
- VERSION: '1.11.1',
+ VERSION: '1.12',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
@@ -26,7 +26,7 @@
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="author" title="About these documents" href="about.html" />
- <link rel="top" title="S3QL 1.11.1 documentation" href="index.html" />
+ <link rel="top" title="S3QL 1.12 documentation" href="index.html" />
<link rel="next" title="Checking for Errors" href="fsck.html" />
<link rel="prev" title="Advanced S3QL Features" href="special.html" />
</head>
@@ -40,7 +40,7 @@
<li class="right" >
<a href="special.html" title="Advanced S3QL Features"
accesskey="P">previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="sphinxsidebar">
@@ -147,7 +147,7 @@ upload data in the background for a while longer.</p>
<li class="right" >
<a href="special.html" title="Advanced S3QL Features"
>previous</a> |</li>
- <li><a href="index.html">S3QL 1.11.1 documentation</a> &raquo;</li>
+ <li><a href="index.html">S3QL 1.12 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
diff --git a/doc/latex/manual.aux b/doc/latex/manual.aux
index 3e99eb6..59ecb9a 100644
--- a/doc/latex/manual.aux
+++ b/doc/latex/manual.aux
@@ -1,16 +1,19 @@
\relax
-\ifx\hyper@anchor\@undefined
-\global \let \oldcontentsline\contentsline
-\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
-\global \let \oldnewlabel\newlabel
-\gdef \newlabel#1#2{\newlabelxx{#1}#2}
-\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
-\AtEndDocument{\let \contentsline\oldcontentsline
-\let \newlabel\oldnewlabel}
-\else
-\global \let \hyper@last\relax
-\fi
-
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand\HyField@AuxAddToFields[1]{}
\select@language{english}
\@writefile{toc}{\select@language{english}}
\@writefile{lof}{\select@language{english}}
@@ -222,8 +225,8 @@
\newlabel{man/mount:description}{{15.3.2}{41}{Description\relax }{subsection.15.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.3.3}Options}{41}{subsection.15.3.3}}
\newlabel{man/mount:options}{{15.3.3}{41}{Options\relax }{subsection.15.3.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.3.4}Exit Status}{43}{subsection.15.3.4}}
-\newlabel{man/mount:exit-status}{{15.3.4}{43}{Exit Status\relax }{subsection.15.3.4}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.3.4}Exit Status}{42}{subsection.15.3.4}}
+\newlabel{man/mount:exit-status}{{15.3.4}{42}{Exit Status\relax }{subsection.15.3.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.3.5}See Also}{43}{subsection.15.3.5}}
\newlabel{man/mount:see-also}{{15.3.5}{43}{See Also\relax }{subsection.15.3.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.4}The \textbf {s3qlstat} command}{43}{section.15.4}}
@@ -239,19 +242,19 @@
\newlabel{man/stat:exit-status}{{15.4.4}{43}{Exit Status\relax }{subsection.15.4.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.4.5}See Also}{43}{subsection.15.4.5}}
\newlabel{man/stat:see-also}{{15.4.5}{43}{See Also\relax }{subsection.15.4.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {15.5}The \textbf {s3qlctrl} command}{44}{section.15.5}}
-\newlabel{man/ctrl:the-s3qlctrl-command}{{15.5}{44}{The \textbf {s3qlctrl} command\relax }{section.15.5}{}}
-\newlabel{man/ctrl::doc}{{15.5}{44}{The \textbf {s3qlctrl} command\relax }{section.15.5}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.1}Synopsis}{44}{subsection.15.5.1}}
-\newlabel{man/ctrl:synopsis}{{15.5.1}{44}{Synopsis\relax }{subsection.15.5.1}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {15.5}The \textbf {s3qlctrl} command}{43}{section.15.5}}
+\newlabel{man/ctrl:the-s3qlctrl-command}{{15.5}{43}{The \textbf {s3qlctrl} command\relax }{section.15.5}{}}
+\newlabel{man/ctrl::doc}{{15.5}{43}{The \textbf {s3qlctrl} command\relax }{section.15.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.1}Synopsis}{43}{subsection.15.5.1}}
+\newlabel{man/ctrl:synopsis}{{15.5.1}{43}{Synopsis\relax }{subsection.15.5.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.2}Description}{44}{subsection.15.5.2}}
\newlabel{man/ctrl:description}{{15.5.2}{44}{Description\relax }{subsection.15.5.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.3}Options}{44}{subsection.15.5.3}}
\newlabel{man/ctrl:options}{{15.5.3}{44}{Options\relax }{subsection.15.5.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.4}Exit Status}{44}{subsection.15.5.4}}
\newlabel{man/ctrl:exit-status}{{15.5.4}{44}{Exit Status\relax }{subsection.15.5.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.5}See Also}{45}{subsection.15.5.5}}
-\newlabel{man/ctrl:see-also}{{15.5.5}{45}{See Also\relax }{subsection.15.5.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.5.5}See Also}{44}{subsection.15.5.5}}
+\newlabel{man/ctrl:see-also}{{15.5.5}{44}{See Also\relax }{subsection.15.5.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.6}The \textbf {s3qlcp} command}{45}{section.15.6}}
\newlabel{man/cp:the-s3qlcp-command}{{15.6}{45}{The \textbf {s3qlcp} command\relax }{section.15.6}{}}
\newlabel{man/cp::doc}{{15.6}{45}{The \textbf {s3qlcp} command\relax }{section.15.6}{}}
@@ -261,8 +264,8 @@
\newlabel{man/cp:description}{{15.6.2}{45}{Description\relax }{subsection.15.6.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{Snapshotting vs Hardlinking}{45}{subsubsection*.3}}
\newlabel{man/cp:snapshotting-vs-hardlinking}{{15.6.2}{45}{Snapshotting vs Hardlinking\relax }{subsubsection*.3}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.6.3}Options}{46}{subsection.15.6.3}}
-\newlabel{man/cp:options}{{15.6.3}{46}{Options\relax }{subsection.15.6.3}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.6.3}Options}{45}{subsection.15.6.3}}
+\newlabel{man/cp:options}{{15.6.3}{45}{Options\relax }{subsection.15.6.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.6.4}Exit Status}{46}{subsection.15.6.4}}
\newlabel{man/cp:exit-status}{{15.6.4}{46}{Exit Status\relax }{subsection.15.6.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.6.5}See Also}{46}{subsection.15.6.5}}
@@ -278,8 +281,8 @@
\newlabel{man/rm:options}{{15.7.3}{46}{Options\relax }{subsection.15.7.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.7.4}Exit Status}{46}{subsection.15.7.4}}
\newlabel{man/rm:exit-status}{{15.7.4}{46}{Exit Status\relax }{subsection.15.7.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.7.5}See Also}{47}{subsection.15.7.5}}
-\newlabel{man/rm:see-also}{{15.7.5}{47}{See Also\relax }{subsection.15.7.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.7.5}See Also}{46}{subsection.15.7.5}}
+\newlabel{man/rm:see-also}{{15.7.5}{46}{See Also\relax }{subsection.15.7.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.8}The \textbf {s3qllock} command}{47}{section.15.8}}
\newlabel{man/lock:the-s3qllock-command}{{15.8}{47}{The \textbf {s3qllock} command\relax }{section.15.8}{}}
\newlabel{man/lock::doc}{{15.8}{47}{The \textbf {s3qllock} command\relax }{section.15.8}{}}
@@ -291,8 +294,8 @@
\newlabel{man/lock:rationale}{{15.8.3}{47}{Rationale\relax }{subsection.15.8.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.8.4}Options}{47}{subsection.15.8.4}}
\newlabel{man/lock:options}{{15.8.4}{47}{Options\relax }{subsection.15.8.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.8.5}Exit Status}{48}{subsection.15.8.5}}
-\newlabel{man/lock:exit-status}{{15.8.5}{48}{Exit Status\relax }{subsection.15.8.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.8.5}Exit Status}{47}{subsection.15.8.5}}
+\newlabel{man/lock:exit-status}{{15.8.5}{47}{Exit Status\relax }{subsection.15.8.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.8.6}See Also}{48}{subsection.15.8.6}}
\newlabel{man/lock:see-also}{{15.8.6}{48}{See Also\relax }{subsection.15.8.6}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.9}The \textbf {umount.s3ql} command}{48}{section.15.9}}
@@ -306,8 +309,8 @@
\newlabel{man/umount:options}{{15.9.3}{48}{Options\relax }{subsection.15.9.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.9.4}Exit Status}{48}{subsection.15.9.4}}
\newlabel{man/umount:exit-status}{{15.9.4}{48}{Exit Status\relax }{subsection.15.9.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.9.5}See Also}{49}{subsection.15.9.5}}
-\newlabel{man/umount:see-also}{{15.9.5}{49}{See Also\relax }{subsection.15.9.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.9.5}See Also}{48}{subsection.15.9.5}}
+\newlabel{man/umount:see-also}{{15.9.5}{48}{See Also\relax }{subsection.15.9.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.10}The \textbf {fsck.s3ql} command}{49}{section.15.10}}
\newlabel{man/fsck::doc}{{15.10}{49}{The \textbf {fsck.s3ql} command\relax }{section.15.10}{}}
\newlabel{man/fsck:the-fsck-s3ql-command}{{15.10}{49}{The \textbf {fsck.s3ql} command\relax }{section.15.10}{}}
@@ -319,8 +322,8 @@
\newlabel{man/fsck:options}{{15.10.3}{49}{Options\relax }{subsection.15.10.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.10.4}Exit Status}{49}{subsection.15.10.4}}
\newlabel{man/fsck:exit-status}{{15.10.4}{49}{Exit Status\relax }{subsection.15.10.4}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.10.5}See Also}{50}{subsection.15.10.5}}
-\newlabel{man/fsck:see-also}{{15.10.5}{50}{See Also\relax }{subsection.15.10.5}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.10.5}See Also}{49}{subsection.15.10.5}}
+\newlabel{man/fsck:see-also}{{15.10.5}{49}{See Also\relax }{subsection.15.10.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {15.11}The \textbf {pcp} command}{50}{section.15.11}}
\newlabel{man/pcp:the-pcp-command}{{15.11}{50}{The \textbf {pcp} command\relax }{section.15.11}{}}
\newlabel{man/pcp::doc}{{15.11}{50}{The \textbf {pcp} command\relax }{section.15.11}{}}
@@ -334,15 +337,15 @@
\newlabel{man/pcp:exit-status}{{15.11.4}{50}{Exit Status\relax }{subsection.15.11.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.11.5}See Also}{50}{subsection.15.11.5}}
\newlabel{man/pcp:see-also}{{15.11.5}{50}{See Also\relax }{subsection.15.11.5}{}}
-\@writefile{toc}{\contentsline {section}{\numberline {15.12}The \textbf {expire\_backups} command}{51}{section.15.12}}
-\newlabel{man/expire_backups::doc}{{15.12}{51}{The \textbf {expire\_backups} command\relax }{section.15.12}{}}
-\newlabel{man/expire_backups:the-expire-backups-command}{{15.12}{51}{The \textbf {expire\_backups} command\relax }{section.15.12}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.1}Synopsis}{51}{subsection.15.12.1}}
-\newlabel{man/expire_backups:synopsis}{{15.12.1}{51}{Synopsis\relax }{subsection.15.12.1}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.2}Description}{51}{subsection.15.12.2}}
-\newlabel{man/expire_backups:description}{{15.12.2}{51}{Description\relax }{subsection.15.12.2}{}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.3}Options}{52}{subsection.15.12.3}}
-\newlabel{man/expire_backups:options}{{15.12.3}{52}{Options\relax }{subsection.15.12.3}{}}
+\@writefile{toc}{\contentsline {section}{\numberline {15.12}The \textbf {expire\_backups} command}{50}{section.15.12}}
+\newlabel{man/expire_backups::doc}{{15.12}{50}{The \textbf {expire\_backups} command\relax }{section.15.12}{}}
+\newlabel{man/expire_backups:the-expire-backups-command}{{15.12}{50}{The \textbf {expire\_backups} command\relax }{section.15.12}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.1}Synopsis}{50}{subsection.15.12.1}}
+\newlabel{man/expire_backups:synopsis}{{15.12.1}{50}{Synopsis\relax }{subsection.15.12.1}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.2}Description}{50}{subsection.15.12.2}}
+\newlabel{man/expire_backups:description}{{15.12.2}{50}{Description\relax }{subsection.15.12.2}{}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.3}Options}{51}{subsection.15.12.3}}
+\newlabel{man/expire_backups:options}{{15.12.3}{51}{Options\relax }{subsection.15.12.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.4}Exit Status}{52}{subsection.15.12.4}}
\newlabel{man/expire_backups:exit-status}{{15.12.4}{52}{Exit Status\relax }{subsection.15.12.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {15.12.5}See Also}{52}{subsection.15.12.5}}
diff --git a/doc/latex/manual.log b/doc/latex/manual.log
index 825cc09..9dc50e6 100644
--- a/doc/latex/manual.log
+++ b/doc/latex/manual.log
@@ -1,17 +1,17 @@
-This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2012.3.8) 4 MAY 2012 11:08
+This is pdfTeX, Version 3.1415926-2.4-1.40.13 (TeX Live 2012/Debian) (format=pdflatex 2012.8.5) 3 SEP 2012 21:02
entering extended mode
+ restricted \write18 enabled.
%&-line parsing enabled.
**manual.tex
(./manual.tex
-LaTeX2e <2009/09/24>
-Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
-yphenation, ngerman, german, german-x-2009-06-19, ngerman-x-2009-06-19, loaded.
-
+LaTeX2e <2011/06/27>
+Babel <v3.8m> and hyphenation patterns for english, dumylang, nohyphenation, ng
+erman, german, swissgerman, ngerman-x-2012-05-30, german-x-2012-05-30, loaded.
(./sphinxmanual.cls
Document Class: sphinxmanual 2009/06/02 Document class (Sphinx manual)
-(/usr/share/texmf-texlive/tex/latex/base/report.cls
+(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
-(/usr/share/texmf-texlive/tex/latex/base/size10.clo
+(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
)
\c@part=\count79
@@ -26,17 +26,17 @@ File: size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
-)) (/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
+)) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2008/03/30 v1.1d Input encoding file
\inpenc@prehook=\toks14
\inpenc@posthook=\toks15
-(/usr/share/texmf-texlive/tex/latex/base/utf8.def
+(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def
File: utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc
Now handling font encoding OML ...
... no UTF-8 mapping file for font encoding OML
Now handling font encoding T1 ...
... processing UTF-8 mapping file for font encoding T1
-(/usr/share/texmf-texlive/tex/latex/base/t1enc.dfu
+(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu
File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)
@@ -185,7 +185,7 @@ File: t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
)
Now handling font encoding OT1 ...
... processing UTF-8 mapping file for font encoding OT1
-(/usr/share/texmf-texlive/tex/latex/base/ot1enc.dfu
+(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu
File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A1 (decimal 161)
defining Unicode char U+00A3 (decimal 163)
@@ -215,7 +215,7 @@ File: ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
)
Now handling font encoding OMS ...
... processing UTF-8 mapping file for font encoding OMS
-(/usr/share/texmf-texlive/tex/latex/base/omsenc.dfu
+(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu
File: omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A7 (decimal 167)
defining Unicode char U+00B6 (decimal 182)
@@ -240,17 +240,17 @@ Now handling font encoding U ...
defining Unicode char U+2423 (decimal 9251)
))
defining Unicode char U+00A0 (decimal 160)
-(/usr/share/texmf-texlive/tex/latex/base/fontenc.sty
+(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2005/09/27 v1.99g Standard LaTeX package
-(/usr/share/texmf-texlive/tex/latex/base/t1enc.def
+(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def
File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding T1 on input line 43.
-)) (/usr/share/texmf-texlive/tex/generic/babel/babel.sty
-Package: babel 2008/07/06 v3.8l The Babel package
-(/usr/share/texmf-texlive/tex/generic/babel/english.ldf
+)) (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty
+Package: babel 2008/07/08 v3.8m The Babel package
+(/usr/share/texlive/texmf-dist/tex/generic/babel/english.ldf
Language: english 2005/03/30 v3.3o English support from the babel system
-(/usr/share/texmf-texlive/tex/generic/babel/babel.def
-File: babel.def 2008/07/06 v3.8l Babel common definitions
+(/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def
+File: babel.def 2008/07/08 v3.8m Babel common definitions
\babel@savecnt=\count88
\U@D=\dimen103
)
@@ -259,7 +259,7 @@ File: babel.def 2008/07/06 v3.8l Babel common definitions
\l@canadian = a dialect from \language\l@american
\l@australian = a dialect from \language\l@british
\l@newzealand = a dialect from \language\l@british
-)) (/usr/share/texmf-texlive/tex/latex/psnfss/times.sty
+)) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty
Package: times 2005/04/12 PSNFSS-v9.2a (SPQR)
) (./fncychap.sty
Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters)
@@ -272,7 +272,7 @@ Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters)
\pxx=\skip49
\c@AlphaCnt=\count89
\c@AlphaDecCnt=\count90
-) (/usr/share/texmf-texlive/tex/latex/tools/longtable.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty
Package: longtable 2004/02/01 v4.11 Multi-page Table package (DPC)
\LTleft=\skip50
\LTright=\skip51
@@ -291,7 +291,7 @@ Package: longtable 2004/02/01 v4.11 Multi-page Table package (DPC)
\LT@p@ftn=\toks16
) (./sphinx.sty
Package: sphinx 2010/01/15 LaTeX package (Sphinx markup)
-(/usr/share/texmf-texlive/tex/latex/base/textcomp.sty
+(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty
Package: textcomp 2005/09/27 v1.99g Standard LaTeX package
Package textcomp Info: Sub-encoding information:
(textcomp) 5 = only ISO-Adobe without \textcurrency
@@ -305,11 +305,11 @@ Package textcomp Info: Sub-encoding information:
(textcomp) Family '?' is the default used for unknown fonts.
(textcomp) See the documentation for details.
Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 71.
-(/usr/share/texmf-texlive/tex/latex/base/ts1enc.def
+(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def
File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
Now handling font encoding TS1 ...
... processing UTF-8 mapping file for font encoding TS1
-(/usr/share/texmf-texlive/tex/latex/base/ts1enc.dfu
+(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu
File: ts1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
defining Unicode char U+00A2 (decimal 162)
defining Unicode char U+00A3 (decimal 163)
@@ -413,23 +413,37 @@ Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 307.
Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 308.
Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 309.
Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 310.
-Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 311.
-Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 312.
-Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 313.
-Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 314.
-Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 315.
-Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 316.
-Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 317.
-Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 318.
-Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 319.
-Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 320.
-Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 321.
-Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 322.
-Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 323.
-Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 324.
-Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 325.
-Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 326.
-) (/usr/share/texmf-texlive/tex/latex/fancyhdr/fancyhdr.sty
+Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 311.
+Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 312.
+Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 313.
+Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 314.
+Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 315.
+Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 316.
+Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 317.
+Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 318.
+Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 319.
+Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 320.
+Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 321.
+Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 322.
+Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 323.
+Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 324.
+Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 325.
+Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 326.
+Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 327.
+Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 328.
+Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 329.
+Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 330.
+Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 331.
+Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 332.
+Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 333.
+Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 334.
+Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 335.
+Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 336.
+Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 337.
+Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 338.
+Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 339.
+Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 340.
+) (/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty
\fancy@headwidth=\skip54
\f@ncyO@elh=\skip55
\f@ncyO@erh=\skip56
@@ -439,9 +453,9 @@ Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 326.
\f@ncyO@erf=\skip60
\f@ncyO@olf=\skip61
\f@ncyO@orf=\skip62
-) (/usr/share/texmf-texlive/tex/latex/fancybox/fancybox.sty
-Package: fancybox 2000/09/19 1.3
-Style option: `fancybox' v1.3 <2000/09/19> (tvz)
+) (/usr/share/texlive/texmf-dist/tex/latex/fancybox/fancybox.sty
+Package: fancybox 2010/05/15 1.4
+Style option: `fancybox' v1.4 <2010/05/15> (tvz)
\@fancybox=\box30
\shadowsize=\dimen105
\@Sbox=\box31
@@ -451,8 +465,8 @@ Style option: `fancybox' v1.3 <2000/09/19> (tvz)
\EndVerbatimTokens=\toks20
\Verbatim@Outfile=\write3
\Verbatim@Infile=\read1
-) (/usr/share/texmf-texlive/tex/latex/titlesec/titlesec.sty
-Package: titlesec 2007/08/12 v2.8 Sectioning titles
+) (/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty
+Package: titlesec 2011/12/15 v2.10.0 Sectioning titles
\ttl@box=\box32
\beforetitleunit=\skip63
\aftertitleunit=\skip64
@@ -464,7 +478,7 @@ Package: titlesec 2007/08/12 v2.8 Sectioning titles
\titlewidthfirst=\dimen110
) (./tabulary.sty
Package: tabulary 2007/10/02 v0.9 tabulary package (DPC)
-(/usr/share/texmf-texlive/tex/latex/tools/array.sty
+(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty
Package: array 2008/09/09 v2.4c Tabular extension package (FMi)
\col@sep=\dimen111
\extrarowheight=\dimen112
@@ -477,20 +491,20 @@ Package: array 2008/09/09 v2.4c Tabular extension package (FMi)
\tymin=\dimen114
\tymax=\dimen115
\TY@tablewidth=\dimen116
-) (/usr/share/texmf-texlive/tex/latex/amsmath/amsmath.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2000/07/18 v2.13 AMS math features
\@mathmargin=\skip67
For additional information on amsmath, use the `?' option.
-(/usr/share/texmf-texlive/tex/latex/amsmath/amstext.sty
+(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01
-(/usr/share/texmf-texlive/tex/latex/amsmath/amsgen.sty
+(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0
\@emptytoks=\toks23
\ex@=\dimen117
-)) (/usr/share/texmf-texlive/tex/latex/amsmath/amsbsy.sty
+)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d
\pmbraise@=\dimen118
-) (/usr/share/texmf-texlive/tex/latex/amsmath/amsopn.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 1999/12/14 v2.01 operator names
)
\inf@bad=\count97
@@ -530,30 +544,36 @@ LaTeX Font Info: Redeclaring font encoding OMS on input line 568.
\mathdisplay@stack=\toks27
LaTeX Info: Redefining \[ on input line 2666.
LaTeX Info: Redefining \] on input line 2667.
-) (/usr/share/texmf-texlive/tex/latex/base/makeidx.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty
Package: makeidx 2000/03/29 v1.0m Standard LaTeX package
-) (/usr/share/texmf-texlive/tex/latex/ltxmisc/framed.sty
-Package: framed 2007/10/04 v 0.95: framed or shaded text with page breaks
+) (/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty
+Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks
+\OuterFrameSep=\skip70
\fb@frw=\dimen126
\fb@frh=\dimen127
\FrameRule=\dimen128
\FrameSep=\dimen129
-) (/usr/share/texmf-texlive/tex/latex/base/ifthen.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty
Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
-) (/usr/share/texmf-texlive/tex/latex/graphics/color.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty
Package: color 2005/11/14 v1.0j Standard LaTeX Color (DPC)
-(/etc/texmf/tex/latex/config/color.cfg
+(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg
File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
)
Package color Info: Driver file: pdftex.def on input line 130.
-(/usr/share/texmf-texlive/tex/latex/pdftex-def/pdftex.def
-File: pdftex.def 2010/03/12 v0.04p Graphics/color for pdfTeX
+(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
+) (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
+)
\Gread@gobject=\count109
-)) (/usr/share/texmf-texlive/tex/latex/fancyvrb/fancyvrb.sty
+)) (/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty
Package: fancyvrb 2008/02/07
Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix
-<2008/02/07> (tvz) (/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty
+<2008/02/07> (tvz) (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
\KV@toks@=\toks28
)
@@ -563,143 +583,153 @@ Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
\c@FancyVerbLine=\count111
\FV@StepNumber=\count112
\FV@OutFile=\write4
-) (/usr/share/texmf-texlive/tex/latex/ltxmisc/threeparttable.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/threeparttable/threeparttable.sty
Package: threeparttable 2003/06/13 v 3.0
\@tempboxb=\box36
-) (/usr/share/texmf-texlive/tex/latex/mdwtools/footnote.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/mdwtools/footnote.sty
Package: footnote 1997/01/28 1.13 Save footnotes around boxes
\fn@notes=\box37
\fn@width=\dimen130
-) (/usr/share/texmf-texlive/tex/latex/wrapfig/wrapfig.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty
\wrapoverhang=\dimen131
\WF@size=\dimen132
\c@WF@wrappedlines=\count113
\WF@box=\box38
\WF@everypar=\toks29
Package: wrapfig 2003/01/31 v 3.6
-) (/usr/share/texmf-texlive/tex/latex/ltxmisc/parskip.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty
Package: parskip 2001/04/09 non-zero parskip adjustments
-) (/usr/share/texmf-texlive/tex/latex/graphics/graphicx.sty
+) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
-(/usr/share/texmf-texlive/tex/latex/graphics/graphics.sty
+(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
-(/usr/share/texmf-texlive/tex/latex/graphics/trig.sty
+(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
-) (/etc/texmf/tex/latex/config/graphics.cfg
-File: graphics.cfg 2009/08/28 v1.8 graphics configuration of TeX Live
+) (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg
+File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
)
Package graphics Info: Driver file: pdftex.def on input line 91.
)
\Gin@req@height=\dimen133
\Gin@req@width=\dimen134
-) (/usr/share/texmf-texlive/tex/plain/misc/pdfcolor.tex)
-\distancetoright=\skip70
-\py@argswidth=\skip71
-\py@noticelength=\skip72
-\lineblockindentation=\skip73
+) (/usr/share/texlive/texmf-dist/tex/plain/misc/pdfcolor.tex)
+\distancetoright=\skip71
+\py@argswidth=\skip72
+\py@noticelength=\skip73
+\lineblockindentation=\skip74
\image@box=\box39
\image@width=\dimen135
-(/usr/share/texmf-texlive/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2009/10/09 v6.79a Hypertext links for LaTeX
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ifpdf.sty
-Package: ifpdf 2009/04/10 v2.0 Provides the ifpdf switch (HO)
-Package ifpdf Info: pdfTeX in pdf mode detected.
-) (/usr/share/texmf-texlive/tex/generic/oberdiek/ifvtex.sty
-Package: ifvtex 2008/11/04 v1.4 Switches for detecting VTeX and its modes (HO)
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2012/05/13 v6.82q Hypertext links for LaTeX
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
+Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO)
+
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
+Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO)
+Package hobsub Info: Skipping package `infwarerr' (already loaded).
+Package hobsub Info: Skipping package `ltxcmds' (already loaded).
+Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
Package ifvtex Info: VTeX not detected.
-) (/usr/share/texmf-texlive/tex/generic/ifxetex/ifxetex.sty
-Package: ifxetex 2009/01/23 v0.5 Provides ifxetex conditional
-) (/usr/share/texmf-texlive/tex/latex/oberdiek/hycolor.sty
-Package: hycolor 2009/10/02 v1.5 Code for color options of hyperref/bookmark (H
-O)
-(/usr/share/texmf-texlive/tex/latex/oberdiek/xcolor-patch.sty
-Package: xcolor-patch 2009/10/02 xcolor patch
-))
+Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO)
+Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in PDF mode is detected.
+Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
+Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
+Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO
+)
+Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO)
+Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO)
+Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO)
+Package: xcolor-patch 2011/01/30 xcolor patch
+Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO)
+Package atveryend Info: \enddocument detected (standard20110627).
+Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO)
+Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO)
+Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO)
+) (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
+)
\@linkdim=\dimen136
\Hy@linkcounter=\count114
\Hy@pagecounter=\count115
-(/usr/share/texmf-texlive/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2009/10/09 v6.79a Hyperref: PDFDocEncoding definition (HO)
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2012/05/13 v6.82q Hyperref: PDFDocEncoding definition (HO)
Now handling font encoding PD1 ...
... no UTF-8 mapping file for font encoding PD1
-) (/usr/share/texmf-texlive/tex/generic/oberdiek/etexcmds.sty
-Package: etexcmds 2007/12/12 v1.2 Prefix for e-TeX command names (HO)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/infwarerr.sty
-Package: infwarerr 2007/09/09 v1.2 Providing info/warning/message (HO)
)
-Package etexcmds Info: Could not find \expanded.
-(etexcmds) That can mean that you are not using pdfTeX 1.50 or
-(etexcmds) that some package has redefined \expanded.
-(etexcmds) In the latter case, load this package earlier.
-) (/usr/share/texmf-texlive/tex/latex/latexconfig/hyperref.cfg
+\Hy@SavedSpaceFactor=\count116
+(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
-) (/usr/share/texmf-texlive/tex/latex/oberdiek/kvoptions.sty
-Package: kvoptions 2009/08/13 v3.4 Keyval support for LaTeX options (HO)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/kvsetkeys.sty
-Package: kvsetkeys 2009/07/30 v1.5 Key value parser with default handler suppor
-t (HO)
-))
-Package hyperref Info: Option `colorlinks' set `true' on input line 2864.
-Package hyperref Info: Option `breaklinks' set `true' on input line 2864.
-Package hyperref Info: Hyper figures OFF on input line 2975.
-Package hyperref Info: Link nesting OFF on input line 2980.
-Package hyperref Info: Hyper index ON on input line 2983.
-Package hyperref Info: Plain pages OFF on input line 2990.
-Package hyperref Info: Backreferencing OFF on input line 2995.
-Implicit mode ON; LaTeX internals redefined
-Package hyperref Info: Bookmarks ON on input line 3191.
-(/usr/share/texmf-texlive/tex/latex/ltxmisc/url.sty
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 3941.
+Package hyperref Info: Option `breaklinks' set `true' on input line 3941.
+Package hyperref Info: Hyper figures OFF on input line 4062.
+Package hyperref Info: Link nesting OFF on input line 4067.
+Package hyperref Info: Hyper index ON on input line 4070.
+Package hyperref Info: Plain pages OFF on input line 4077.
+Package hyperref Info: Backreferencing OFF on input line 4082.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4300.
+\c@Hy@tempcnt=\count117
+(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip11
Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc.
)
-LaTeX Info: Redefining \url on input line 3428.
-(/usr/share/texmf-texlive/tex/generic/oberdiek/bitset.sty
-Package: bitset 2007/09/28 v1.0 Data type bit set (HO)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/intcalc.sty
-Package: intcalc 2007/09/27 v1.1 Expandable integer calculations (HO)
-) (/usr/share/texmf-texlive/tex/generic/oberdiek/bigintcalc.sty
-Package: bigintcalc 2007/11/11 v1.1 Expandable big integer calculations (HO)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/pdftexcmds.sty
-Package: pdftexcmds 2009/09/23 v0.6 LuaTeX support for pdfTeX utility functions
- (HO)
-(/usr/share/texmf-texlive/tex/generic/oberdiek/ifluatex.sty
-Package: ifluatex 2009/04/17 v1.2 Provides the ifluatex switch (HO)
-Package ifluatex Info: LuaTeX not detected.
-) (/usr/share/texmf-texlive/tex/generic/oberdiek/ltxcmds.sty
-Package: ltxcmds 2009/08/05 v1.0 Some LaTeX kernel commands for general use (HO
-)
-)
-Package pdftexcmds Info: LuaTeX not detected.
-Package pdftexcmds Info: \pdf@primitive is available.
-Package pdftexcmds Info: \pdf@ifprimitive is available.
-)))
-\Fld@menulength=\count116
+LaTeX Info: Redefining \url on input line 4653.
+\Fld@menulength=\count118
\Field@Width=\dimen137
\Fld@charsize=\dimen138
-\Field@toks=\toks30
-Package hyperref Info: Hyper figures OFF on input line 4377.
-Package hyperref Info: Link nesting OFF on input line 4382.
-Package hyperref Info: Hyper index ON on input line 4385.
-Package hyperref Info: backreferencing OFF on input line 4392.
-Package hyperref Info: Link coloring ON on input line 4395.
-Package hyperref Info: Link coloring with OCG OFF on input line 4402.
-Package hyperref Info: PDF/A mode OFF on input line 4407.
-(/usr/share/texmf-texlive/tex/generic/oberdiek/atbegshi.sty
-Package: atbegshi 2008/07/31 v1.9 At begin shipout hook (HO)
+Package hyperref Info: Hyper figures OFF on input line 5773.
+Package hyperref Info: Link nesting OFF on input line 5778.
+Package hyperref Info: Hyper index ON on input line 5781.
+Package hyperref Info: backreferencing OFF on input line 5788.
+Package hyperref Info: Link coloring ON on input line 5791.
+Package hyperref Info: Link coloring with OCG OFF on input line 5798.
+Package hyperref Info: PDF/A mode OFF on input line 5803.
+LaTeX Info: Redefining \ref on input line 5843.
+LaTeX Info: Redefining \pageref on input line 5847.
+\Hy@abspage=\count119
+\c@Item=\count120
+\c@Hfootnote=\count121
)
-\Hy@abspage=\count117
-\c@Item=\count118
-\c@Hfootnote=\count119
+
+Package hyperref Message: Driver (autodetected): hpdftex.
+
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
+File: hpdftex.def 2012/05/13 v6.82q Hyperref driver for pdfTeX
+\Fld@listcount=\count122
+\c@bookmark@seq@number=\count123
+(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
)
-*hyperref using default driver hpdftex*
-(/usr/share/texmf-texlive/tex/latex/hyperref/hpdftex.def
-File: hpdftex.def 2009/10/09 v6.79a Hyperref driver for pdfTeX
-\Fld@listcount=\count120
-) (/usr/share/texmf-texlive/tex/latex/oberdiek/hypcap.sty
-Package: hypcap 2008/09/08 v1.10 Adjusting anchors of captions (HO)
+\Hy@SectionHShift=\skip75
+) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty
+Package: hypcap 2011/02/16 v1.11 Adjusting the anchors of captions (HO)
)
-\DUlineblockindent=\skip74
-) (/usr/share/texmf-texlive/tex/latex/multirow/multirow.sty
+\DUlineblockindent=\skip76
+) (/usr/share/texlive/texmf-dist/tex/latex/multirow/multirow.sty
\bigstrutjot=\dimen139
)
\@indexfile=\write5
@@ -724,50 +754,64 @@ LaTeX Font Info: ... okay on input line 113.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 113.
LaTeX Font Info: Try loading font information for TS1+cmr on input line 113.
-(/usr/share/texmf-texlive/tex/latex/base/ts1cmr.fd
+(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd
File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: ... okay on input line 113.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 113.
LaTeX Font Info: ... okay on input line 113.
LaTeX Font Info: Try loading font information for T1+ptm on input line 113.
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1ptm.fd
+(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd
File: t1ptm.fd 2001/06/04 font definitions for T1/ptm.
-) (/usr/share/texmf-texlive/tex/context/base/supp-pdf.mkii
+) (/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
-\scratchcounter=\count121
+\scratchcounter=\count124
\scratchdimen=\dimen140
\scratchbox=\box40
-\nofMPsegments=\count122
-\nofMParguments=\count123
-\everyMPshowfont=\toks31
-\MPscratchCnt=\count124
+\nofMPsegments=\count125
+\nofMParguments=\count126
+\everyMPshowfont=\toks30
+\MPscratchCnt=\count127
\MPscratchDim=\dimen141
-\MPnumerator=\count125
-\everyMPtoPDFconversion=\toks32
+\MPnumerator=\count128
+\makeMPintoPDFobject=\count129
+\everyMPtoPDFconversion=\toks31
+) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
+Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
+(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty
+Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
)
+Package grfext Info: Graphics extension search list:
+(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
+G,.JBIG2,.JB2,.eps]
+(grfext) \AppendGraphicsExtensions on input line 452.
+(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
+e
+))
+\AtBeginShipoutBox=\box41
Package hyperref Info: Link coloring ON on input line 113.
-(/usr/share/texmf-texlive/tex/latex/hyperref/nameref.sty
-Package: nameref 2007/05/29 v2.31 Cross-referencing by name of section
-(/usr/share/texmf-texlive/tex/latex/oberdiek/refcount.sty
-Package: refcount 2008/08/11 v3.1 Data extraction from references (HO)
+(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2010/04/30 v2.40 Cross-referencing by name of section
+(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
+Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO)
)
-\c@section@level=\count126
+\c@section@level=\count130
)
LaTeX Info: Redefining \ref on input line 113.
LaTeX Info: Redefining \pageref on input line 113.
+LaTeX Info: Redefining \nameref on input line 113.
(./manual.out) (./manual.out)
\@outlinefile=\write6
\openout6 = `manual.out'.
-\AtBeginShipoutBox=\box41
Underfull \hbox (badness 10000) in paragraph at lines 116--116
[]
LaTeX Font Info: Try loading font information for T1+phv on input line 116.
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1phv.fd
+(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd
File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv.
)
LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available
@@ -785,11 +829,228 @@ LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available
{/home/nikratio/.texmf-var/fonts/map/pdftex/updmap/pdftex.map
pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
-p/pdftex.map): fontmap entry for `ugqb8r' already exists, duplicates ignored
+p/pdftex.map): ambiguous entry for `/.notdef': font file present but not includ
+ed, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Agrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Egrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Eth': font file present but not included,
+will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Igrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/OE': font file present but not included, w
+ill be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Ocircumflex': font file present but not in
+cluded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Oslash': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/P': font file present but not included, wi
+ll be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/Udieresis': font file present but not incl
+uded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/X': font file present but not included, wi
+ll be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/acute': font file present but not included
+, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/adieresis': font file present but not incl
+uded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/agrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/at': font file present but not included, w
+ill be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/breve': font file present but not included
+, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/cedilla': font file present but not includ
+ed, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/circumflex': font file present but not inc
+luded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/currency': font file present but not inclu
+ded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/degree': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/dieresis': font file present but not inclu
+ded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/dollar': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/dotlessj': font file present but not inclu
+ded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/egrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/eight': font file present but not included
+, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/eth': font file present but not included,
+will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/exclamdown': font file present but not inc
+luded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/fraction': font file present but not inclu
+ded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/hyphen': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/igrave': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/ocircumflex': font file present but not in
+cluded, will be treated as font file not present
pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
-p/pdftex.map): fontmap entry for `ugqbo8r' already exists, duplicates ignored
+p/pdftex.map): ambiguous entry for `/oe': font file present but not included, w
+ill be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/ogonek': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/onequarter': font file present but not inc
+luded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/oslash': font file present but not include
+d, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/p': font file present but not included, wi
+ll be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/parenleft': font file present but not incl
+uded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/quotedblbase': font file present but not i
+ncluded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/quotedblright': font file present but not
+included, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/quoteleft': font file present but not incl
+uded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/space': font file present but not included
+, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/tilde': font file present but not included
+, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/udieresis': font file present but not incl
+uded, will be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/x': font file present but not included, wi
+ll be treated as font file not present
+
+
+pdfTeX warning: pdflatex (file /home/nikratio/.texmf-var/fonts/map/pdftex/updma
+p/pdftex.map): ambiguous entry for `/zero': font file present but not included,
+ will be treated as font file not present
}] [2
] (./manual.toc
@@ -819,7 +1080,7 @@ LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available
(Font) Font shape `T1/phv/b/n' tried instead on input line 121.
LaTeX Font Info: Try loading font information for TS1+ptm on input line 143.
-(/usr/share/texmf-texlive/tex/latex/psnfss/ts1ptm.fd
+(/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd
File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm.
) [1
@@ -827,7 +1088,7 @@ File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm.
] [2]
Chapter 2.
LaTeX Font Info: Try loading font information for T1+pcr on input line 249.
-(/usr/share/texmf-texlive/tex/latex/psnfss/t1pcr.fd
+(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd
File: t1pcr.fd 2001/06/04 font definitions for T1/pcr.
) [3
@@ -897,7 +1158,7 @@ Chapter 9.
]
Chapter 10.
-Underfull \hbox (badness 10000) in paragraph at lines 1462--1464
+Underfull \hbox (badness 10000) in paragraph at lines 1457--1459
[]\T1/ptm/m/n/10 Read au-then-ti-ca-tion cre-den-tials from this file (de-fault
:
[]
@@ -911,7 +1172,7 @@ Chapter 12.
[31
]
-Underfull \hbox (badness 10000) in paragraph at lines 1673--1678
+Underfull \hbox (badness 10000) in paragraph at lines 1668--1673
[]\T1/ptm/b/n/10 expire_backups \T1/ptm/m/n/10 us-age is sim-ple. It re-quires
back-ups to have names of the forms
[]
@@ -927,7 +1188,7 @@ Chapter 14.
] [38]
Chapter 15.
-Underfull \hbox (badness 10000) in paragraph at lines 1928--1930
+Underfull \hbox (badness 10000) in paragraph at lines 1923--1925
[]\T1/ptm/m/n/10 Read au-then-ti-ca-tion cre-den-tials from this file (de-fault
:
[]
@@ -935,25 +1196,25 @@ Underfull \hbox (badness 10000) in paragraph at lines 1928--1930
[39
]
-Underfull \hbox (badness 10000) in paragraph at lines 2012--2014
+Underfull \hbox (badness 10000) in paragraph at lines 2007--2009
[]\T1/ptm/m/n/10 Read au-then-ti-ca-tion cre-den-tials from this file (de-fault
:
[]
[40] [41]
-Underfull \hbox (badness 10000) in paragraph at lines 2096--2098
+Underfull \hbox (badness 10000) in paragraph at lines 2091--2093
[]\T1/ptm/m/n/10 Read au-then-ti-ca-tion cre-den-tials from this file (de-fault
:
[]
[42] [43] [44] [45] [46] [47] [48]
-Underfull \hbox (badness 10000) in paragraph at lines 2666--2668
+Underfull \hbox (badness 10000) in paragraph at lines 2656--2658
[]\T1/ptm/m/n/10 Read au-then-ti-ca-tion cre-den-tials from this file (de-fault
:
[]
[49] [50]
-Underfull \hbox (badness 10000) in paragraph at lines 2814--2819
+Underfull \hbox (badness 10000) in paragraph at lines 2804--2809
[]\T1/ptm/b/n/10 expire_backups \T1/ptm/m/n/10 us-age is sim-ple. It re-quires
back-ups to have names of the forms
[]
@@ -967,43 +1228,54 @@ Chapter 16.
]
Chapter 17.
[55]
-Underfull \hbox (badness 10000) in paragraph at lines 2983--2988
+Underfull \hbox (badness 10000) in paragraph at lines 2973--2978
\T1/ptm/m/n/10 S3QL has to take into ac-count that changes in ob-jects do not p
rop-a-gate im-me-di-ately in all
[]
-Underfull \hbox (badness 10000) in paragraph at lines 2983--2988
+Underfull \hbox (badness 10000) in paragraph at lines 2973--2978
\T1/ptm/m/n/10 back-ends. For ex-am-ple, when an Ama-zon S3 ob-ject is up-loade
d and im-me-di-ately down-loaded
[]
-Underfull \hbox (badness 10000) in paragraph at lines 2983--2988
+Underfull \hbox (badness 10000) in paragraph at lines 2973--2978
\T1/ptm/m/n/10 again, the down-loaded data might not yet re-flect the changes d
one in the up-load (see also
[]
No file manual.ind.
-[56] (./manual.aux) )
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 3027.
+[56]
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 3027.
+(./manual.aux)
+Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 3027.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 3027.
+
+Package rerunfilecheck Info: File `manual.out' has not changed.
+(rerunfilecheck) Checksum: ED25948C1D6AC523DA73C378D944AA01;4440.
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 3027.
+ )
Here is how much of TeX's memory you used:
- 8390 strings out of 495021
- 114321 string characters out of 1181036
- 201851 words of memory out of 3000000
- 11159 multiletter control sequences out of 15000+50000
+ 9255 strings out of 495007
+ 128728 string characters out of 3179691
+ 229413 words of memory out of 3000000
+ 12045 multiletter control sequences out of 15000+200000
58515 words of font info for 65 fonts, out of 3000000 for 9000
- 29 hyphenation exceptions out of 8191
- 45i,12n,49p,296b,469s stack positions out of 5000i,500n,10000p,200000b,50000s
-{/usr/share/texmf-texlive/fonts/enc/dvips/base/8r.enc}</us
-r/share/texmf-texlive/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texmf-texl
-ive/fonts/type1/urw/courier/ucrro8a.pfb></usr/share/texmf-texlive/fonts/type1/u
-rw/helvetic/uhvb8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/helvetic/uhvbo
-8a.pfb></usr/share/texmf-texlive/fonts/type1/urw/times/utmb8a.pfb></usr/share/t
-exmf-texlive/fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-texlive/fonts/t
-ype1/urw/times/utmri8a.pfb>
-Output written on manual.pdf (60 pages, 310875 bytes).
+ 15 hyphenation exceptions out of 8191
+ 37i,12n,49p,248b,470s stack positions out of 5000i,500n,10000p,200000b,50000s
+{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texliv
+e/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb></usr/share/texlive/texmf-dist/
+fonts/type1/urw/courier/ucrro8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/
+urw/helvetic/uhvb8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic
+/uhvbo8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></
+usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb></usr/share/texli
+ve/texmf-dist/fonts/type1/urw/times/utmri8a.pfb>
+Output written on manual.pdf (60 pages, 225680 bytes).
PDF statistics:
- 889 PDF objects out of 1000 (max. 8388607)
+ 899 PDF objects out of 1000 (max. 8388607)
+ 821 compressed objects within 9 object streams
230 named destinations out of 1000 (max. 500000)
561 words of extra memory for PDF output out of 10000 (max. 10000000)
diff --git a/doc/latex/manual.out b/doc/latex/manual.out
index 8e969ec..481b844 100644
--- a/doc/latex/manual.out
+++ b/doc/latex/manual.out
@@ -1,70 +1,70 @@
-\BOOKMARK [0][-]{chapter.1}{About S3QL}{}
-\BOOKMARK [1][-]{section.1.1}{Features}{chapter.1}
-\BOOKMARK [1][-]{section.1.2}{Development Status}{chapter.1}
-\BOOKMARK [0][-]{chapter.2}{Installation}{}
-\BOOKMARK [1][-]{section.2.1}{Dependencies}{chapter.2}
-\BOOKMARK [1][-]{section.2.2}{Installing S3QL}{chapter.2}
-\BOOKMARK [0][-]{chapter.3}{Storage Backends}{}
-\BOOKMARK [1][-]{section.3.1}{Google Storage}{chapter.3}
-\BOOKMARK [1][-]{section.3.2}{Amazon S3}{chapter.3}
-\BOOKMARK [1][-]{section.3.3}{OpenStack/Swift}{chapter.3}
-\BOOKMARK [1][-]{section.3.4}{RackSpace CloudFiles}{chapter.3}
-\BOOKMARK [1][-]{section.3.5}{S3 compatible}{chapter.3}
-\BOOKMARK [1][-]{section.3.6}{Local}{chapter.3}
-\BOOKMARK [0][-]{chapter.4}{Important Rules to Avoid Losing Data}{}
-\BOOKMARK [1][-]{section.4.1}{Rules in a Nutshell}{chapter.4}
-\BOOKMARK [1][-]{section.4.2}{Consistency Window List}{chapter.4}
-\BOOKMARK [1][-]{section.4.3}{Data Consistency}{chapter.4}
-\BOOKMARK [1][-]{section.4.4}{Data Durability}{chapter.4}
-\BOOKMARK [0][-]{chapter.5}{File System Creation}{}
-\BOOKMARK [0][-]{chapter.6}{Managing File Systems}{}
-\BOOKMARK [1][-]{section.6.1}{Changing the Passphrase}{chapter.6}
-\BOOKMARK [1][-]{section.6.2}{Upgrading the file system}{chapter.6}
-\BOOKMARK [1][-]{section.6.3}{Deleting a file system}{chapter.6}
-\BOOKMARK [1][-]{section.6.4}{Restoring Metadata Backups}{chapter.6}
-\BOOKMARK [0][-]{chapter.7}{Mounting}{}
-\BOOKMARK [1][-]{section.7.1}{Compression Algorithms}{chapter.7}
-\BOOKMARK [1][-]{section.7.2}{Notes about Caching}{chapter.7}
-\BOOKMARK [1][-]{section.7.3}{Automatic Mounting}{chapter.7}
-\BOOKMARK [0][-]{chapter.8}{Advanced S3QL Features}{}
-\BOOKMARK [1][-]{section.8.1}{Snapshotting and Copy-on-Write}{chapter.8}
-\BOOKMARK [1][-]{section.8.2}{Getting Statistics}{chapter.8}
-\BOOKMARK [1][-]{section.8.3}{Immutable Trees}{chapter.8}
-\BOOKMARK [1][-]{section.8.4}{Fast Recursive Removal}{chapter.8}
-\BOOKMARK [1][-]{section.8.5}{Runtime Configuration}{chapter.8}
-\BOOKMARK [0][-]{chapter.9}{Unmounting}{}
-\BOOKMARK [0][-]{chapter.10}{Checking for Errors}{}
-\BOOKMARK [0][-]{chapter.11}{Storing Authentication Information}{}
-\BOOKMARK [0][-]{chapter.12}{Contributed Programs}{}
-\BOOKMARK [1][-]{section.12.1}{benchmark.py}{chapter.12}
-\BOOKMARK [1][-]{section.12.2}{s3\137copy.py}{chapter.12}
-\BOOKMARK [1][-]{section.12.3}{pcp.py}{chapter.12}
-\BOOKMARK [1][-]{section.12.4}{s3\137backup.sh}{chapter.12}
-\BOOKMARK [1][-]{section.12.5}{expire\137backups.py}{chapter.12}
-\BOOKMARK [1][-]{section.12.6}{s3ql\137upstart.conf}{chapter.12}
-\BOOKMARK [0][-]{chapter.13}{Tips \046 Tricks}{}
-\BOOKMARK [1][-]{section.13.1}{SSH Backend}{chapter.13}
-\BOOKMARK [1][-]{section.13.2}{Permanently mounted backup file system}{chapter.13}
-\BOOKMARK [1][-]{section.13.3}{Improving copy performance}{chapter.13}
-\BOOKMARK [0][-]{chapter.14}{Known Issues}{}
-\BOOKMARK [0][-]{chapter.15}{Manpages}{}
-\BOOKMARK [1][-]{section.15.1}{The mkfs.s3ql command}{chapter.15}
-\BOOKMARK [1][-]{section.15.2}{The s3qladm command}{chapter.15}
-\BOOKMARK [1][-]{section.15.3}{The mount.s3ql command}{chapter.15}
-\BOOKMARK [1][-]{section.15.4}{The s3qlstat command}{chapter.15}
-\BOOKMARK [1][-]{section.15.5}{The s3qlctrl command}{chapter.15}
-\BOOKMARK [1][-]{section.15.6}{The s3qlcp command}{chapter.15}
-\BOOKMARK [1][-]{section.15.7}{The s3qlrm command}{chapter.15}
-\BOOKMARK [1][-]{section.15.8}{The s3qllock command}{chapter.15}
-\BOOKMARK [1][-]{section.15.9}{The umount.s3ql command}{chapter.15}
-\BOOKMARK [1][-]{section.15.10}{The fsck.s3ql command}{chapter.15}
-\BOOKMARK [1][-]{section.15.11}{The pcp command}{chapter.15}
-\BOOKMARK [1][-]{section.15.12}{The expire\137backups command}{chapter.15}
-\BOOKMARK [0][-]{chapter.16}{Further Resources / Getting Help}{}
-\BOOKMARK [0][-]{chapter.17}{Implementation Details}{}
-\BOOKMARK [1][-]{section.17.1}{Metadata Storage}{chapter.17}
-\BOOKMARK [1][-]{section.17.2}{Data Storage}{chapter.17}
-\BOOKMARK [1][-]{section.17.3}{Data De-Duplication}{chapter.17}
-\BOOKMARK [1][-]{section.17.4}{Caching}{chapter.17}
-\BOOKMARK [1][-]{section.17.5}{Eventual Consistency Handling}{chapter.17}
-\BOOKMARK [1][-]{section.17.6}{Encryption}{chapter.17}
+\BOOKMARK [0][-]{chapter.1}{About S3QL}{}% 1
+\BOOKMARK [1][-]{section.1.1}{Features}{chapter.1}% 2
+\BOOKMARK [1][-]{section.1.2}{Development Status}{chapter.1}% 3
+\BOOKMARK [0][-]{chapter.2}{Installation}{}% 4
+\BOOKMARK [1][-]{section.2.1}{Dependencies}{chapter.2}% 5
+\BOOKMARK [1][-]{section.2.2}{Installing S3QL}{chapter.2}% 6
+\BOOKMARK [0][-]{chapter.3}{Storage Backends}{}% 7
+\BOOKMARK [1][-]{section.3.1}{Google Storage}{chapter.3}% 8
+\BOOKMARK [1][-]{section.3.2}{Amazon S3}{chapter.3}% 9
+\BOOKMARK [1][-]{section.3.3}{OpenStack/Swift}{chapter.3}% 10
+\BOOKMARK [1][-]{section.3.4}{RackSpace CloudFiles}{chapter.3}% 11
+\BOOKMARK [1][-]{section.3.5}{S3 compatible}{chapter.3}% 12
+\BOOKMARK [1][-]{section.3.6}{Local}{chapter.3}% 13
+\BOOKMARK [0][-]{chapter.4}{Important Rules to Avoid Losing Data}{}% 14
+\BOOKMARK [1][-]{section.4.1}{Rules in a Nutshell}{chapter.4}% 15
+\BOOKMARK [1][-]{section.4.2}{Consistency Window List}{chapter.4}% 16
+\BOOKMARK [1][-]{section.4.3}{Data Consistency}{chapter.4}% 17
+\BOOKMARK [1][-]{section.4.4}{Data Durability}{chapter.4}% 18
+\BOOKMARK [0][-]{chapter.5}{File System Creation}{}% 19
+\BOOKMARK [0][-]{chapter.6}{Managing File Systems}{}% 20
+\BOOKMARK [1][-]{section.6.1}{Changing the Passphrase}{chapter.6}% 21
+\BOOKMARK [1][-]{section.6.2}{Upgrading the file system}{chapter.6}% 22
+\BOOKMARK [1][-]{section.6.3}{Deleting a file system}{chapter.6}% 23
+\BOOKMARK [1][-]{section.6.4}{Restoring Metadata Backups}{chapter.6}% 24
+\BOOKMARK [0][-]{chapter.7}{Mounting}{}% 25
+\BOOKMARK [1][-]{section.7.1}{Compression Algorithms}{chapter.7}% 26
+\BOOKMARK [1][-]{section.7.2}{Notes about Caching}{chapter.7}% 27
+\BOOKMARK [1][-]{section.7.3}{Automatic Mounting}{chapter.7}% 28
+\BOOKMARK [0][-]{chapter.8}{Advanced S3QL Features}{}% 29
+\BOOKMARK [1][-]{section.8.1}{Snapshotting and Copy-on-Write}{chapter.8}% 30
+\BOOKMARK [1][-]{section.8.2}{Getting Statistics}{chapter.8}% 31
+\BOOKMARK [1][-]{section.8.3}{Immutable Trees}{chapter.8}% 32
+\BOOKMARK [1][-]{section.8.4}{Fast Recursive Removal}{chapter.8}% 33
+\BOOKMARK [1][-]{section.8.5}{Runtime Configuration}{chapter.8}% 34
+\BOOKMARK [0][-]{chapter.9}{Unmounting}{}% 35
+\BOOKMARK [0][-]{chapter.10}{Checking for Errors}{}% 36
+\BOOKMARK [0][-]{chapter.11}{Storing Authentication Information}{}% 37
+\BOOKMARK [0][-]{chapter.12}{Contributed Programs}{}% 38
+\BOOKMARK [1][-]{section.12.1}{benchmark.py}{chapter.12}% 39
+\BOOKMARK [1][-]{section.12.2}{s3\137copy.py}{chapter.12}% 40
+\BOOKMARK [1][-]{section.12.3}{pcp.py}{chapter.12}% 41
+\BOOKMARK [1][-]{section.12.4}{s3\137backup.sh}{chapter.12}% 42
+\BOOKMARK [1][-]{section.12.5}{expire\137backups.py}{chapter.12}% 43
+\BOOKMARK [1][-]{section.12.6}{s3ql\137upstart.conf}{chapter.12}% 44
+\BOOKMARK [0][-]{chapter.13}{Tips \046 Tricks}{}% 45
+\BOOKMARK [1][-]{section.13.1}{SSH Backend}{chapter.13}% 46
+\BOOKMARK [1][-]{section.13.2}{Permanently mounted backup file system}{chapter.13}% 47
+\BOOKMARK [1][-]{section.13.3}{Improving copy performance}{chapter.13}% 48
+\BOOKMARK [0][-]{chapter.14}{Known Issues}{}% 49
+\BOOKMARK [0][-]{chapter.15}{Manpages}{}% 50
+\BOOKMARK [1][-]{section.15.1}{The mkfs.s3ql command}{chapter.15}% 51
+\BOOKMARK [1][-]{section.15.2}{The s3qladm command}{chapter.15}% 52
+\BOOKMARK [1][-]{section.15.3}{The mount.s3ql command}{chapter.15}% 53
+\BOOKMARK [1][-]{section.15.4}{The s3qlstat command}{chapter.15}% 54
+\BOOKMARK [1][-]{section.15.5}{The s3qlctrl command}{chapter.15}% 55
+\BOOKMARK [1][-]{section.15.6}{The s3qlcp command}{chapter.15}% 56
+\BOOKMARK [1][-]{section.15.7}{The s3qlrm command}{chapter.15}% 57
+\BOOKMARK [1][-]{section.15.8}{The s3qllock command}{chapter.15}% 58
+\BOOKMARK [1][-]{section.15.9}{The umount.s3ql command}{chapter.15}% 59
+\BOOKMARK [1][-]{section.15.10}{The fsck.s3ql command}{chapter.15}% 60
+\BOOKMARK [1][-]{section.15.11}{The pcp command}{chapter.15}% 61
+\BOOKMARK [1][-]{section.15.12}{The expire\137backups command}{chapter.15}% 62
+\BOOKMARK [0][-]{chapter.16}{Further Resources / Getting Help}{}% 63
+\BOOKMARK [0][-]{chapter.17}{Implementation Details}{}% 64
+\BOOKMARK [1][-]{section.17.1}{Metadata Storage}{chapter.17}% 65
+\BOOKMARK [1][-]{section.17.2}{Data Storage}{chapter.17}% 66
+\BOOKMARK [1][-]{section.17.3}{Data De-Duplication}{chapter.17}% 67
+\BOOKMARK [1][-]{section.17.4}{Caching}{chapter.17}% 68
+\BOOKMARK [1][-]{section.17.5}{Eventual Consistency Handling}{chapter.17}% 69
+\BOOKMARK [1][-]{section.17.6}{Encryption}{chapter.17}% 70
diff --git a/doc/latex/manual.tex b/doc/latex/manual.tex
index 7cd66e4..6310756 100644
--- a/doc/latex/manual.tex
+++ b/doc/latex/manual.tex
@@ -13,8 +13,8 @@
\title{S3QL Documentation}
-\date{May 04, 2012}
-\release{1.11.1}
+\date{September 03, 2012}
+\release{1.12}
\author{Nikolaus Rath}
\newcommand{\sphinxlogo}{}
\renewcommand{\releasename}{Release}
@@ -833,9 +833,9 @@ just print program version and exit
\item [-L \textless{}name\textgreater{}]
Filesystem label
\item [-{-}max-obj-size \textless{}size\textgreater{}]
-Maximum size of storage objects in KB. Files bigger
+Maximum size of storage objects in KiB. Files bigger
than this will be spread over multiple objects in the
-storage backend. Default: 10240 KB.
+storage backend. Default: 10240 KiB.
\item [-{-}plain]
Create unencrypted file system.
\item [-{-}force]
@@ -876,8 +876,8 @@ specified multiple times.
be really quiet
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \code{none} to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \code{none} to disable logging. Default:
\code{none}
\item [-{-}authfile \textless{}path\textgreater{}]
Read authentication credentials from this file (default:
@@ -982,7 +982,7 @@ This command accepts the following options:
\begin{optionlist}{3cm}
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be
-rotated when it reaches 1 MB, and at most 5 old log
+rotated when it reaches 1 MiB, and at most 5 old log
files will be kept. Specify \code{none} to disable
logging. Default: \code{\textasciitilde{}/.s3ql/mount.log}
\item [-{-}cachedir \textless{}path\textgreater{}]
@@ -1005,8 +1005,8 @@ option is not set.
\item [-{-}version]
just print program version and exit
\item [-{-}cachesize \textless{}size\textgreater{}]
-Cache size in kb (default: 102400 (100 MB)). Should be
-at least 10 times the maximum object size of the
+Cache size in KiB (default: 102400 (100 MiB)). Should
+be at least 10 times the maximum object size of the
filesystem, otherwise an object may be retrieved and
written several times during a single write() or
read() operation.
@@ -1017,11 +1017,6 @@ you increase this number you have to make sure that
your process file descriptor limit (as set with
\code{ulimit -n}) is high enough (at least the number of
cache entries + 100).
-\item [-{-}min-obj-size \textless{}size\textgreater{}]
-Minimum size of storage objects in KB. Files smaller
-than this may be combined into groups that are stored
-as single objects in the storage backend. Default: 512
-KB.
\item [-{-}allow-other]
Normally, only the user who called \code{mount.s3ql} can
access the mount point. This user then also has full
@@ -1453,8 +1448,8 @@ This command accepts the following options:
\begin{optionlist}{3cm}
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \code{none} to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \code{none} to disable logging. Default:
\code{\textasciitilde{}/.s3ql/fsck.log}
\item [-{-}cachedir \textless{}path\textgreater{}]
Store cached data in this directory (default: \code{\textasciitilde{}/.s3ql)}
@@ -1819,9 +1814,9 @@ details.
\item {}
S3QL is rather slow when an application tries to write data in
-unreasonably small chunks. If a 1 MB file is copied in chunks of 1
+unreasonably small chunks. If a 1 MiB file is copied in chunks of 1
KB, this will take more than 10 times as long as when it's copied
-with the (recommended) chunk size of 128 KB.
+with the (recommended) chunk size of 128 KiB.
This is a limitation of the FUSE library (which does not yet support
write caching) which will hopefully be addressed in some future FUSE
@@ -1943,9 +1938,9 @@ just print program version and exit
\item [-L \textless{}name\textgreater{}]
Filesystem label
\item [-{-}max-obj-size \textless{}size\textgreater{}]
-Maximum size of storage objects in KB. Files bigger
+Maximum size of storage objects in KiB. Files bigger
than this will be spread over multiple objects in the
-storage backend. Default: 10240 KB.
+storage backend. Default: 10240 KiB.
\item [-{-}plain]
Create unencrypted file system.
\item [-{-}force]
@@ -2005,8 +2000,8 @@ specified multiple times.
be really quiet
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \code{none} to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \code{none} to disable logging. Default:
\code{none}
\item [-{-}authfile \textless{}path\textgreater{}]
Read authentication credentials from this file (default:
@@ -2086,7 +2081,7 @@ The \textbf{mount.s3ql} command accepts the following options.
\begin{optionlist}{3cm}
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be
-rotated when it reaches 1 MB, and at most 5 old log
+rotated when it reaches 1 MiB, and at most 5 old log
files will be kept. Specify \code{none} to disable
logging. Default: \code{\textasciitilde{}/.s3ql/mount.log}
\item [-{-}cachedir \textless{}path\textgreater{}]
@@ -2109,8 +2104,8 @@ option is not set.
\item [-{-}version]
just print program version and exit
\item [-{-}cachesize \textless{}size\textgreater{}]
-Cache size in kb (default: 102400 (100 MB)). Should be
-at least 10 times the maximum object size of the
+Cache size in KiB (default: 102400 (100 MiB)). Should
+be at least 10 times the maximum object size of the
filesystem, otherwise an object may be retrieved and
written several times during a single write() or
read() operation.
@@ -2121,11 +2116,6 @@ you increase this number you have to make sure that
your process file descriptor limit (as set with
\code{ulimit -n}) is high enough (at least the number of
cache entries + 100).
-\item [-{-}min-obj-size \textless{}size\textgreater{}]
-Minimum size of storage objects in KB. Files smaller
-than this may be combined into groups that are stored
-as single objects in the storage backend. Default: 512
-KB.
\item [-{-}allow-other]
Normally, only the user who called \code{mount.s3ql} can
access the mount point. This user then also has full
@@ -2266,7 +2256,7 @@ block while a snapshot of the metadata is prepared for upload.
\item[{cachesize}] \leavevmode
Changes the cache size of the file system. This action requires an
-additional argument that specifies the new cache size in kB, so the
+additional argument that specifies the new cache size in KiB, so the
complete command line is:
\begin{Verbatim}[commandchars=\\\{\}]
@@ -2657,8 +2647,8 @@ The \textbf{mkfs.s3ql} command accepts the following options.
\begin{optionlist}{3cm}
\item [-{-}log \textless{}target\textgreater{}]
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \code{none} to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \code{none} to disable logging. Default:
\code{\textasciitilde{}/.s3ql/fsck.log}
\item [-{-}cachedir \textless{}path\textgreater{}]
Store cached data in this directory (default: \code{\textasciitilde{}/.s3ql)}
diff --git a/doc/latex/manual.toc b/doc/latex/manual.toc
index 59e664c..9b700a7 100644
--- a/doc/latex/manual.toc
+++ b/doc/latex/manual.toc
@@ -70,7 +70,7 @@
\contentsline {subsection}{\numberline {15.3.1}Synopsis}{41}{subsection.15.3.1}
\contentsline {subsection}{\numberline {15.3.2}Description}{41}{subsection.15.3.2}
\contentsline {subsection}{\numberline {15.3.3}Options}{41}{subsection.15.3.3}
-\contentsline {subsection}{\numberline {15.3.4}Exit Status}{43}{subsection.15.3.4}
+\contentsline {subsection}{\numberline {15.3.4}Exit Status}{42}{subsection.15.3.4}
\contentsline {subsection}{\numberline {15.3.5}See Also}{43}{subsection.15.3.5}
\contentsline {section}{\numberline {15.4}The \textbf {s3qlstat} command}{43}{section.15.4}
\contentsline {subsection}{\numberline {15.4.1}Synopsis}{43}{subsection.15.4.1}
@@ -78,17 +78,17 @@
\contentsline {subsection}{\numberline {15.4.3}Options}{43}{subsection.15.4.3}
\contentsline {subsection}{\numberline {15.4.4}Exit Status}{43}{subsection.15.4.4}
\contentsline {subsection}{\numberline {15.4.5}See Also}{43}{subsection.15.4.5}
-\contentsline {section}{\numberline {15.5}The \textbf {s3qlctrl} command}{44}{section.15.5}
-\contentsline {subsection}{\numberline {15.5.1}Synopsis}{44}{subsection.15.5.1}
+\contentsline {section}{\numberline {15.5}The \textbf {s3qlctrl} command}{43}{section.15.5}
+\contentsline {subsection}{\numberline {15.5.1}Synopsis}{43}{subsection.15.5.1}
\contentsline {subsection}{\numberline {15.5.2}Description}{44}{subsection.15.5.2}
\contentsline {subsection}{\numberline {15.5.3}Options}{44}{subsection.15.5.3}
\contentsline {subsection}{\numberline {15.5.4}Exit Status}{44}{subsection.15.5.4}
-\contentsline {subsection}{\numberline {15.5.5}See Also}{45}{subsection.15.5.5}
+\contentsline {subsection}{\numberline {15.5.5}See Also}{44}{subsection.15.5.5}
\contentsline {section}{\numberline {15.6}The \textbf {s3qlcp} command}{45}{section.15.6}
\contentsline {subsection}{\numberline {15.6.1}Synopsis}{45}{subsection.15.6.1}
\contentsline {subsection}{\numberline {15.6.2}Description}{45}{subsection.15.6.2}
\contentsline {subsubsection}{Snapshotting vs Hardlinking}{45}{subsubsection*.3}
-\contentsline {subsection}{\numberline {15.6.3}Options}{46}{subsection.15.6.3}
+\contentsline {subsection}{\numberline {15.6.3}Options}{45}{subsection.15.6.3}
\contentsline {subsection}{\numberline {15.6.4}Exit Status}{46}{subsection.15.6.4}
\contentsline {subsection}{\numberline {15.6.5}See Also}{46}{subsection.15.6.5}
\contentsline {section}{\numberline {15.7}The \textbf {s3qlrm} command}{46}{section.15.7}
@@ -96,36 +96,36 @@
\contentsline {subsection}{\numberline {15.7.2}Description}{46}{subsection.15.7.2}
\contentsline {subsection}{\numberline {15.7.3}Options}{46}{subsection.15.7.3}
\contentsline {subsection}{\numberline {15.7.4}Exit Status}{46}{subsection.15.7.4}
-\contentsline {subsection}{\numberline {15.7.5}See Also}{47}{subsection.15.7.5}
+\contentsline {subsection}{\numberline {15.7.5}See Also}{46}{subsection.15.7.5}
\contentsline {section}{\numberline {15.8}The \textbf {s3qllock} command}{47}{section.15.8}
\contentsline {subsection}{\numberline {15.8.1}Synopsis}{47}{subsection.15.8.1}
\contentsline {subsection}{\numberline {15.8.2}Description}{47}{subsection.15.8.2}
\contentsline {subsection}{\numberline {15.8.3}Rationale}{47}{subsection.15.8.3}
\contentsline {subsection}{\numberline {15.8.4}Options}{47}{subsection.15.8.4}
-\contentsline {subsection}{\numberline {15.8.5}Exit Status}{48}{subsection.15.8.5}
+\contentsline {subsection}{\numberline {15.8.5}Exit Status}{47}{subsection.15.8.5}
\contentsline {subsection}{\numberline {15.8.6}See Also}{48}{subsection.15.8.6}
\contentsline {section}{\numberline {15.9}The \textbf {umount.s3ql} command}{48}{section.15.9}
\contentsline {subsection}{\numberline {15.9.1}Synopsis}{48}{subsection.15.9.1}
\contentsline {subsection}{\numberline {15.9.2}Description}{48}{subsection.15.9.2}
\contentsline {subsection}{\numberline {15.9.3}Options}{48}{subsection.15.9.3}
\contentsline {subsection}{\numberline {15.9.4}Exit Status}{48}{subsection.15.9.4}
-\contentsline {subsection}{\numberline {15.9.5}See Also}{49}{subsection.15.9.5}
+\contentsline {subsection}{\numberline {15.9.5}See Also}{48}{subsection.15.9.5}
\contentsline {section}{\numberline {15.10}The \textbf {fsck.s3ql} command}{49}{section.15.10}
\contentsline {subsection}{\numberline {15.10.1}Synopsis}{49}{subsection.15.10.1}
\contentsline {subsection}{\numberline {15.10.2}Description}{49}{subsection.15.10.2}
\contentsline {subsection}{\numberline {15.10.3}Options}{49}{subsection.15.10.3}
\contentsline {subsection}{\numberline {15.10.4}Exit Status}{49}{subsection.15.10.4}
-\contentsline {subsection}{\numberline {15.10.5}See Also}{50}{subsection.15.10.5}
+\contentsline {subsection}{\numberline {15.10.5}See Also}{49}{subsection.15.10.5}
\contentsline {section}{\numberline {15.11}The \textbf {pcp} command}{50}{section.15.11}
\contentsline {subsection}{\numberline {15.11.1}Synopsis}{50}{subsection.15.11.1}
\contentsline {subsection}{\numberline {15.11.2}Description}{50}{subsection.15.11.2}
\contentsline {subsection}{\numberline {15.11.3}Options}{50}{subsection.15.11.3}
\contentsline {subsection}{\numberline {15.11.4}Exit Status}{50}{subsection.15.11.4}
\contentsline {subsection}{\numberline {15.11.5}See Also}{50}{subsection.15.11.5}
-\contentsline {section}{\numberline {15.12}The \textbf {expire\_backups} command}{51}{section.15.12}
-\contentsline {subsection}{\numberline {15.12.1}Synopsis}{51}{subsection.15.12.1}
-\contentsline {subsection}{\numberline {15.12.2}Description}{51}{subsection.15.12.2}
-\contentsline {subsection}{\numberline {15.12.3}Options}{52}{subsection.15.12.3}
+\contentsline {section}{\numberline {15.12}The \textbf {expire\_backups} command}{50}{section.15.12}
+\contentsline {subsection}{\numberline {15.12.1}Synopsis}{50}{subsection.15.12.1}
+\contentsline {subsection}{\numberline {15.12.2}Description}{50}{subsection.15.12.2}
+\contentsline {subsection}{\numberline {15.12.3}Options}{51}{subsection.15.12.3}
\contentsline {subsection}{\numberline {15.12.4}Exit Status}{52}{subsection.15.12.4}
\contentsline {subsection}{\numberline {15.12.5}See Also}{52}{subsection.15.12.5}
\contentsline {chapter}{\numberline {16}Further Resources / Getting Help}{53}{chapter.16}
diff --git a/doc/man/fsck.s3ql.1 b/doc/man/fsck.s3ql.1
index 9442872..b3f2578 100644
--- a/doc/man/fsck.s3ql.1
+++ b/doc/man/fsck.s3ql.1
@@ -1,4 +1,4 @@
-.TH "FSCK.S3QL" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "FSCK.S3QL" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
fsck.s3ql \- Check an S3QL file system for errors
.
@@ -57,8 +57,8 @@ The \fBmkfs.s3ql\fP command accepts the following options.
.TP
.BI \-\-log \ <target>
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \fBnone\fP to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \fBnone\fP to disable logging. Default:
\fB~/.s3ql/fsck.log\fP
.TP
.BI \-\-cachedir \ <path>
diff --git a/doc/man/mkfs.s3ql.1 b/doc/man/mkfs.s3ql.1
index aa94166..2ebec69 100644
--- a/doc/man/mkfs.s3ql.1
+++ b/doc/man/mkfs.s3ql.1
@@ -1,4 +1,4 @@
-.TH "MKFS.S3QL" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "MKFS.S3QL" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
mkfs.s3ql \- Create an S3QL file system
.
@@ -88,9 +88,9 @@ just print program version and exit
Filesystem label
.TP
.BI \-\-max\-obj\-size \ <size>
-Maximum size of storage objects in KB. Files bigger
+Maximum size of storage objects in KiB. Files bigger
than this will be spread over multiple objects in the
-storage backend. Default: 10240 KB.
+storage backend. Default: 10240 KiB.
.TP
.B \-\-plain
Create unencrypted file system.
diff --git a/doc/man/mount.s3ql.1 b/doc/man/mount.s3ql.1
index a1152bd..4d40e0f 100644
--- a/doc/man/mount.s3ql.1
+++ b/doc/man/mount.s3ql.1
@@ -1,4 +1,4 @@
-.TH "MOUNT.S3QL" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "MOUNT.S3QL" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
mount.s3ql \- Mount an S3QL file system
.
@@ -56,7 +56,7 @@ The \fBmount.s3ql\fP command accepts the following options.
.TP
.BI \-\-log \ <target>
Write logging info into this file. File will be
-rotated when it reaches 1 MB, and at most 5 old log
+rotated when it reaches 1 MiB, and at most 5 old log
files will be kept. Specify \fBnone\fP to disable
logging. Default: \fB~/.s3ql/mount.log\fP
.TP
@@ -86,8 +86,8 @@ option is not set.
just print program version and exit
.TP
.BI \-\-cachesize \ <size>
-Cache size in kb (default: 102400 (100 MB)). Should be
-at least 10 times the maximum object size of the
+Cache size in KiB (default: 102400 (100 MiB)). Should
+be at least 10 times the maximum object size of the
filesystem, otherwise an object may be retrieved and
written several times during a single write() or
read() operation.
@@ -100,12 +100,6 @@ your process file descriptor limit (as set with
\fBulimit \-n\fP) is high enough (at least the number of
cache entries + 100).
.TP
-.BI \-\-min\-obj\-size \ <size>
-Minimum size of storage objects in KB. Files smaller
-than this may be combined into groups that are stored
-as single objects in the storage backend. Default: 512
-KB.
-.TP
.B \-\-allow\-other
Normally, only the user who called \fBmount.s3ql\fP can
access the mount point. This user then also has full
diff --git a/doc/man/s3qladm.1 b/doc/man/s3qladm.1
index 59d828a..f4583a7 100644
--- a/doc/man/s3qladm.1
+++ b/doc/man/s3qladm.1
@@ -1,4 +1,4 @@
-.TH "S3QLADM" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLADM" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qladm \- Manage S3QL file systems
.
@@ -69,8 +69,8 @@ be really quiet
.TP
.BI \-\-log \ <target>
Write logging info into this file. File will be rotated
-when it reaches 1 MB, and at most 5 old log files will be
-kept. Specify \fBnone\fP to disable logging. Default:
+when it reaches 1 MiB, and at most 5 old log files will
+be kept. Specify \fBnone\fP to disable logging. Default:
\fBnone\fP
.TP
.BI \-\-authfile \ <path>
diff --git a/doc/man/s3qlcp.1 b/doc/man/s3qlcp.1
index cd308bd..0875b48 100644
--- a/doc/man/s3qlcp.1
+++ b/doc/man/s3qlcp.1
@@ -1,4 +1,4 @@
-.TH "S3QLCP" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLCP" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qlcp \- Copy-on-write replication on S3QL file systems
.
diff --git a/doc/man/s3qlctrl.1 b/doc/man/s3qlctrl.1
index 7568a01..ab2686f 100644
--- a/doc/man/s3qlctrl.1
+++ b/doc/man/s3qlctrl.1
@@ -1,4 +1,4 @@
-.TH "S3QLCTRL" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLCTRL" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qlctrl \- Control a mounted S3QL file system
.
@@ -67,7 +67,7 @@ block while a snapshot of the metadata is prepared for upload.
.TP
.B cachesize
Changes the cache size of the file system. This action requires an
-additional argument that specifies the new cache size in kB, so the
+additional argument that specifies the new cache size in KiB, so the
complete command line is:
.sp
.nf
diff --git a/doc/man/s3qllock.1 b/doc/man/s3qllock.1
index 1ef560e..9aa0773 100644
--- a/doc/man/s3qllock.1
+++ b/doc/man/s3qllock.1
@@ -1,4 +1,4 @@
-.TH "S3QLLOCK" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLLOCK" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qllock \- Make trees on an S3QL file system immutable
.
diff --git a/doc/man/s3qlrm.1 b/doc/man/s3qlrm.1
index 32cb077..0e91684 100644
--- a/doc/man/s3qlrm.1
+++ b/doc/man/s3qlrm.1
@@ -1,4 +1,4 @@
-.TH "S3QLRM" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLRM" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qlrm \- Fast tree removal on S3QL file systems
.
diff --git a/doc/man/s3qlstat.1 b/doc/man/s3qlstat.1
index c0f7e0d..2b93fd6 100644
--- a/doc/man/s3qlstat.1
+++ b/doc/man/s3qlstat.1
@@ -1,4 +1,4 @@
-.TH "S3QLSTAT" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "S3QLSTAT" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
s3qlstat \- Gather S3QL file system statistics
.
diff --git a/doc/man/umount.s3ql.1 b/doc/man/umount.s3ql.1
index 221b0ae..0825165 100644
--- a/doc/man/umount.s3ql.1
+++ b/doc/man/umount.s3ql.1
@@ -1,4 +1,4 @@
-.TH "UMOUNT.S3QL" "1" "May 04, 2012" "1.11.1" "S3QL"
+.TH "UMOUNT.S3QL" "1" "September 03, 2012" "1.12" "S3QL"
.SH NAME
umount.s3ql \- Unmount an S3QL file system
.
diff --git a/doc/manual.pdf b/doc/manual.pdf
index c777f62..b66dacf 100644
--- a/doc/manual.pdf
+++ b/doc/manual.pdf
Binary files differ
diff --git a/rst/issues.rst b/rst/issues.rst
index 9e9db5d..b5d8735 100644
--- a/rst/issues.rst
+++ b/rst/issues.rst
@@ -10,9 +10,9 @@ Known Issues
details.
* S3QL is rather slow when an application tries to write data in
- unreasonably small chunks. If a 1 MB file is copied in chunks of 1
+ unreasonably small chunks. If a 1 MiB file is copied in chunks of 1
KB, this will take more than 10 times as long as when it's copied
- with the (recommended) chunk size of 128 KB.
+ with the (recommended) chunk size of 128 KiB.
This is a limitation of the FUSE library (which does not yet support
write caching) which will hopefully be addressed in some future FUSE
diff --git a/rst/man/ctrl.rst b/rst/man/ctrl.rst
index 8173162..0acc8f0 100644
--- a/rst/man/ctrl.rst
+++ b/rst/man/ctrl.rst
@@ -41,7 +41,7 @@ upload-meta
cachesize
Changes the cache size of the file system. This action requires an
- additional argument that specifies the new cache size in kB, so the
+ additional argument that specifies the new cache size in KiB, so the
complete command line is::
s3qlctrl [options] cachesize <mountpoint> <new-cache-size>
diff --git a/src/s3ql.egg-info/PKG-INFO b/src/s3ql.egg-info/PKG-INFO
index 4b0c152..fb8afae 100644
--- a/src/s3ql.egg-info/PKG-INFO
+++ b/src/s3ql.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: s3ql
-Version: 1.11.1
+Version: 1.12
Summary: a full-featured file system for online data storage
Home-page: http://code.google.com/p/s3ql/
Author: Nikolaus Rath
diff --git a/src/s3ql/__init__.py b/src/s3ql/__init__.py
index 5775d26..10d2694 100644
--- a/src/s3ql/__init__.py
+++ b/src/s3ql/__init__.py
@@ -14,7 +14,7 @@ __all__ = [ 'adm', 'backends', 'block_cache', 'cleanup_manager', 'common',
'parse_args', 'remove', 'statfs', 'umount', 'VERSION',
'CURRENT_FS_REV', 'REV_VER_MAP' ]
-VERSION = '1.11.1'
+VERSION = '1.12'
CURRENT_FS_REV = 16
# Maps file system revisions to the last S3QL version that
diff --git a/src/s3ql/_deltadump.c b/src/s3ql/_deltadump.c
index 91379b9..2dc4d46 100644
--- a/src/s3ql/_deltadump.c
+++ b/src/s3ql/_deltadump.c
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.15.1 on Sat Jan 21 13:29:51 2012 */
+/* Generated by Cython 0.15.1 on Mon Sep 3 21:02:10 2012 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
diff --git a/src/s3ql/adm.py b/src/s3ql/adm.py
index fc7a06c..a848f54 100644
--- a/src/s3ql/adm.py
+++ b/src/s3ql/adm.py
@@ -119,7 +119,12 @@ def download_metadata(backend, storage_url):
log.info('The following backups are available:')
log.info('%3s %-23s %-15s', 'No', 'Name', 'Date')
for (i, name) in enumerate(backups):
- params = backend.lookup(name)
+ try:
+ params = backend.lookup(name)
+ except:
+ log.error('Error retrieving information about %s, skipping', name)
+ continue
+
if 'last-modified' in params:
date = Datetime.fromtimestamp(params['last-modified']).strftime('%Y-%m-%d %H:%M:%S')
else:
@@ -249,6 +254,10 @@ def upgrade(backend, cachepath):
if param['seq_no'] < seq_no:
log.info('Ignoring locally cached metadata (outdated).')
param = backend.lookup('s3ql_metadata')
+ elif param['seq_no'] > seq_no:
+ print('File system not unmounted cleanly, need to run fsck before upgrade.')
+ print(get_old_rev_msg(param['revision'], 'fsck.s3ql'))
+ raise QuietError()
else:
log.info('Using cached metadata.')
db = Connection(cachepath + '.db')
@@ -270,7 +279,9 @@ def upgrade(backend, cachepath):
# Check that the fs itself is clean
if param['needs_fsck']:
- raise QuietError("File system damaged, run fsck first!")
+ print('File system is damaged, need to run fsck before upgrade.')
+ print(get_old_rev_msg(param['revision'], 'fsck.s3ql'))
+ raise QuietError()
# Check revision
if param['revision'] < CURRENT_FS_REV - 1:
@@ -344,7 +355,7 @@ def upgrade(backend, cachepath):
backend.store('s3ql_seq_no_%d' % param['seq_no'], 'Empty')
obj_fh = backend.perform_write(do_write, "s3ql_metadata", metadata=param,
is_compressed=True)
- log.info('Wrote %.2f MB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
+ log.info('Wrote %.2f MiB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
pickle.dump(param, open(cachepath + '.params', 'wb'), 2)
db.execute('ANALYZE')
diff --git a/src/s3ql/backends/s3c.py b/src/s3ql/backends/s3c.py
index c5b84d7..5fba441 100644
--- a/src/s3ql/backends/s3c.py
+++ b/src/s3ql/backends/s3c.py
@@ -530,10 +530,29 @@ class ObjectR(object):
if not buf and not self.md5_checked:
etag = self.resp.getheader('ETag').strip('"')
self.md5_checked = True
+
+ # Apparently sometimes the response is not closed even when all data has been read. In
+ # that case, the next request can still be send, but an attempt to retrieve the next
+ # response will result in an ResponseNotReady() exception:
+ # http://code.google.com/p/s3ql/issues/detail?id=358
+ # This code attempts to produce additional debug information when that happens,
+ # so that we can figure out what exactly is going wrong.
+ if not self.resp.isclosed():
+ log.error('ObjectR.read(): response not closed after end of data, '
+ 'please report on http://code.google.com/p/s3ql/issues/')
+ log.error('Method: %s, chunked: %s, read length: %s '
+ 'response length: %s, chunk_left: %s, status: %d '
+ 'reason "%s", version: %s, will_close: %s',
+ self.resp._method, self.resp.chunked, size, self.resp.length,
+ self.resp.chunk_left, self.resp.status, self.resp.reason,
+ self.resp.version, self.resp.will_close)
+ self.resp.close()
+
if etag != self.md5.hexdigest():
log.warn('ObjectR(%s).close(): MD5 mismatch: %s vs %s', self.key, etag,
self.md5.hexdigest())
raise BadDigest('BadDigest', 'ETag header does not agree with calculated MD5')
+
return buf
self.md5.update(buf)
diff --git a/src/s3ql/backends/swift.py b/src/s3ql/backends/swift.py
index ae4b9ab..f2fe4b7 100644
--- a/src/s3ql/backends/swift.py
+++ b/src/s3ql/backends/swift.py
@@ -172,7 +172,7 @@ class Backend(AbstractBackend):
headers['content-length'] = '0'
if self.conn is None:
- log.info('_do_request(): no active connection, calling _get_conn()')
+ log.debug('_do_request(): no active connection, calling _get_conn()')
self.conn = self._get_conn()
# Construct full path
@@ -541,6 +541,24 @@ class ObjectR(object):
if not buf and not self.md5_checked:
etag = self.resp.getheader('ETag').strip('"')
self.md5_checked = True
+
+ # Apparently sometimes the response is not closed even when all data has been read. In
+ # that case, the next request can still be send, but an attempt to retrieve the next
+ # response will result in an ResponseNotReady() exception:
+ # http://code.google.com/p/s3ql/issues/detail?id=358
+ # This code attempts to produce additional debug information when that happens,
+ # so that we can figure out what exactly is going wrong.
+ if not self.resp.isclosed():
+ log.error('ObjectR.read(): response not closed after end of data, '
+ 'please report on http://code.google.com/p/s3ql/issues/')
+ log.error('Method: %s, chunked: %s, read length: %s '
+ 'response length: %s, chunk_left: %s, status: %d '
+ 'reason "%s", version: %s, will_close: %s',
+ self.resp._method, self.resp.chunked, size, self.resp.length,
+ self.resp.chunk_left, self.resp.status, self.resp.reason,
+ self.resp.version, self.resp.will_close)
+ self.resp.close()
+
if etag != self.md5.hexdigest():
log.warn('ObjectR(%s).close(): MD5 mismatch: %s vs %s', self.key, etag,
self.md5.hexdigest())
diff --git a/src/s3ql/block_cache.py b/src/s3ql/block_cache.py
index 2e775de..faf5a85 100644
--- a/src/s3ql/block_cache.py
+++ b/src/s3ql/block_cache.py
@@ -307,7 +307,7 @@ class BlockCache(object):
if log.isEnabledFor(logging.DEBUG):
time_ = time.time() - time_
rate = el.size / (1024 ** 2 * time_) if time_ != 0 else 0
- log.debug('_do_upload(%s): uploaded %d bytes in %.3f seconds, %.2f MB/s',
+ log.debug('_do_upload(%s): uploaded %d bytes in %.3f seconds, %.2f MiB/s',
obj_id, el.size, time_, rate)
with lock:
diff --git a/src/s3ql/common.py b/src/s3ql/common.py
index b1e734c..6a1d2f9 100644
--- a/src/s3ql/common.py
+++ b/src/s3ql/common.py
@@ -271,14 +271,19 @@ def setup_excepthook():
if isinstance(val, QuietError):
root_logger.error(val.msg)
else:
- try:
- msg = format_tb((type_, val, tb))
- except:
- root_logger.error('Uncaught top-level exception -- and tb handler failed!',
- exc_info=(type_, val, tb))
- else:
- root_logger.error('Uncaught top-level exception. %s', msg)
-
+ # Customized exception handler has shown to just blow up the size
+ # of error messages and potentially include confidential data
+ # without providing any significant benefits
+# try:
+# msg = format_tb((type_, val, tb))
+# except:
+# root_logger.error('Uncaught top-level exception -- and tb handler failed!',
+# exc_info=(type_, val, tb))
+# else:
+# root_logger.error('Uncaught top-level exception. %s', msg)
+ root_logger.error('Uncaught top-level exception:',
+ exc_info=(type_, val, tb))
+
sys.excepthook = excepthook
def inode_for_path(path, conn):
diff --git a/src/s3ql/ctrl.py b/src/s3ql/ctrl.py
index 1db566a..9756ceb 100644
--- a/src/s3ql/ctrl.py
+++ b/src/s3ql/ctrl.py
@@ -48,7 +48,7 @@ def parse_args(args):
sparser = subparsers.add_parser('cachesize', help='Change cache size',
parents=[pparser])
sparser.add_argument('cachesize', metavar='<size>', type=int,
- help='New cache size in KB')
+ help='New cache size in KiB')
sparser = subparsers.add_parser('log', help='Change log level',
parents=[pparser])
diff --git a/src/s3ql/fs.py b/src/s3ql/fs.py
index 82037c7..ae2646d 100644
--- a/src/s3ql/fs.py
+++ b/src/s3ql/fs.py
@@ -816,26 +816,25 @@ class Operations(llfuse.Operations):
if size is None:
size = 0
- # file system block size
+ # file system block size, i.e. the minimum amount of space that can
+ # be allocated. This doesn't make much sense for S3QL, so we just
+ # return the average size of stored blocks.
+ stat_.f_frsize = size // blocks if blocks != 0 else 4096
- # It would be nice if we could use different values for f_bsize and
- # f_frsize here to also export the maximum block size. However, `df`
- # incorrectly interprets f_blocks, f_bfree and f_bavail in terms of
- # f_bsize rather than f_frsize as it should (according to statvfs(3)),
- # so the only way to return correct values *and* have df print something
- # sensible is to set f_bsize and f_frsize to the same value.
- # (cf. http://bugs.debian.org/671490)
- stat_.f_bsize = size // blocks if blocks != 0 else self.max_obj_size
- stat_.f_frsize = stat_.f_bsize
-
- # size of fs in f_frsize units
- # (since backend is supposed to be unlimited, always return a half-full filesystem,
- # but at least 1 TB)
- total_blocks = max(2 * blocks, 1024 ** 4 // stat_.f_frsize)
-
- stat_.f_blocks = total_blocks
- stat_.f_bfree = total_blocks - blocks
- stat_.f_bavail = total_blocks - blocks # free for non-root
+ # This should actually be the "preferred block size for doing IO. However, `df` incorrectly
+ # interprets f_blocks, f_bfree and f_bavail in terms of f_bsize rather than f_frsize as it
+ # should (according to statvfs(3)), so the only way to return correct values *and* have df
+ # print something sensible is to set f_bsize and f_frsize to the same value. (cf.
+ # http://bugs.debian.org/671490)
+ stat_.f_bsize = stat_.f_frsize
+
+ # size of fs in f_frsize units. Since backend is supposed to be unlimited,
+ # always return a half-full filesystem, but at least 1 TB)
+ fs_size = max(2 * size, 1024 ** 4)
+
+ stat_.f_blocks = fs_size // stat_.f_frsize
+ stat_.f_bfree = (fs_size - size) // stat_.f_frsize
+ stat_.f_bavail = stat_.f_bfree # free for non-root
total_inodes = max(2 * inodes, 1000000)
stat_.f_files = total_inodes
diff --git a/src/s3ql/fsck.py b/src/s3ql/fsck.py
index b5ba9fe..19cdd48 100644
--- a/src/s3ql/fsck.py
+++ b/src/s3ql/fsck.py
@@ -692,6 +692,7 @@ class Fsck(object):
- Only devices should have a device number
- symlink size is length of target
- names are not longer than 255 bytes
+ - All directory entries have a valid mode
Note that none of this is enforced by S3QL. However, as long as S3QL
only communicates with the UNIX FUSE module, none of the above should
@@ -705,6 +706,22 @@ class Fsck(object):
in self.conn.query("SELECT id, mode, size, target, rdev "
"FROM inodes LEFT JOIN symlink_targets ON id = inode"):
+ has_children = self.conn.has_val('SELECT 1 FROM contents WHERE parent_inode=? LIMIT 1',
+ (inode,))
+
+ if stat.S_IFMT(mode) == 0:
+ if has_children:
+ mode = mode | stat.S_IFDIR
+ made_to = 'directory'
+ else:
+ mode = mode | stat.S_IFREG
+ made_to = 'regular file'
+
+ self.found_errors = True
+ self.log_error('Inode %d (%s): directory entry has no type, changed '
+ 'to %s.', inode, get_path(inode, self.conn), made_to)
+ self.conn.execute('UPDATE inodes SET mode=? WHERE id=?', (mode, inode))
+
if stat.S_ISLNK(mode) and target is None:
self.found_errors = True
self.log_error('Inode %d (%s): symlink does not have target. '
@@ -737,8 +754,7 @@ class Fsck(object):
'This is probably going to confuse your system!',
inode, get_path(inode, self.conn))
- has_children = self.conn.has_val('SELECT 1 FROM contents WHERE parent_inode=? LIMIT 1',
- (inode,))
+
if has_children and not stat.S_ISDIR(mode):
self.found_errors = True
self.log_error('Inode %d (%s) is not a directory but has child entries. '
@@ -751,6 +767,10 @@ class Fsck(object):
self.log_error('Inode %d (%s) is not a regular file but has data blocks. '
'This is probably going to confuse your system!',
inode, get_path(inode, self.conn))
+
+
+
+
for (name, id_p) in self.conn.query('SELECT name, parent_inode FROM contents_v '
'WHERE LENGTH(name) > 255'):
@@ -1065,7 +1085,6 @@ def main(args=None):
cachepath = get_backend_cachedir(options.storage_url, options.cachedir)
seq_no = get_seq_no(backend)
- param_remote = backend.lookup('s3ql_metadata')
db = None
if os.path.exists(cachepath + '.params'):
@@ -1079,12 +1098,16 @@ def main(args=None):
db = Connection(cachepath + '.db')
assert not os.path.exists(cachepath + '-cache') or param['needs_fsck']
- if param_remote['seq_no'] != param['seq_no']:
+ if param['seq_no'] > seq_no:
+ log.warn('File system has not been unmounted cleanly.')
+ param['needs_fsck'] = True
+
+ elif backend.lookup('s3ql_metadata')['seq_no'] != param['seq_no']:
log.warn('Remote metadata is outdated.')
param['needs_fsck'] = True
else:
- param = param_remote
+ param = backend.lookup('s3ql_metadata')
assert not os.path.exists(cachepath + '-cache')
# .db might exist if mount.s3ql is killed at exactly the right instant
# and should just be ignored.
@@ -1197,7 +1220,7 @@ def main(args=None):
log.info("Compressing and uploading metadata...")
obj_fh = backend.perform_write(do_write, "s3ql_metadata", metadata=param,
is_compressed=True)
- log.info('Wrote %.2f MB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
+ log.info('Wrote %.2f MiB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
pickle.dump(param, open(cachepath + '.params', 'wb'), 2)
db.execute('ANALYZE')
diff --git a/src/s3ql/mkfs.py b/src/s3ql/mkfs.py
index 9f03619..2bc67a3 100644
--- a/src/s3ql/mkfs.py
+++ b/src/s3ql/mkfs.py
@@ -42,9 +42,9 @@ def parse_args(args):
parser.add_argument("-L", default='', help="Filesystem label",
dest="label", metavar='<name>',)
parser.add_argument("--max-obj-size", type=int, default=10240, metavar='<size>',
- help="Maximum size of storage objects in KB. Files bigger than this "
+ help="Maximum size of storage objects in KiB. Files bigger than this "
"will be spread over multiple objects in the storage backend. "
- "Default: %(default)d KB.")
+ "Default: %(default)d KiB.")
parser.add_argument("--plain", action="store_true", default=False,
help="Create unencrypted file system.")
parser.add_argument("--force", action="store_true", default=False,
@@ -88,7 +88,7 @@ def main(args=None):
setup_logging(options)
if options.max_obj_size < 1024:
- log.warn('Warning: maximum object sizes less than 1 MB will seriously degrade '
+ log.warn('Warning: maximum object sizes less than 1 MiB will seriously degrade '
'performance.')
try:
@@ -171,7 +171,7 @@ def main(args=None):
backend.store('s3ql_seq_no_%d' % param['seq_no'], 'Empty')
obj_fh = backend.perform_write(do_write, "s3ql_metadata", metadata=param,
is_compressed=True)
- log.info('Wrote %.2f MB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
+ log.info('Wrote %.2f MiB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
pickle.dump(param, open(cachepath + '.params', 'wb'), 2)
diff --git a/src/s3ql/mount.py b/src/s3ql/mount.py
index a6fdcaa..0e20aaa 100644
--- a/src/s3ql/mount.py
+++ b/src/s3ql/mount.py
@@ -18,6 +18,7 @@ from .inode_cache import InodeCache
from .metadata import cycle_metadata, dump_metadata, restore_metadata
from .parse_args import ArgumentParser
from threading import Thread
+import argparse
import cPickle as pickle
import llfuse
import logging
@@ -227,7 +228,7 @@ def main(args=None):
log.info("Compressing and uploading metadata...")
obj_fh = backend.perform_write(do_write, "s3ql_metadata", metadata=param,
is_compressed=True)
- log.info('Wrote %.2f MB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
+ log.info('Wrote %.2f MiB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
pickle.dump(param, open(cachepath + '.params', 'wb'), 2)
else:
log.error('Remote metadata is newer than local (%d vs %d), '
@@ -279,7 +280,7 @@ def determine_threads(options):
if threads > 0:
log.info('Using %d upload threads (memory limited).', threads)
else:
- log.warn('Warning: compression will require %d MB memory '
+ log.warn('Warning: compression will require %d MiB memory '
'(%d%% of total system memory', mem_per_thread / 1024 ** 2,
mem_per_thread * 100 / memory)
threads = 1
@@ -301,6 +302,8 @@ def get_metadata(backend, cachepath):
if param['seq_no'] < seq_no:
log.info('Ignoring locally cached metadata (outdated).')
param = backend.lookup('s3ql_metadata')
+ elif param['seq_no'] > seq_no:
+ raise QuietError("File system not unmounted cleanly, run fsck!")
else:
log.info('Using cached metadata.')
db = Connection(cachepath + '.db')
@@ -416,7 +419,7 @@ def parse_args(args):
parser.add_argument("mountpoint", metavar='<mountpoint>', type=os.path.abspath,
help='Where to mount the file system')
parser.add_argument("--cachesize", type=int, default=102400, metavar='<size>',
- help="Cache size in kb (default: 102400 (100 MB)). Should be at least 10 times "
+ help="Cache size in KiB (default: 102400 (100 MiB)). Should be at least 10 times "
"the maximum object size of the filesystem, otherwise an object may be retrieved "
"and written several times during a single write() or read() operation.")
parser.add_argument("--max-cache-entries", type=int, default=768, metavar='<num>',
@@ -426,9 +429,10 @@ def parse_args(args):
'limit (as set with `ulimit -n`) is high enough (at least the number '
'of cache entries + 100).')
parser.add_argument("--min-obj-size", type=int, default=512, metavar='<size>',
- help="Minimum size of storage objects in KB. Files smaller than this "
- "may be combined into groups that are stored as single objects "
- "in the storage backend. Default: %(default)d KB.")
+ help=argparse.SUPPRESS)
+# help="Minimum size of storage objects in KiB. Files smaller than this "
+# "may be combined into groups that are stored as single objects "
+# "in the storage backend. Default: %(default)d KB.")
parser.add_argument("--allow-other", action="store_true", default=False, help=
'Normally, only the user who called `mount.s3ql` can access the mount '
'point. This user then also has full access to it, independent of '
@@ -552,7 +556,7 @@ class MetadataUploadThread(Thread):
log.info("Compressing and uploading metadata...")
obj_fh = backend.perform_write(do_write, "s3ql_metadata", metadata=self.param,
is_compressed=True)
- log.info('Wrote %.2f MB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
+ log.info('Wrote %.2f MiB of compressed metadata.', obj_fh.get_obj_size() / 1024 ** 2)
self.param['seq_no'] += 1
fh.close()
diff --git a/src/s3ql/parse_args.py b/src/s3ql/parse_args.py
index bc108dc..6fab2f9 100644
--- a/src/s3ql/parse_args.py
+++ b/src/s3ql/parse_args.py
@@ -192,7 +192,7 @@ class ArgumentParser(argparse.ArgumentParser):
self.add_argument("--log", type=log_handler, metavar='<target>', default=default,
help='Write logging info into this file. File will be rotated when '
- 'it reaches 1 MB, and at most 5 old log files will be kept. '
+ 'it reaches 1 MiB, and at most 5 old log files will be kept. '
'Specify ``none`` to disable logging. Default: ``%(default)s``')
def add_storage_url(self):
diff --git a/src/s3ql/statfs.py b/src/s3ql/statfs.py
index 0375bdc..5b6f0ce 100644
--- a/src/s3ql/statfs.py
+++ b/src/s3ql/statfs.py
@@ -71,12 +71,12 @@ def main(args=None):
print ('Directory entries: %d' % entries,
'Inodes: %d' % inodes,
'Data blocks: %d' % blocks,
- 'Total data size: %.2f MB' % (fs_size / mb),
- 'After de-duplication: %.2f MB (%.2f%% of total)'
+ 'Total data size: %.2f MiB' % (fs_size / mb),
+ 'After de-duplication: %.2f MiB (%.2f%% of total)'
% (dedup_size / mb, p_dedup),
- 'After compression: %.2f MB (%.2f%% of total, %.2f%% of de-duplicated)'
+ 'After compression: %.2f MiB (%.2f%% of total, %.2f%% of de-duplicated)'
% (compr_size / mb, p_compr_1, p_compr_2),
- 'Database size: %.2f MB (uncompressed)' % (db_size / mb),
+ 'Database size: %.2f MiB (uncompressed)' % (db_size / mb),
'(some values do not take into account not-yet-uploaded dirty blocks in cache)',
sep='\n')
diff --git a/src/s3ql/umount.py b/src/s3ql/umount.py
index b2fdab8..fa21680 100644
--- a/src/s3ql/umount.py
+++ b/src/s3ql/umount.py
@@ -15,6 +15,7 @@ import os
import posixpath
import subprocess
import sys
+import errno
import textwrap
import time
@@ -46,44 +47,51 @@ def parse_args(args):
return parser.parse_args(args)
-class MountError(Exception):
+class UmountError(Exception):
"""
- Base class for mountpoint errors.
+ Base class for unmount errors.
"""
- message = ''
+ message = 'internal error'
+ exitcode = 3
def __init__(self, mountpoint):
- super(MountError, self).__init__()
+ super(UmountError, self).__init__()
self.mountpoint = mountpoint
-
+
def __str__(self):
- return self.message.format(self.mountpoint)
-
-
-class NotMountPointError(MountError):
-
- message = '"{}" is not a mountpoint.'
-
-
-class NotS3qlFsError(MountError):
-
- message = '"{}" is not an S3QL file system.'
-
-
-class UmountError(MountError):
-
- message = 'Error while unmounting "{}".'
-
-
-class MountInUseError(MountError):
-
- message = '"{}" is being used.'
+ return self.message
+class NotMountPointError(UmountError):
+ message = 'Not a mountpoint.'
+ exitcode = 1
+class NotS3qlFsError(UmountError):
+ message = 'Not an S3QL file system.'
+ exitcode = 2
+
+class UmountSubError(UmountError):
+ message = 'Unmount subprocess failed.'
+ exitcode = 3
+
+class MountInUseError(UmountError):
+ message = 'In use.'
+ exitcode = 4
+
+class FSCrashedError(UmountError):
+ message = 'File system seems to have crashed.'
+ exitcode = 5
+
def check_mount(mountpoint):
'''Check that "mountpoint" is a mountpoint and a valid s3ql fs'''
+ try:
+ os.stat(mountpoint)
+ except OSError as exc:
+ if exc.errno is errno.ENOTCONN:
+ raise FSCrashedError(mountpoint)
+ raise
+
if not posixpath.ismount(mountpoint):
raise NotMountPointError(mountpoint)
@@ -102,7 +110,7 @@ def lazy_umount(mountpoint):
else:
umount_cmd = ('fusermount', '-u', '-z', mountpoint)
- if subprocess.call(umount_cmd)!=0:
+ if subprocess.call(umount_cmd) != 0:
raise UmountError(mountpoint)
def blocking_umount(mountpoint):
@@ -193,23 +201,24 @@ def main(args=None):
try:
umount(options.mountpoint, options.lazy)
- except NotMountPointError as err:
- print(err, file=sys.stderr)
- sys.exit(1)
- except NotS3qlFsError as err:
- print(err, file=sys.stderr)
- sys.exit(2)
- except UmountError as err:
- print(err, file=sys.stderr)
- sys.exit(3)
- except MountInUseError:
+ except MountInUseError as err:
print('Cannot unmount, the following processes still access the mountpoint:',
file=sys.stderr)
subprocess.call(['fuser', '-v', '-m', options.mountpoint],
stdout=sys.stderr, stderr=sys.stderr)
- sys.exit(4)
- else:
- sys.exit(0)
+ sys.exit(err.exitcode)
+
+ except FSCrashedError as err:
+ print('%s: %s' % (options.mountpoint, err), file=sys.stderr)
+ print("Unmounting with the 'umount' or 'fusermount -u' command may help "
+ "in this situation.")
+ sys.exit(err.exitcode)
+
+ except UmountError as err:
+ print('%s: %s' % (options.mountpoint, err), file=sys.stderr)
+ sys.exit(err.exitcode)
+
+ sys.exit(0)
if __name__ == '__main__':
main(sys.argv[1:])
diff --git a/tests/t1_backends.py b/tests/t1_backends.py
index f9c8069..2c2a002 100644
--- a/tests/t1_backends.py
+++ b/tests/t1_backends.py
@@ -152,7 +152,7 @@ class S3Tests(BackendTestsMixin, TestCase):
# be much longer for larger objects, but for tests this is usually enough.
self.delay = 15
- self.backend = s3.Backend(*self.get_credentials('s3-test'))
+ self.backend = s3.Backend(*self.get_credentials('s3-test'), use_ssl=False)
def tearDown(self):
self.backend.clear()
@@ -171,14 +171,20 @@ class S3Tests(BackendTestsMixin, TestCase):
config.read(authfile)
try:
- bucket_name = config.get(name, 'test-fs')
+ fs_name = config.get(name, 'test-fs')
backend_login = config.get(name, 'backend-login')
backend_password = config.get(name, 'backend-password')
except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
self.skipTest("Authentication file does not have test section")
- return (bucket_name, backend_login, backend_password)
+ return (fs_name, backend_login, backend_password)
+class S3SSLTests(S3Tests):
+ def setUp(self):
+ self.name_cnt = 0
+ self.delay = 15
+ self.backend = s3.Backend(*self.get_credentials('s3-test'), use_ssl=True)
+
class SwiftTests(S3Tests):
def setUp(self):
self.name_cnt = 0
@@ -189,13 +195,13 @@ class GSTests(S3Tests):
def setUp(self):
self.name_cnt = 0
self.delay = 15
- self.backend = gs.Backend(*self.get_credentials('gs-test'))
-
+ self.backend = gs.Backend(*self.get_credentials('gs-test'), use_ssl=False)
+
class S3CTests(S3Tests):
def setUp(self):
self.name_cnt = 0
self.delay = 0
- self.backend = s3c.Backend(*self.get_credentials('s3c-test'))
+ self.backend = s3c.Backend(*self.get_credentials('s3c-test'), use_ssl=False)
class URLTests(TestCase):
diff --git a/tests/t3_fsck.py b/tests/t3_fsck.py
index bf4bea9..a279c57 100644
--- a/tests/t3_fsck.py
+++ b/tests/t3_fsck.py
@@ -194,11 +194,11 @@ class fsck_tests(TestCase):
self.db.execute('UPDATE names SET refcount=refcount+1 WHERE id=?', (name_id,))
return name_id
- def _link(self, name, inode):
+ def _link(self, name, inode, parent_inode=ROOT_INODE):
'''Link /*name* to *inode*'''
self.db.execute('INSERT INTO contents (name_id, inode, parent_inode) VALUES(?,?,?)',
- (self._add_name(name), inode, ROOT_INODE))
+ (self._add_name(name), inode, parent_inode))
def test_inodes_size(self):
@@ -462,7 +462,44 @@ class fsck_tests(TestCase):
self.fsck.check_unix()
self.assertTrue(self.fsck.found_errors)
- def test_symlink_no_target(self):
+ def test_unix_nomode_reg(self):
+
+ perms = stat.S_IRUSR | stat.S_IWUSR | stat.S_IROTH | stat.S_IRGRP
+ stamp = time.time()
+ inode = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount) "
+ "VALUES (?,?,?,?,?,?,?)",
+ (perms, os.getuid(), os.getgid(), stamp, stamp, stamp, 1))
+ self._link('test-entry', inode)
+
+ self.assert_fsck(self.fsck.check_unix)
+
+ newmode = self.db.get_val('SELECT mode FROM inodes WHERE id=?', (inode,))
+ self.assertEqual(stat.S_IMODE(newmode), perms)
+ self.assertEqual(stat.S_IFMT(newmode), stat.S_IFREG)
+
+ def test_unix_nomode_dir(self):
+
+ perms = stat.S_IRUSR | stat.S_IWUSR | stat.S_IROTH | stat.S_IRGRP
+ stamp = time.time()
+ inode = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount) "
+ "VALUES (?,?,?,?,?,?,?)",
+ (perms, os.getuid(), os.getgid(), stamp, stamp, stamp, 1))
+ inode2 = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount) "
+ "VALUES (?,?,?,?,?,?,?)",
+ (perms | stat.S_IFREG, os.getuid(), os.getgid(), stamp,
+ stamp, stamp, 1))
+
+ self._link('test-entry', inode)
+ self._link('subentry', inode2, inode)
+
+ self.assert_fsck(self.fsck.check_unix)
+
+ newmode = self.db.get_val('SELECT mode FROM inodes WHERE id=?', (inode,))
+ self.assertEqual(stat.S_IMODE(newmode), perms)
+ self.assertEqual(stat.S_IFMT(newmode), stat.S_IFDIR)
+
+
+ def test_unix_symlink_no_target(self):
inode = self.db.rowid("INSERT INTO inodes (mode,uid,gid,mtime,atime,ctime,refcount) "
"VALUES (?,?,?,?,?,?,?)",
diff --git a/tests/t4_fuse.py b/tests/t4_fuse.py
index acbe926..4f4a4bd 100644
--- a/tests/t4_fuse.py
+++ b/tests/t4_fuse.py
@@ -160,7 +160,7 @@ class fuse_tests(TestCase):
# We need this to test multi block operations
self.src = __file__
if os.path.getsize(self.src) < 1048:
- raise RuntimeError("test file %s should be bigger than 1 kb" % self.src)
+ raise RuntimeError("test file %s should be bigger than 1 KiB" % self.src)
self.mnt_dir = tempfile.mkdtemp()
self.cache_dir = tempfile.mkdtemp()