summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2014-08-06 23:33:16 +0000
committermckusick <mckusick@FreeBSD.org>2014-08-06 23:33:16 +0000
commitda77c292102078758ede94b2a5e33359e8fc05f5 (patch)
tree8e0dc811cd0ca29fc03536567d061432aacd8e2a
parent396f2d2c3f2a9f7aa1ec2795623dc08baff69e3d (diff)
downloadFreeBSD-src-da77c292102078758ede94b2a5e33359e8fc05f5.zip
FreeBSD-src-da77c292102078758ede94b2a5e33359e8fc05f5.tar.gz
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
-rw-r--r--sbin/restore/tape.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sbin/restore/tape.c b/sbin/restore/tape.c
index 4f34549..225fe32 100644
--- a/sbin/restore/tape.c
+++ b/sbin/restore/tape.c
@@ -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");
OpenPOWER on IntegriCloud