Lines Matching refs:header

63  *	Move the backing_file field to the end of the header.  This allows
200 struct cow_header_v3 *header;
211 header = cow_malloc(sizeof(*header));
212 if (header == NULL) {
214 "header\n");
217 header->magic = htobe32(COW_MAGIC);
218 header->version = htobe32(COW_VERSION);
221 if (strlen(backing_file) > sizeof(header->backing_file) - 1) {
225 sizeof(header->backing_file) - 1);
229 if (absolutize(header->backing_file, sizeof(header->backing_file),
233 err = os_file_modtime(header->backing_file, &modtime);
236 "request failed, err = %d\n", header->backing_file,
241 err = cow_file_size(header->backing_file, size);
245 header->backing_file, -err);
249 header->mtime = htobe32(modtime);
250 header->size = htobe64(*size);
251 header->sectorsize = htobe32(sectorsize);
252 header->alignment = htobe32(alignment);
253 header->cow_format = COW_BITMAP;
255 err = cow_write_file(fd, header, sizeof(*header));
256 if (err != sizeof(*header)) {
257 cow_printf("write_cow_header - write of header to "
264 cow_free(header);
276 /* XXX Need to sanity-check the values read from the header */
284 union cow_header *header;
289 header = cow_malloc(sizeof(*header));
290 if (header == NULL) {
291 cow_printf("read_cow_header - Failed to allocate header\n");
295 n = (*reader)(0, (char *) header, sizeof(*header), arg);
296 if (n < offsetof(typeof(header->v1), backing_file)) {
297 cow_printf("read_cow_header - short header\n");
301 magic = header->v1.magic;
303 version = header->v1.version;
305 version = be32toh(header->v1.version);
312 if (n < sizeof(header->v1)) {
314 "header\n");
317 *mtime_out = header->v1.mtime;
318 *size_out = header->v1.size;
319 *sectorsize_out = header->v1.sectorsize;
320 *bitmap_offset_out = sizeof(header->v1);
322 file = header->v1.backing_file;
325 if (n < sizeof(header->v2)) {
327 "header\n");
330 *mtime_out = be32toh(header->v2.mtime);
331 *size_out = be64toh(header->v2.size);
332 *sectorsize_out = be32toh(header->v2.sectorsize);
333 *bitmap_offset_out = sizeof(header->v2);
335 file = header->v2.backing_file;
338 else if (version == 3 && (*((int*)header->v3.backing_file) != 0)) {
339 if (n < sizeof(header->v3)) {
341 "header\n");
344 *mtime_out = be32toh(header->v3.mtime);
345 *size_out = be64toh(header->v3.size);
346 *sectorsize_out = be32toh(header->v3.sectorsize);
347 *align_out = be32toh(header->v3.alignment);
349 cow_printf("read_cow_header - invalid COW header, "
352 *bitmap_offset_out = ROUND_UP(sizeof(header->v3), *align_out);
353 file = header->v3.backing_file;
359 if (n < sizeof(header->v3_b)) {
361 "header\n");
374 *mtime_out = (time32_t) be32toh(header->v3_b.mtime);
376 *size_out = be64toh(header->v3_b.size);
377 *sectorsize_out = be32toh(header->v3_b.sectorsize);
378 *align_out = be32toh(header->v3_b.alignment);
380 cow_printf("read_cow_header - invalid COW header, "
383 *bitmap_offset_out = ROUND_UP(sizeof(header->v3_b), *align_out);
384 file = header->v3_b.backing_file;
399 cow_free(header);