On Fri, Sep 05, 2008 at 11:17:27PM -0400, Cole Robinson wrote: > static int > virStorageBackendDiskDeleteVol(virConnectPtr conn, > - virStoragePoolObjPtr pool ATTRIBUTE_UNUSED, > - virStorageVolDefPtr vol ATTRIBUTE_UNUSED, > + virStoragePoolObjPtr pool, > + virStorageVolDefPtr vol, > unsigned int flags ATTRIBUTE_UNUSED) > { > - /* delete a partition */ > - virStorageReportError(conn, VIR_ERR_NO_SUPPORT, > - _("Disk pools are not yet supported")); > - return -1; > + char *part_num = NULL; > + int n; > + char devpath[PATH_MAX]; > + char *devname, *srcname; > + > + if ((n = readlink(vol->target.path, devpath, sizeof(devpath))) < 0 && > + errno != EINVAL) { > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, > + _("Couldn't read volume target path '%s'. %s"), > + vol->target.path, strerror(errno)); > + return -1; > + } else if (n <= 0) { > + strncpy(devpath, vol->target.path, PATH_MAX); > + } else { > + devpath[n] = '\0'; > + } > + > + devname = basename(devpath); > + srcname = basename(pool->def->source.devices[0].path); This seems to leak the two strings and not check for errors. That would need to be fixed before being commited IMHO > + DEBUG("devname=%s, srcname=%s", devname, srcname); > + > + if (!STRPREFIX(devname, srcname)) { > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, > + _("Volume path '%s' did not start with parent " > + "pool source device name."), devname); > + return -1; > + } > + > + part_num = devname + strlen(srcname); > + > + if (!part_num) { > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, > + _("cannot parse partition number from target " > + "'%s'"), devname); > + return -1; > + } > + > + /* eg parted /dev/sda rm 2 */ > + const char *prog[] = { > + PARTED, > + pool->def->source.devices[0].path, > + "rm", > + "--script", > + part_num, > + NULL, > + }; > + > + if (virRun(conn, prog, NULL) < 0) > + return -1; > + > + return 0; > } Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list