svn commit: r269651 - stable/10/sbin/restore

Kirk McKusick mckusick at FreeBSD.org
Wed Aug 6 23:33:17 UTC 2014


Author: mckusick
Date: Wed Aug  6 23:33:16 2014
New Revision: 269651
URL: http://svnweb.freebsd.org/changeset/base/269651

Log:
  MFC of r269303:
  
  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

Modified:
  stable/10/sbin/restore/tape.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sbin/restore/tape.c
==============================================================================
--- stable/10/sbin/restore/tape.c	Wed Aug  6 23:06:09 2014	(r269650)
+++ stable/10/sbin/restore/tape.c	Wed Aug  6 23:33:16 2014	(r269651)
@@ -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");


More information about the svn-src-all mailing list