diff --git a/openstack/compute/v2/extensions/bootfromvolume/requests.go b/openstack/compute/v2/extensions/bootfromvolume/requests.go
index d5b361b..e8ce739 100644
--- a/openstack/compute/v2/extensions/bootfromvolume/requests.go
+++ b/openstack/compute/v2/extensions/bootfromvolume/requests.go
@@ -15,36 +15,46 @@
 // volume.
 type BlockDevice struct {
 	// BootIndex [optional] is the boot index. It defaults to 0.
-	BootIndex int
+	BootIndex int `json:"boot_index"`
 
 	// DeleteOnTermination [optional] specifies whether or not to delete the attached volume
 	// when the server is deleted. Defaults to `false`.
-	DeleteOnTermination bool
+	DeleteOnTermination bool `json:"delete_on_termination"`
 
 	// DestinationType [optional] is the type that gets created. Possible values are "volume"
 	// and "local".
-	DestinationType string
+	DestinationType string `json:"destination_type"`
 
 	// SourceType [optional] must be one of: "volume", "snapshot", "image".
-	SourceType string
+	SourceType string `json:"source_type"`
 
 	// UUID [optional] is the unique identifier for the volume, snapshot, or image (see above)
-	UUID string
+	UUID string `json:"uuid"`
 
 	// VolumeSize [optional] is the size of the volume to create (in gigabytes).
-	VolumeSize int
+	VolumeSize int `json:"volume_size"`
 }
 
 // CreateOptsExt is a structure that extends the server `CreateOpts` structure
 // by allowing for a block device mapping.
 type CreateOptsExt struct {
 	servers.CreateOptsBuilder
-	BlockDevice BlockDevice
+	BlockDevice BlockDevice `json:"block_device_mapping_v2,omitempty"`
 }
 
 // ToServerCreateMap adds the block device mapping option to the base server
 // creation options.
 func (opts CreateOptsExt) ToServerCreateMap() (map[string]interface{}, error) {
+	base, err := opts.CreateOptsBuilder.ToServerCreateMap()
+	if err != nil {
+		return nil, err
+	}
+
+	var blockDevice BlockDevice
+	if opts.BlockDevice == blockDevice {
+		return base, nil
+	}
+
 	if opts.BlockDevice.SourceType != "volume" &&
 		opts.BlockDevice.SourceType != "image" &&
 		opts.BlockDevice.SourceType != "snapshot" &&
@@ -52,11 +62,6 @@
 		return nil, errors.New("SourceType must be one of: volume, image, snapshot, [blank].")
 	}
 
-	base, err := opts.CreateOptsBuilder.ToServerCreateMap()
-	if err != nil {
-		return nil, err
-	}
-
 	serverMap := base["server"].(map[string]interface{})
 
 	bd := make(map[string]interface{})
@@ -77,8 +82,8 @@
 }
 
 // Create requests the creation of a server from the given block device mapping.
-func Create(client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) servers.CreateResult {
-	var res servers.CreateResult
+func Create(client *gophercloud.ServiceClient, opts servers.CreateOptsBuilder) CreateResult {
+	var res CreateResult
 
 	reqBody, err := opts.ToServerCreateMap()
 	if err != nil {
@@ -90,7 +95,8 @@
 		MoreHeaders: client.AuthenticatedHeaders(),
 		ReqBody:     reqBody,
 		Results:     &res.Body,
-		OkCodes:     []int{200},
+		OkCodes:     []int{200, 202},
+		DumpReqJson: true,
 	})
 	return res
 }
diff --git a/openstack/compute/v2/extensions/bootfromvolume/results.go b/openstack/compute/v2/extensions/bootfromvolume/results.go
new file mode 100644
index 0000000..f60329f
--- /dev/null
+++ b/openstack/compute/v2/extensions/bootfromvolume/results.go
@@ -0,0 +1,10 @@
+package bootfromvolume
+
+import (
+	os "github.com/rackspace/gophercloud/openstack/compute/v2/servers"
+)
+
+// CreateResult temporarily contains the response from a Create call.
+type CreateResult struct {
+	os.CreateResult
+}
diff --git a/openstack/compute/v2/extensions/diskconfig/requests.go b/openstack/compute/v2/extensions/diskconfig/requests.go
index cc390f7..7407e0d 100644
--- a/openstack/compute/v2/extensions/diskconfig/requests.go
+++ b/openstack/compute/v2/extensions/diskconfig/requests.go
@@ -41,7 +41,7 @@
 	servers.CreateOptsBuilder
 
 	// DiskConfig [optional] controls how the created server's disk is partitioned.
-	DiskConfig DiskConfig
+	DiskConfig DiskConfig `json:"OS-DCF:diskConfig,omitempty"`
 }
 
 // ToServerCreateMap adds the diskconfig option to the base server creation options.
@@ -51,6 +51,10 @@
 		return nil, err
 	}
 
+	if string(opts.DiskConfig) == "" {
+		return base, nil
+	}
+
 	serverMap := base["server"].(map[string]interface{})
 	serverMap["OS-DCF:diskConfig"] = string(opts.DiskConfig)
 
