Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Jul 2014 14:52:04 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r269303 - head/sbin/restore
Message-ID:  <201407301452.s6UEq4Jv064548@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mckusick
Date: Wed Jul 30 14:52:04 2014
New Revision: 269303
URL: http://svnweb.freebsd.org/changeset/base/269303

Log:
  When restoring a UFS dump onto a ZFS filesystem, an assertion in
  restore was failing because ZFS was reporting a blocksize that was
  not a multiple of 1024.  Replace restore's failed assertion with
  code that writes restored files in a blocksize that works for
  restore (a multiple of 1024) despite being non-optimal for ZFS.
  
  Submitted by: Dmitry Morozovsky
  Tested by:    Dmitry Morozovsky
  MFC after:    1 week

Modified:
  head/sbin/restore/tape.c

Modified: head/sbin/restore/tape.c
==============================================================================
--- head/sbin/restore/tape.c	Wed Jul 30 14:46:39 2014	(r269302)
+++ head/sbin/restore/tape.c	Wed Jul 30 14:52:04 2014	(r269303)
@@ -260,9 +260,11 @@ setup(void)
 		fssize = TP_BSIZE;
 	if (stbuf.st_blksize >= TP_BSIZE && stbuf.st_blksize <= MAXBSIZE)
 		fssize = stbuf.st_blksize;
-	if (((fssize - 1) & fssize) != 0) {
-		fprintf(stderr, "bad block size %ld\n", fssize);
-		done(1);
+	if (((TP_BSIZE - 1) & stbuf.st_blksize) != 0) {
+		fprintf(stderr, "Warning: filesystem with non-multiple-of-%d "
+		    "blocksize (%d);\n", TP_BSIZE, stbuf.st_blksize);
+		fssize = roundup(fssize, TP_BSIZE);
+		fprintf(stderr, "\twriting using blocksize %ld\n", fssize);
 	}
 	if (spcl.c_volume != 1) {
 		fprintf(stderr, "Tape is not volume 1 of the dump\n");



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201407301452.s6UEq4Jv064548>