[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#796947: jessie-pu: package s3ql/2.11.1+dfsg-2



Control: tags -1 -moreinfo

On Aug 29 2015, "Adam D. Barratt" <adam@adam-barratt.org.uk> wrote:
> Control: tags -1 + moreinfo
>
> On Tue, 2015-08-25 at 19:29 -0700, Nikolaus Rath wrote:
>> Would it be acceptible to upload a fix for #792685 to jessie?
>> 
>> In short, the S3QL version currently in jessie is unable to read file
>> system created with the S3QL version in wheezy. All stored data thus
>> becomes inaccessible unless one installs an intermediate version (that
>> is currently not available in Debian).
>> 
>> The proposed patch forward-ports the necessary capability from an
>> intermediate S3QL version.
>> 
>> An update package can be downloaded from
>> http://mentors.debian.net/debian/pool/main/s/s3ql/s3ql_2.11.1+dfsg-3.dsc
>
> Can we have a debdiff of the proposed package against the s3ql version
> currently in Jessie, please?

Here it is.

Best,
-Nikolaus


-- 
GPG encrypted emails preferred. Key id: 0xD113FCAC3C4E599F
Fingerprint: ED31 791B 2C5C 1613 AF38 8B8A D113 FCAC 3C4E 599F

             »Time flies like an arrow, fruit flies like a Banana.«
diff -Nru s3ql-2.11.1+dfsg/debian/changelog s3ql-2.11.1+dfsg/debian/changelog
--- s3ql-2.11.1+dfsg/debian/changelog	2014-12-02 21:59:11.000000000 -0800
+++ s3ql-2.11.1+dfsg/debian/changelog	2015-07-19 19:31:38.000000000 -0700
@@ -1,3 +1,10 @@
+s3ql (2.11.1+dfsg-3) jessie-updates; urgency=medium
+
+  * Add support to upgrade from file systems created with the 
+    S3QL version in Debian Wheezy. Closes: #792685.
+
+ -- Nikolaus Rath <Nikolaus@rath.org>  Sun, 19 Jul 2015 19:30:10 -0700
+
 s3ql (2.11.1+dfsg-2) unstable; urgency=medium
 
   * Fixed a problem with fsck.s3ql aborting with an
diff -Nru s3ql-2.11.1+dfsg/debian/patches/series s3ql-2.11.1+dfsg/debian/patches/series
--- s3ql-2.11.1+dfsg/debian/patches/series	2014-12-02 21:47:01.000000000 -0800
+++ s3ql-2.11.1+dfsg/debian/patches/series	2015-07-19 19:29:47.000000000 -0700
@@ -2,3 +2,4 @@
 clock-granularity.diff
 check_dev_fuse_perms.diff
 bug_771452.diff
+support_wheezy_upgrade.diff
diff -Nru s3ql-2.11.1+dfsg/debian/patches/support_wheezy_upgrade.diff s3ql-2.11.1+dfsg/debian/patches/support_wheezy_upgrade.diff
--- s3ql-2.11.1+dfsg/debian/patches/support_wheezy_upgrade.diff	1969-12-31 16:00:00.000000000 -0800
+++ s3ql-2.11.1+dfsg/debian/patches/support_wheezy_upgrade.diff	2015-08-01 21:10:41.000000000 -0700
@@ -0,0 +1,90 @@
+Description: Allow upgrading file systems created with wheezy
+Origin: debian
+Forwarded: not-needed
+Last-Update: <2015-07-19>
+Author: Nikolaus Rath <Nikolaus@rath.org>
+
+This patch forward-ports the upgrade mechanism from S3QL 2.9 and
+thereby enables upgrading file systems that were created with
+the S3QL version in Wheezy. 
+
+--- a/src/s3ql/adm.py
++++ b/src/s3ql/adm.py
+@@ -305,7 +305,10 @@
+         raise QuietError()
+ 
+     # Check revision
+-    if param['revision'] < CURRENT_FS_REV-1:
++    if param['revision'] >= CURRENT_FS_REV:
++        print('File system already at most-recent revision')
++        return
++    elif param['revision'] not in (16,20):
+         print(textwrap.dedent('''
+             File system revision too old to upgrade!
+ 
+@@ -316,10 +319,6 @@
+         print(get_old_rev_msg(param['revision'] + 1, 's3qladm'))
+         raise QuietError()
+ 
+-    elif param['revision'] >= CURRENT_FS_REV:
+-        print('File system already at most-recent revision')
+-        return
+-
+     print(textwrap.dedent('''
+         I am about to update the file system to the newest revision.
+         You will not be able to access the file system with any older version
+@@ -337,6 +336,22 @@
+     if sys.stdin.readline().strip().lower() != 'yes':
+         raise QuietError()
+ 
++    if param['revision'] == 16:
++        log.info('Upgrading from revision 16 to 20...')
++        # For this upgrade, we need to recreate the sqlite database from the
++        # metadata dump, because some SQLite types have changed
++        log.info('Discarding cached metadata to trigger database rebuild.')
++        db = None
++        
++        # Keep backup of local metadata (just in case...)
++        if os.path.exists(cachepath + '.params'):
++            assert os.path.exists(cachepath + '.db')
++            if (os.path.exists(cachepath + '.db.bak') or
++                os.path.exists(cachepath + '.params.bak')):
++                raise QuietError('Metadata backup already exists, did something go wrong?')
++            os.rename(cachepath + '.db', cachepath + '.db.bak')
++            os.rename(cachepath + '.params', cachepath + '.params.bak')
++
+     if not db:
+         # Need to download metadata
+         with tempfile.TemporaryFile() as tmpfh:
+@@ -352,7 +367,7 @@
+             tmpfh.seek(0)
+             db = restore_metadata(tmpfh, cachepath + '.db')
+ 
+-    log.info('Upgrading from revision %d to %d...', param['revision'], CURRENT_FS_REV)
++    log.info('Upgrading from revision 20 to %d...', CURRENT_FS_REV)
+ 
+     param['revision'] = CURRENT_FS_REV
+     param['last-modified'] = time.time()
+@@ -402,9 +417,8 @@
+     print(textwrap.dedent('''\
+         File system upgrade complete.
+ 
+-        It is strongly recommended to run the s3ql_verify command with the
+-        --data option as soon as possible. This is necessary to ensure that the
+-        upgrade to the next (2.11) S3QL release will run smoothly.'''))
++        It is strongly recommended to run the new s3ql_verify command with the
++        --data option at least once and as soon as possible.'''))
+ 
+ # This should be used on the *next* fs revision update to ensure that all
+ # objects conform to newest standards, so we can drop the legacy routines from
+--- a/src/s3ql/backends/s3c.py
++++ b/src/s3ql/backends/s3c.py
+@@ -697,7 +697,7 @@
+             if hit.group(1) == 'format':
+                 format_ = val
+             else:
+-                meta[hit.group(1)] = val
++                meta[hit.group(1)] = str(val)
+ 
+         if format_ == 'pickle':
+             buf = ''.join(meta[x] for x in sorted(meta)

Reply to: