diff --git a/lib/backend.py b/lib/backend.py
index 027f38617b383be00804d341909b71f7ecb13e2e..b6918c87fbb2e475fc272613b9af4ad592e012c7 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -1217,9 +1217,16 @@ def RunRenameInstance(instance, old_name, debug):
           " log file:\n%s", result.fail_reason, "\n".join(lines), log=False)
 
 
-def _GetBlockDevSymlinkPath(instance_name, idx):
-  return utils.PathJoin(pathutils.DISK_LINKS_DIR, "%s%s%d" %
-                        (instance_name, constants.DISK_SEPARATOR, idx))
+def _GetBlockDevSymlinkPath(instance_name, idx, _dir=None):
+  """Returns symlink path for block device.
+
+  """
+  if _dir is None:
+    _dir = pathutils.DISK_LINKS_DIR
+
+  return utils.PathJoin(_dir,
+                        ("%s%s%s" %
+                         (instance_name, constants.DISK_SEPARATOR, idx)))
 
 
 def _SymlinkBlockDev(instance_name, device_path, idx):
diff --git a/test/py/ganeti.backend_unittest.py b/test/py/ganeti.backend_unittest.py
index 4a852425b0d052277a53baa998dbc0bcd8feed9d..74ae4e74846320a31c648a30dca6c6971a241bdd 100755
--- a/test/py/ganeti.backend_unittest.py
+++ b/test/py/ganeti.backend_unittest.py
@@ -517,5 +517,23 @@ class TestSetWatcherPause(unittest.TestCase):
       self.assertEqual(os.stat(self.filename).st_mode & 0777, 0644)
 
 
+class TestGetBlockDevSymlinkPath(unittest.TestCase):
+  def setUp(self):
+    self.tmpdir = tempfile.mkdtemp()
+
+  def tearDown(self):
+    shutil.rmtree(self.tmpdir)
+
+  def _Test(self, name, idx):
+    self.assertEqual(backend._GetBlockDevSymlinkPath(name, idx,
+                                                     _dir=self.tmpdir),
+                     ("%s/%s%s%s" % (self.tmpdir, name,
+                                     constants.DISK_SEPARATOR, idx)))
+
+  def test(self):
+    for idx in range(100):
+      self._Test("inst1.example.com", idx)
+
+
 if __name__ == "__main__":
   testutils.GanetiTestProgram()