[vbox-dev] [PATCH, repost:] VBoxManage FreeBSD host physical disk size

Alexander Eichner Alexander.Eichner at Sun.COM
Sat Mar 6 09:02:25 PST 2010


Hi,

thanks for the patch, I applied it this time :)

Regards,
Alexander Eichner

Juergen Lock wrote:

> I was asked to repost this so here goes... :)  The patch is needed  
> to get
> raw disk vmdk creation working on FreeBSD, and its under MIT license.
>
> Index: src/VBox/Frontends/VBoxManage/VBoxInternalManage.cpp
> @@ -54,7 +54,8 @@
> #ifdef RT_OS_WINDOWS
> # include <windows.h>
> # include <winioctl.h>
> -#elif defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) ||  
> defined(RT_OS_SOLARIS)
> +#elif defined(RT_OS_LINUX) || defined(RT_OS_DARWIN) \
> +    || defined(RT_OS_SOLARIS) || defined(RT_OS_FREEBSD)
> # include <errno.h>
> # include <sys/ioctl.h>
> # include <sys/types.h>
> @@ -76,6 +77,9 @@
> # include <sys/dkio.h>
> # include <sys/vtoc.h>
> #endif /* RT_OS_SOLARIS */
> +#ifdef RT_OS_FREEBSD
> +# include <sys/disk.h>
> +#endif /* RT_OS_FREEBSD */
>
> using namespace com;
>
> @@ -1013,6 +1017,28 @@
>         vrc = VERR_INVALID_PARAMETER;
>         goto out;
>     }
> +#elif defined(RT_OS_FREEBSD)
> +    struct stat DevStat;
> +    if (!fstat(RawFile, &DevStat) && S_ISCHR(DevStat.st_mode))
> +    {
> +        off_t cMediasize = 0;
> +        if (!ioctl(RawFile, DIOCGMEDIASIZE, &cMediasize))
> +        {
> +            cbSize = cMediasize;
> +        }
> +        else
> +        {
> +            vrc = RTErrConvertFromErrno(errno);
> +            RTPrintf("Cannot get the block count for file '%s':  
> %Rrc", rawdisk.raw(), vrc);
> +            goto out;
> +        }
> +    }
> +    else
> +    {
> +        RTPrintf("File '%s' is no character device\n",  
> rawdisk.raw());
> +        vrc = VERR_INVALID_PARAMETER;
> +        goto out;
> +    }
> #else /* all unrecognized OSes */
>     /* Hopefully this works on all other hosts. If it doesn't, it'll  
> just fail
>      * creating the VMDK, so no real harm done. */
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> http://vbox.innotek.de/mailman/listinfo/vbox-dev





More information about the vbox-dev mailing list