diff --git a/object/host_datastore_system.go b/object/host_datastore_system.go
index 7b738e611..64f3add91 100644
--- a/object/host_datastore_system.go
+++ b/object/host_datastore_system.go
@@ -117,3 +117,19 @@ func (s HostDatastoreSystem) QueryVmfsDatastoreCreateOptions(ctx context.Context
 
 	return res.Returnval, nil
 }
+
+func (s HostDatastoreSystem) ResignatureUnresolvedVmfsVolumes(ctx context.Context, devicePaths []string) (*Task, error) {
+	req := &types.ResignatureUnresolvedVmfsVolume_Task{
+		This: s.Reference(),
+		ResolutionSpec: types.HostUnresolvedVmfsResignatureSpec{
+			ExtentDevicePath: devicePaths,
+		},
+	}
+
+	res, err := methods.ResignatureUnresolvedVmfsVolume_Task(ctx, s.Client(), req)
+	if err != nil {
+		return nil, err
+	}
+
+	return NewTask(s.c, res.Returnval), nil
+}
diff --git a/object/host_datastore_system_test.go b/object/host_datastore_system_test.go
new file mode 100644
index 000000000..48379ba0e
--- /dev/null
+++ b/object/host_datastore_system_test.go
@@ -0,0 +1,60 @@
+/*
+Copyright (c) 2015 VMware, Inc. All Rights Reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package object
+
+import (
+	"context"
+	"testing"
+
+	"github.com/vmware/govmomi/simulator/esx"
+	"github.com/vmware/govmomi/test"
+)
+
+func TestHostDatastoreSystemResignatureUnresolvedVmfsVolume(t *testing.T) {
+	c := test.NewAuthenticatedClient(t)
+	host := NewHostSystem(c, esx.HostSystem.Reference())
+
+	ctx := context.Background()
+
+	hds, err := host.ConfigManager().DatastoreSystem(ctx)
+	if err != nil {
+		t.Error(err)
+	}
+	hss, err := host.ConfigManager().StorageSystem(ctx)
+	if err != nil {
+		t.Error(err)
+	}
+
+	paths, err := hss.QueryUnresolvedVmfsVolumes(ctx)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	if len(paths) == 0 {
+		t.Skip("No unresolved vmfs volumes found")
+	}
+
+	task, err := hds.ResignatureUnresolvedVmfsVolumes(ctx, []string{paths[0].Extent[0].DevicePath})
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	err = task.Wait(ctx)
+	if err != nil {
+		t.Fatal(err)
+	}
+}
diff --git a/object/host_storage_system.go b/object/host_storage_system.go
index 5990a1d4e..5c9f08eee 100644
--- a/object/host_storage_system.go
+++ b/object/host_storage_system.go
@@ -172,3 +172,29 @@ func (s HostStorageSystem) AttachScsiLun(ctx context.Context, uuid string) error
 
 	return err
 }
+
+func (s HostStorageSystem) QueryUnresolvedVmfsVolumes(ctx context.Context) ([]types.HostUnresolvedVmfsVolume, error) {
+	req := &types.QueryUnresolvedVmfsVolume{
+		This: s.Reference(),
+	}
+
+	res, err := methods.QueryUnresolvedVmfsVolume(ctx, s.Client(), req)
+	if err != nil {
+		return nil, err
+	}
+	return res.Returnval, nil
+}
+
+func (s HostStorageSystem) UnmountVmfsVolume(ctx context.Context, vmfsUuid string) error {
+	req := &types.UnmountVmfsVolume{
+		This:     s.Reference(),
+		VmfsUuid: vmfsUuid,
+	}
+
+	_, err := methods.UnmountVmfsVolume(ctx, s.Client(), req)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}