diff --git a/Android.mk b/Android.mk
index 3af7544..07401e2 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,7 +14,7 @@
                   NetlinkHandler.cpp                   \
                   BlockDevice.cpp                      \
                   Volume.cpp                           \
-                  DeviceVolume.cpp      
+                  DirectVolume.cpp
 
 LOCAL_MODULE:= vold
 
diff --git a/DeviceVolume.cpp b/DirectVolume.cpp
similarity index 86%
rename from DeviceVolume.cpp
rename to DirectVolume.cpp
index 1bd10f4..0817624 100644
--- a/DeviceVolume.cpp
+++ b/DirectVolume.cpp
@@ -24,16 +24,16 @@
 #include <cutils/log.h>
 #include <sysutils/NetlinkEvent.h>
 
-#include "DeviceVolume.h"
+#include "DirectVolume.h"
 
-DeviceVolume::DeviceVolume(const char *label, const char *mount_point, int partIdx) :
+DirectVolume::DirectVolume(const char *label, const char *mount_point, int partIdx) :
               Volume(label, mount_point) {
     mPartIdx = partIdx;
   
     mPaths = new PathCollection();
 }
 
-DeviceVolume::~DeviceVolume() {
+DirectVolume::~DirectVolume() {
     PathCollection::iterator it;
 
     for (it = mPaths->begin(); it != mPaths->end(); ++it)
@@ -41,12 +41,12 @@
     delete mPaths;
 }
 
-int DeviceVolume::addPath(const char *path) {
+int DirectVolume::addPath(const char *path) {
     mPaths->push_back(strdup(path));
     return 0;
 }
 
-int DeviceVolume::handleBlockEvent(NetlinkEvent *evt) {
+int DirectVolume::handleBlockEvent(NetlinkEvent *evt) {
     const char *dp = evt->findParam("DEVPATH");
 
     PathCollection::iterator  it;
@@ -79,7 +79,7 @@
     return -1;
 }
 
-void DeviceVolume::handleDiskAdded(const char *devpath, NetlinkEvent *evt) {
+void DirectVolume::handleDiskAdded(const char *devpath, NetlinkEvent *evt) {
     mDiskMaj = atoi(evt->findParam("MAJOR"));
     mDiskNumParts = atoi(evt->findParam("NPARTS"));
 
@@ -100,7 +100,7 @@
     }
 }
 
-void DeviceVolume::handlePartitionAdded(const char *devpath, NetlinkEvent *evt) {
+void DirectVolume::handlePartitionAdded(const char *devpath, NetlinkEvent *evt) {
     int major = atoi(evt->findParam("MAJOR"));
     int minor = atoi(evt->findParam("MINOR"));
     int part_num = atoi(evt->findParam("PARTN"));
@@ -114,8 +114,8 @@
     }
 }
 
-void DeviceVolume::handleDiskRemoved(const char *devpath, NetlinkEvent *evt) {
+void DirectVolume::handleDiskRemoved(const char *devpath, NetlinkEvent *evt) {
 }
 
-void DeviceVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent *evt) {
+void DirectVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent *evt) {
 }
diff --git a/DeviceVolume.h b/DirectVolume.h
similarity index 87%
rename from DeviceVolume.h
rename to DirectVolume.h
index e535344..b58d867 100644
--- a/DeviceVolume.h
+++ b/DirectVolume.h
@@ -23,7 +23,7 @@
 
 typedef android::List<char *> PathCollection;
 
-class DeviceVolume : public Volume {
+class DirectVolume : public Volume {
 protected:
     PathCollection *mPaths;
     int            mPartIdx;
@@ -32,8 +32,8 @@
     unsigned char  mPendingPartMap;
 
 public:
-    DeviceVolume(const char *label, const char *mount_point, int partIdx);
-    virtual ~DeviceVolume();
+    DirectVolume(const char *label, const char *mount_point, int partIdx);
+    virtual ~DirectVolume();
 
     int addPath(const char *path);
 
@@ -46,6 +46,6 @@
     void handlePartitionRemoved(const char *devpath, NetlinkEvent *evt);
 };
 
-typedef android::List<DeviceVolume *> DeviceVolumeCollection;
+typedef android::List<DirectVolume *> DirectVolumeCollection;
 
 #endif
diff --git a/VolumeManager.cpp b/VolumeManager.cpp
index a383651..a724a8d 100644
--- a/VolumeManager.cpp
+++ b/VolumeManager.cpp
@@ -26,7 +26,7 @@
 #include <sysutils/NetlinkEvent.h>
 
 #include "VolumeManager.h"
-#include "DeviceVolume.h"
+#include "DirectVolume.h"
 #include "ErrorCode.h"
 
 VolumeManager *VolumeManager::sInstance = NULL;
diff --git a/main.cpp b/main.cpp
index ba8c33d..1485a20 100644
--- a/main.cpp
+++ b/main.cpp
@@ -31,7 +31,7 @@
 #include "VolumeManager.h"
 #include "CommandListener.h"
 #include "NetlinkManager.h"
-#include "DeviceVolume.h"
+#include "DirectVolume.h"
 
 static int process_config(VolumeManager *vm);
 static void coldboot(const char *path);
@@ -171,7 +171,7 @@
         }
 
         if (!strcmp(type, "dev_mount")) {
-            DeviceVolume *dv = NULL;
+            DirectVolume *dv = NULL;
             char *part, *sysfs_path;
 
             if (!(part = strsep(&next, " \t"))) {
@@ -183,7 +183,7 @@
                 goto out_syntax;
             }
 
-            dv = new DeviceVolume(label, mount_point, atoi(part));
+            dv = new DirectVolume(label, mount_point, atoi(part));
 
             while((sysfs_path = strsep(&next, " \t"))) {
                 if (dv->addPath(sysfs_path)) {
