svn commit: r280040 - head/usr.sbin/bhyve

Ronald Klop ronald-lists at klop.ws
Mon Mar 23 11:02:08 UTC 2015


On Sun, 15 Mar 2015 16:29:04 +0100, Alexander Motin <mav at freebsd.org>  
wrote:

> Author: mav
> Date: Sun Mar 15 15:29:03 2015
> New Revision: 280040
> URL: https://svnweb.freebsd.org/changeset/base/280040
>
> Log:
>   Give AHCI disk serial based on backing file path same as for virtio  
> block.
>  It is still not good that they may intersect on different hosts, but  
> that
>   is better then intersecting on the same host.


Hi,

Maybe you can mix sysctl 'kern.hostid: 3674800361' into it.

Regards,
Ronald.



>  MFC after:	2 weeks
>
> Modified:
>   head/usr.sbin/bhyve/pci_ahci.c
>
> Modified: head/usr.sbin/bhyve/pci_ahci.c
> ==============================================================================
> --- head/usr.sbin/bhyve/pci_ahci.c	Sun Mar 15 15:19:02 2015	(r280039)
> +++ head/usr.sbin/bhyve/pci_ahci.c	Sun Mar 15 15:29:03 2015	(r280040)
> @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
>  #include <pthread.h>
>  #include <pthread_np.h>
>  #include <inttypes.h>
> +#include <md5.h>
> #include "bhyverun.h"
>  #include "pci_emul.h"
> @@ -131,6 +132,7 @@ struct ahci_port {
>  	struct pci_ahci_softc *pr_sc;
>  	uint8_t *cmd_lst;
>  	uint8_t *rfis;
> +	char ident[20 + 1];
>  	int atapi;
>  	int reset;
>  	int mult_sectors;
> @@ -855,8 +857,7 @@ handle_identify(struct ahci_port *p, int
>  		buf[1] = cyl;
>  		buf[3] = heads;
>  		buf[6] = sech;
> -		/* TODO emulate different serial? */
> -		ata_string((uint8_t *)(buf+10), "123456", 20);
> +		ata_string((uint8_t *)(buf+10), p->ident, 20);
>  		ata_string((uint8_t *)(buf+23), "001", 8);
>  		ata_string((uint8_t *)(buf+27), "BHYVE SATA DISK", 40);
>  		buf[47] = (0x8000 | 128);
> @@ -946,8 +947,7 @@ handle_atapi_identify(struct ahci_port *
> 		memset(buf, 0, sizeof(buf));
>  		buf[0] = (2 << 14 | 5 << 8 | 1 << 7 | 2 << 5);
> -		/* TODO emulate different serial? */
> -		ata_string((uint8_t *)(buf+10), "123456", 20);
> +		ata_string((uint8_t *)(buf+10), p->ident, 20);
>  		ata_string((uint8_t *)(buf+23), "001", 8);
>  		ata_string((uint8_t *)(buf+27), "BHYVE SATA DVD ROM", 40);
>  		buf[49] = (1 << 9 | 1 << 8);
> @@ -2167,6 +2167,8 @@ pci_ahci_init(struct vmctx *ctx, struct
>  	struct blockif_ctxt *bctxt;
>  	struct pci_ahci_softc *sc;
>  	int ret, slots;
> +	MD5_CTX mdctx;
> +	u_char digest[16];
> 	ret = 0;
> @@ -2204,6 +2206,16 @@ pci_ahci_init(struct vmctx *ctx, struct
>  	sc->port[0].pr_sc = sc;
> 	/*
> +	 * Create an identifier for the backing file. Use parts of the
> +	 * md5 sum of the filename
> +	 */
> +	MD5Init(&mdctx);
> +	MD5Update(&mdctx, opts, strlen(opts));
> +	MD5Final(digest, &mdctx);	
> +	sprintf(sc->port[0].ident, "BHYVE-%02X%02X-%02X%02X-%02X%02X",
> +	    digest[0], digest[1], digest[2], digest[3], digest[4], digest[5]);
> +
> +	/*
>  	 * Allocate blockif request structures and add them
>  	 * to the free list
>  	 */
> _______________________________________________
> svn-src-all at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/svn-src-all
> To unsubscribe, send any mail to "svn-src-all-unsubscribe at freebsd.org"


More information about the svn-src-head mailing list