Пример #1
0
static int
tapdisk_vbd_validate_chain(td_vbd_t *vbd)
{
	int err;
	td_image_t *image, *parent, *tmp;

	DPRINTF("VBD CHAIN:\n");

	tapdisk_vbd_for_each_image(vbd, image, tmp) {
		DPRINTF("%s: %d\n", image->name, image->type);

		if (tapdisk_vbd_is_last_image(vbd, image))
			break;

		parent = tapdisk_vbd_next_image(image);
		err    = td_validate_parent(image, parent);
		if (err)
			return err;
	}
Пример #2
0
int
tapdisk_image_validate_chain(struct list_head *head)
{
	td_image_t *image, *parent;
	int flags, err;

	INFO("VBD CHAIN:\n");

	tapdisk_for_each_image_reverse(parent, head) {
		image = tapdisk_image_entry(parent->next.prev);

		if (image == tapdisk_image_entry(head))
			break;

		err = td_validate_parent(image, parent);
		if (err)
			return err;

		flags = tapdisk_disk_types[image->type]->flags;
		if (flags & DISK_TYPE_FILTER) {
			image->driver->info = parent->driver->info;
			image->info         = parent->info;
		}
	}