mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-22 07:03:38 +00:00
launch: Error if you try to launch with too many drives.
In particular the virt-rescue --scratch option makes it very easy to add huge numbers of drives. Since the per-backend max_disks limit was never checked anywhere you could get peculiar failures. Now you'll get a clear error message: $ virt-rescue --scratch=256 libguestfs: error: too many drives have been added, the current backend only supports 255 drives
This commit is contained in:
15
lib/launch.c
15
lib/launch.c
@@ -55,12 +55,27 @@ static struct backend {
|
||||
int
|
||||
guestfs_impl_launch (guestfs_h *g)
|
||||
{
|
||||
int r;
|
||||
|
||||
/* Configured? */
|
||||
if (g->state != CONFIG) {
|
||||
error (g, _("the libguestfs handle has already been launched"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Too many drives?
|
||||
*
|
||||
* Some backends such as ‘unix:’ don't allow us to query max_disks.
|
||||
* Don't fail in this case.
|
||||
*/
|
||||
guestfs_push_error_handler (g, NULL, NULL);
|
||||
r = guestfs_max_disks (g);
|
||||
guestfs_pop_error_handler (g);
|
||||
if (r >= 0 && g->nr_drives > (size_t) r) {
|
||||
error (g, _("too many drives have been added, the current backend only supports %d drives"), r);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Start the clock ... */
|
||||
gettimeofday (&g->launch_t, NULL);
|
||||
TRACE0 (launch_start);
|
||||
|
||||
Reference in New Issue
Block a user