summaryrefslogtreecommitdiffstats
path: root/lib/activate/table-build.c
blob: c88d0b320043c2a02c77f7d00ffeb7f59129a09c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * Copyright (C) 2001 Sistina Software (UK) Limited.
 *
 * This file is released under the GPL.
 */

#include "table-build.c"

/* FIXME: optimise linear runs */
int build_table(struct volume_group *vg, struct logical_volume *lv,
		const char *file)
{
	int i;
	uint64_t sector = 0;
	uint64_t pe_size = vg->extent_size;
	uint64_t dest;
	struct pe_specifier *pes;
	FILE *fp = fopen(file, "w");

	if (!fp) {
		log_err("couldn't open '%s' to write table", file);
		return 0;
	}

	for (i = 0; i < lv->le_count; i++) {
		pes = lv->map + i;
		dest = pes->pv->pe_start + (pe_size * pes->pe);
		fprintf(fp, "%ull %ull linear %s %ull\n",
			sector, pe_size, pes->pv->dev->name, dest);
		sector += pe_size;
	}
	fclose(fp);

	return 1;
}