[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] blktap2 and pygrub: error


  • To: Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: eXeC001er <execooler@xxxxxxxxx>
  • Date: Thu, 20 May 2010 00:33:03 +0400
  • Delivery-date: Wed, 19 May 2010 13:47:32 -0700
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=kkvT0WQAes5qzRmCc2HtzV9JIuRbEVOwfDZ7J2jDn2UXjS7doqVKvG+drgW3GQPmEc 1Cs5PfaMuVYy5zO0RXutsUP65IkYXfBsHPUsg+nrQOaTcZHW6tl+1/525+CnzUdq0hCu eiInQUWLnD8thcvKsiP9GFO8E12y4tS1XPfB8=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

Hi.

I tried ti use VHD-disk-image for my Opensolaris DomU.Â
Installation on this disk is fine, but i cannot to boot from it.

in logs "Disk isn't accessible";

I mount image and tried to use pygrub directly:

pygrubÂ/dev/xvdp
Traceback (most recent call last):
ÂÂFile "/usr/bin/pygrub", line 705, in <module>
ÂÂ Âfs = fsimage.open(file, get_fs_offset(file))
IOError: [Errno 95] Operation not supported


but i can 'dd' from it device-file.

I researched this issue:

error returned from:
*** xen-src-root/tools/pygrub/src/fsimage/fsimage.c ***

static PyObject *
fsimage_open(PyObject *o, PyObject *args, PyObject *kwargs)
{
ÂÂ Â Â Âstatic char *kwlist[] = { "name", "offset", "options", NULL };
ÂÂ Â Â Âchar *name;
ÂÂ Â Â Âchar *options = NULL;
ÂÂ Â Â Âuint64_t offset = 0;
ÂÂ Â Â Âfsimage_fs_t *fs;

ÂÂ Â Â Âif (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|Ls", kwlist,
ÂÂ Â Â Â Â Â&name, &offset, &options))
ÂÂ Â Â Â Â Â Â Âreturn (NULL);

ÂÂ Â Â Âif ((fs = PyObject_NEW(fsimage_fs_t, &fsimage_fs_type)) == NULL)
ÂÂ Â Â Â Â Â Â Âreturn (NULL);

ÂÂ Â Â Âif ((fs->fs = fsi_open_fsimage(name, offset, options)) == NULL) {
ÂÂ Â Â Â Â Â Â ÂPyErr_SetFromErrno(PyExc_IOError); Â Â <<<<<<<<<<<<<<<<<<<<<<<<
ÂÂ Â Â Â Â Â Â Âreturn (NULL);
ÂÂ Â Â Â}

ÂÂ Â Â Âreturn (PyObject *)fs;
}

*** xen-src-root/tools/libfsimage/common/fsimage.c ***
fsi_t *fsi_open_fsimage(const char *path, uint64_t off, const char *options)
{
ÂÂ Â Â Âfsi_t *fsi = NULL;
ÂÂ Â Â Âint fd;
ÂÂ Â Â Âint err;

ÂÂ Â Â Âif ((fd = open(path, O_RDONLY)) == -1) Â Â Â <<<<<<<<<<<<<<<<<<<<<<
ÂÂ Â Â Â Â Â Â Âgoto fail;

ÂÂ Â Â Âif ((fsi = malloc(sizeof(*fsi))) == NULL)
ÂÂ Â Â Â Â Â Â Âgoto fail;

ÂÂ Â Â Âfsi->f_fd = fd;
ÂÂ Â Â Âfsi->f_off = off;
ÂÂ Â Â Âfsi->f_data = NULL;
ÂÂ Â Â Âfsi->f_bootstring = NULL;

ÂÂ Â Â Âpthread_mutex_lock(&fsi_lock);
ÂÂ Â Â Âerr = find_plugin(fsi, path, options);
ÂÂ Â Â Âpthread_mutex_unlock(&fsi_lock);
ÂÂ Â Â Âif (err != 0)
ÂÂ Â Â Â Â Â Â Âgoto fail;

ÂÂ Â Â Âreturn (fsi);

fail:
ÂÂ Â Â Âerr = errno;
ÂÂ Â Â Âif (fd != -1)
ÂÂ Â Â Â Â Â Â Â(void) close(fd);
ÂÂ Â Â Âfree(fsi);
ÂÂ Â Â Âerrno = err;
ÂÂ Â Â Âreturn (NULL);
}

If i use 'file:/' type of disk-image (i have other disk-image) then all ok.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.