diff --git a/drivers/blktap2.py b/drivers/blktap2.py
index fed8be8..cf38849 100755
--- a/drivers/blktap2.py
+++ b/drivers/blktap2.py
@@ -719,9 +719,18 @@ class Tapdisk(object):
     def from_path(cls, path):
         return cls.get(path=path)
 
+    @classmethod
+    def get_pid_for_path(cls, path: str) -> str:
+        return util.pread2(['/usr/sbin/lsof', '-t', path]).strip()
+
     @classmethod
     def from_minor(cls, minor):
-        return cls.get(minor=minor)
+        pid = None
+        dev_path = os.path.join(Blktap.DEV_BASEDIR, f"blktap{minor}")
+        if os.path.exists(dev_path):
+            pid = cls.get_pid_for_path(dev_path)
+
+        return cls.get(minor=minor, pid=pid)
 
     @classmethod
     def __from_blktap(cls, blktap):
diff --git a/drivers/tapdisk-pause b/drivers/tapdisk-pause
index 6b7fc09..e8e48b2 100755
--- a/drivers/tapdisk-pause
+++ b/drivers/tapdisk-pause
@@ -141,9 +141,8 @@ class Tapdisk:
         if self.major != blktap2.Tapdisk.major():
             util.SMlog("Non-tap major number: %d" % self.major)
             return str(False)
-        tapargs = {"minor":self.minor}
         util.SMlog("Calling tap pause with minor %d" % self.minor)
-        tapdisk = blktap2.Tapdisk.get(**tapargs)
+        tapdisk = blktap2.Tapdisk.from_minor(self.minor)
         tapdisk.pause()
         return str(True)
 
diff --git a/tests/test_blktap2.py b/tests/test_blktap2.py
index 48ef342..d585496 100644
--- a/tests/test_blktap2.py
+++ b/tests/test_blktap2.py
@@ -111,6 +111,39 @@ class TestTapdisk(unittest.TestCase):
 
         self.assertEqual(456, srose.exception.errno)
 
+    @mock.patch('blktap2.os.path.exists', autospec=True)
+    @mock.patch("blktap2.util.pread2", autospec=True)
+    def test_from_minor_success(self, mock_pread2, mock_exists):
+        # Arrange
+        mock_paths = {"/dev/xen/blktap-2/blktap3"}
+
+        def exists(path):
+            print(f"Checking if {path} in {mock_paths}")
+            return path in mock_paths
+
+        mock_exists.side_effect = exists
+
+        mock_pread2.side_effect = ['21457']
+
+        blktap2.TapCtl = self.real_tapctl
+        mock_process = mock.MagicMock(autospec='subprocess.Popen')
+        stdout = \
+            "pid=21457 minor=3 state=0 args=vhd:/dev/VG_XenStorage-2eeb9fd5-6545-8f0b-cf72-0378e413a31c/VHD-a7c0f37e-b7fb-4a44-a6fe-05067fb84c09"
+        mock_process.communicate.return_value = (stdout, "")
+        mock_process.returncode = 0
+        self.mock_subprocess.Popen.return_value = mock_process
+
+        # Act
+        tapdisk = blktap2.Tapdisk.from_minor(3)
+
+        # Assert
+        self.assertIsNotNone(tapdisk)
+        self.assertEqual(21457, tapdisk.pid)
+        self.assertEqual(3, tapdisk.minor)
+        self.assertEqual(
+            "/dev/VG_XenStorage-2eeb9fd5-6545-8f0b-cf72-0378e413a31c/VHD-a7c0f37e-b7fb-4a44-a6fe-05067fb84c09",
+            tapdisk.path)
+
 
 class TestVDI(unittest.TestCase):
     def setUp(self):
