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

Alexander Motin mav at FreeBSD.org
Sun Mar 15 08:09:57 UTC 2015


Author: mav
Date: Sun Mar 15 08:09:56 2015
New Revision: 280017
URL: https://svnweb.freebsd.org/changeset/base/280017

Log:
  Block delete capability for read-only devices.
  
  Submitted by:	neel
  MFC after:	2 weeks

Modified:
  head/usr.sbin/bhyve/block_if.c
  head/usr.sbin/bhyve/pci_ahci.c

Modified: head/usr.sbin/bhyve/block_if.c
==============================================================================
--- head/usr.sbin/bhyve/block_if.c	Sun Mar 15 00:39:18 2015	(r280016)
+++ head/usr.sbin/bhyve/block_if.c	Sun Mar 15 08:09:56 2015	(r280017)
@@ -230,6 +230,8 @@ blockif_proc(struct blockif_ctxt *bc, st
 	case BOP_DELETE:
 		if (!bc->bc_candelete)
 			err = EOPNOTSUPP;
+		else if (bc->bc_rdonly)
+			err = EROFS;
 		else if (bc->bc_ischr) {
 			arg[0] = br->br_offset;
 			arg[1] = br->br_iov[0].iov_len;

Modified: head/usr.sbin/bhyve/pci_ahci.c
==============================================================================
--- head/usr.sbin/bhyve/pci_ahci.c	Sun Mar 15 00:39:18 2015	(r280016)
+++ head/usr.sbin/bhyve/pci_ahci.c	Sun Mar 15 08:09:56 2015	(r280017)
@@ -840,10 +840,11 @@ handle_identify(struct ahci_port *p, int
 	} else {
 		uint16_t buf[256];
 		uint64_t sectors;
-		int sectsz, psectsz, psectoff, candelete;
+		int sectsz, psectsz, psectoff, candelete, ro;
 		uint16_t cyl;
 		uint8_t sech, heads;
 
+		ro = blockif_is_ro(p->bctx);
 		candelete = blockif_candelete(p->bctx);
 		sectsz = blockif_sectsz(p->bctx);
 		sectors = blockif_size(p->bctx) / sectsz;
@@ -906,7 +907,7 @@ handle_identify(struct ahci_port *p, int
 		buf[101] = (sectors >> 16);
 		buf[102] = (sectors >> 32);
 		buf[103] = (sectors >> 48);
-		if (candelete) {
+		if (candelete && !ro) {
 			buf[69] |= ATA_SUPPORT_RZAT | ATA_SUPPORT_DRAT;
 			buf[105] = 1;
 			buf[169] = ATA_SUPPORT_DSM_TRIM;


More information about the svn-src-all mailing list