View | Details | Raw Unified | Return to bug 199407 | Differences between
and this patch

Collapse All | Expand All

(-)usr.sbin/makefs/ffs.c (+4 lines)
Lines 156-161 Link Here
156
		err(1, "Allocating memory for ffs_options");
156
		err(1, "Allocating memory for ffs_options");
157
157
158
	fsopts->fs_specific = ffs_opts;
158
	fsopts->fs_specific = ffs_opts;
159
	fsopts->cluster_size = 16384;
159
160
160
	ffs_opts->bsize= -1;
161
	ffs_opts->bsize= -1;
161
	ffs_opts->fsize= -1;
162
	ffs_opts->fsize= -1;
Lines 417-422 Link Here
417
418
418
		/* round up to the next block */
419
		/* round up to the next block */
419
	fsopts->size = roundup(fsopts->size, ffs_opts->bsize);
420
	fsopts->size = roundup(fsopts->size, ffs_opts->bsize);
421
	fsopts->size = roundup(fsopts->size, fsopts->cluster_size);
420
422
421
		/* calculate density if necessary */
423
		/* calculate density if necessary */
422
	if (ffs_opts->density == -1)
424
	if (ffs_opts->density == -1)
Lines 465-470 Link Here
465
	    fs->maxcontig, fs->maxbpg);
467
	    fs->maxcontig, fs->maxbpg);
466
	printf("\toptimization %s\n",
468
	printf("\toptimization %s\n",
467
	    fs->optimization == FS_OPTSPACE ? "space" : "time");
469
	    fs->optimization == FS_OPTSPACE ? "space" : "time");
470
	printf("\tmkuzip cluster_size %d\n",
471
	    f->cluster_size);
468
}
472
}
469
473
470
474
(-)usr.sbin/makefs/makefs.8 (-1 / +5 lines)
Lines 46-51 Link Here
46
.Op Fl DxZ
46
.Op Fl DxZ
47
.Op Fl B Ar byte-order
47
.Op Fl B Ar byte-order
48
.Op Fl b Ar free-blocks
48
.Op Fl b Ar free-blocks
49
.Op Fl c Ar cluster-size
49
.Op Fl d Ar debug-mask
50
.Op Fl d Ar debug-mask
50
.Op Fl F Ar specfile
51
.Op Fl F Ar specfile
51
.Op Fl f Ar free-files
52
.Op Fl f Ar free-files
Lines 106-111 Link Here
106
suffix may be provided to indicate that
107
suffix may be provided to indicate that
107
.Ar free-blocks
108
.Ar free-blocks
108
indicates a percentage of the calculated image size.
109
indicates a percentage of the calculated image size.
110
.It Fl c Ar cluster-size
111
The intended mkuzip(8) cluster_size.
109
.It Fl D
112
.It Fl D
110
Treat duplicate paths in an mtree manifest as warnings not error.
113
Treat duplicate paths in an mtree manifest as warnings not error.
111
.It Fl d Ar debug-mask
114
.It Fl d Ar debug-mask
Lines 356-362 Link Here
356
.Sh SEE ALSO
359
.Sh SEE ALSO
357
.Xr mtree 5 ,
360
.Xr mtree 5 ,
358
.Xr mtree 8 ,
361
.Xr mtree 8 ,
359
.Xr newfs 8
362
.Xr newfs 8 ,
363
.Xr mkuzip 8
360
.Sh HISTORY
364
.Sh HISTORY
361
The
365
The
362
.Nm
366
.Nm
(-)usr.sbin/makefs/makefs.c (-1 / +6 lines)
Lines 113-119 Link Here
113
	start_time.tv_sec = start.tv_sec;
113
	start_time.tv_sec = start.tv_sec;
114
	start_time.tv_nsec = start.tv_usec * 1000;
114
	start_time.tv_nsec = start.tv_usec * 1000;
115
115
116
	while ((ch = getopt(argc, argv, "B:b:Dd:f:F:M:m:N:o:ps:S:t:xZ")) != -1) {
116
	while ((ch = getopt(argc, argv, "B:b:c:Dd:f:F:M:m:N:o:ps:S:t:xZ")) != -1) {
117
		switch (ch) {
117
		switch (ch) {
118
118
119
		case 'B':
119
		case 'B':
Lines 149-154 Link Here
149
			}
149
			}
150
			break;
150
			break;
151
151
152
		case 'c':
153
			fsoptions.cluster_size = strtoll(optarg, NULL, 0);
154
			break;
155
152
		case 'D':
156
		case 'D':
153
			dupsok = 1;
157
			dupsok = 1;
154
			break;
158
			break;
Lines 361-366 Link Here
361
"usage: %s [-t fs-type] [-o fs-options] [-d debug-mask] [-B endian]\n"
365
"usage: %s [-t fs-type] [-o fs-options] [-d debug-mask] [-B endian]\n"
362
"\t[-S sector-size] [-M minimum-size] [-m maximum-size] [-s image-size]\n"
366
"\t[-S sector-size] [-M minimum-size] [-m maximum-size] [-s image-size]\n"
363
"\t[-b free-blocks] [-f free-files] [-F mtree-specfile] [-xZ]\n"
367
"\t[-b free-blocks] [-f free-files] [-F mtree-specfile] [-xZ]\n"
368
"\t[-c mkuzip_cluster_size]\n"
364
"\t[-N userdb-dir] image-file directory | manifest [extra-directory ...]\n",
369
"\t[-N userdb-dir] image-file directory | manifest [extra-directory ...]\n",
365
	    prog);
370
	    prog);
366
	exit(1);
371
	exit(1);
(-)usr.sbin/makefs/makefs.h (+1 lines)
Lines 130-135 Link Here
130
	int	needswap;	/* non-zero if byte swapping needed */
130
	int	needswap;	/* non-zero if byte swapping needed */
131
	int	sectorsize;	/* sector size */
131
	int	sectorsize;	/* sector size */
132
	int	sparse;		/* sparse image, don't fill it with zeros */
132
	int	sparse;		/* sparse image, don't fill it with zeros */
133
	int	cluster_size;	/* mkuzip(8) cluster_size */
133
134
134
	void	*fs_specific;	/* File system specific additions. */
135
	void	*fs_specific;	/* File system specific additions. */
135
} fsinfo_t;
136
} fsinfo_t;
(-)usr.bin/mkuzip/mkuzip.8 (-1 / +1 lines)
Lines 60-66 Link Here
60
.Ar cluster_size
60
.Ar cluster_size
61
should be a multiple of 512 bytes.
61
should be a multiple of 512 bytes.
62
.It Fl v
62
.It Fl v
63
Display verbose messages.
63
Display verbose messages.  Use multiple times to increase verbosity.
64
.El
64
.El
65
.Sh NOTES
65
.Sh NOTES
66
The compression ratio largely depends on the cluster size used.
66
The compression ratio largely depends on the cluster size used.
(-)usr.bin/mkuzip/mkuzip.c (-6 / +7 lines)
Lines 88-94 Link Here
88
			break;
88
			break;
89
89
90
		case 'v':
90
		case 'v':
91
			verbose = 1;
91
			verbose++;
92
			break;
92
			break;
93
93
94
		default:
94
		default:
Lines 147-155 Link Here
147
	}
147
	}
148
	hdr.nblocks = sb.st_size / hdr.blksz;
148
	hdr.nblocks = sb.st_size / hdr.blksz;
149
	if ((sb.st_size % hdr.blksz) != 0) {
149
	if ((sb.st_size % hdr.blksz) != 0) {
150
		if (verbose != 0)
150
		if (verbose >= 0) /* always warn */
151
			fprintf(stderr, "file size is not multiple "
151
			fprintf(stderr, "file size is not multiple "
152
			"of %d, padding data\n", hdr.blksz);
152
			"of %d, padding data\n", hdr.blksz);
153
			fprintf(stderr, "Warning: a UFS filesystem label may not be visible via geom_label\n");
153
		hdr.nblocks++;
154
		hdr.nblocks++;
154
	}
155
	}
155
	toc = safe_malloc((hdr.nblocks + 1) * sizeof(*toc));
156
	toc = safe_malloc((hdr.nblocks + 1) * sizeof(*toc));
Lines 172-178 Link Here
172
	/* Reserve space for header */
173
	/* Reserve space for header */
173
	lseek(fdw, offset, SEEK_SET);
174
	lseek(fdw, offset, SEEK_SET);
174
175
175
	if (verbose != 0)
176
	if (verbose > 0)
176
		fprintf(stderr, "data size %ju bytes, number of clusters "
177
		fprintf(stderr, "data size %ju bytes, number of clusters "
177
		    "%u, index length %zu bytes\n", sb.st_size,
178
		    "%u, index length %zu bytes\n", sb.st_size,
178
		    hdr.nblocks, iov[1].iov_len);
179
		    hdr.nblocks, iov[1].iov_len);
Lines 187-199 Link Here
187
				    "failed");
188
				    "failed");
188
				/* Not reached */
189
				/* Not reached */
189
			}
190
			}
190
			if (verbose != 0)
191
			if (verbose > 1)
191
				fprintf(stderr, "cluster #%d, in %u bytes, "
192
				fprintf(stderr, "cluster #%d, in %u bytes, "
192
				    "out %lu bytes\n", i, hdr.blksz, destlen);
193
				    "out %lu bytes\n", i, hdr.blksz, destlen);
193
		} else {
194
		} else {
194
			destlen = DEV_BSIZE - (offset % DEV_BSIZE);
195
			destlen = DEV_BSIZE - (offset % DEV_BSIZE);
195
			memset(obuf, 0, destlen);
196
			memset(obuf, 0, destlen);
196
			if (verbose != 0)
197
			if (verbose > 0)
197
				fprintf(stderr, "padding data with %lu bytes so "
198
				fprintf(stderr, "padding data with %lu bytes so "
198
				    "that file size is multiple of %d\n", destlen,
199
				    "that file size is multiple of %d\n", destlen,
199
				    DEV_BSIZE);
200
				    DEV_BSIZE);
Lines 207-213 Link Here
207
	}
208
	}
208
	close(fdr);
209
	close(fdr);
209
210
210
	if (verbose != 0)
211
	if (verbose > 0)
211
		fprintf(stderr, "compressed data to %ju bytes, saved %lld "
212
		fprintf(stderr, "compressed data to %ju bytes, saved %lld "
212
		    "bytes, %.2f%% decrease.\n", offset, (long long)(sb.st_size - offset),
213
		    "bytes, %.2f%% decrease.\n", offset, (long long)(sb.st_size - offset),
213
		    100.0 * (long long)(sb.st_size - offset) / (float)sb.st_size);
214
		    100.0 * (long long)(sb.st_size - offset) / (float)sb.st_size);

Return to bug 199407