diff --git a/VolumeManager.h b/VolumeManager.h
index e664e49..a8117c9 100644
--- a/VolumeManager.h
+++ b/VolumeManager.h
@@ -37,7 +37,6 @@
 #include "android/os/IVoldListener.h"
 
 #include "model/Disk.h"
-#include "model/DiskPartition.h"
 #include "model/VolumeBase.h"
 
 class VolumeManager {
@@ -62,30 +61,20 @@
 
     class DiskSource {
       public:
-        DiskSource(const std::string& sysPattern, const std::string& nickname,
-                int partnum, int flags,
-                const std::string& fstype, const std::string mntopts)
-                : mSysPattern(sysPattern), mNickname(nickname),
-                mPartNum(partnum), mFlags(flags),
-                mFsType(fstype), mMntOpts(mntopts) {}
+        DiskSource(const std::string& sysPattern, const std::string& nickname, int flags)
+            : mSysPattern(sysPattern), mNickname(nickname), mFlags(flags) {}
 
         bool matches(const std::string& sysPath) {
             return !fnmatch(mSysPattern.c_str(), sysPath.c_str(), 0);
         }
 
         const std::string& getNickname() const { return mNickname; }
-        int getPartNum() const { return mPartNum; }
         int getFlags() const { return mFlags; }
-        const std::string& getFsType() { return mFsType; }
-        const std::string& getMntOpts() { return mMntOpts; }
 
       private:
         std::string mSysPattern;
         std::string mNickname;
-        int mPartNum;
         int mFlags;
-        std::string mFsType;
-        std::string mMntOpts;
     };
 
     void addDiskSource(const std::shared_ptr<DiskSource>& diskSource);
