def METHOD_NAME(self, uuid, lvName, lvPath):
    """incrementing the refcount is not enough to keep an LV activated if
    another party is unaware of refcounting. For example, blktap does 
    direct "lvchange -an, lvchange -ay" during VBD.attach/resume without
    any knowledge of refcounts. Therefore, we need to keep the device open 
    to prevent unwanted deactivations. Note that blktap can do "lvchange
    -an" the very moment we try to open the file, so retry on failure"""
    if self.lvActivations[self.TEMPORARY][self.NORMAL].get(uuid):
        return
    self.activate(uuid, lvName, self.NORMAL)
    f = None
    for i in range(self.OPEN_RETRY_ATTEMPTS):
        try:
            f = open(lvPath, 'r')
            break
        except IOError:
            util.SMlog("(Failed to open %s on attempt %d)" % (lvPath, i))
            time.sleep(self.OPEN_RETRY_INTERVAL)
    if not f:
        raise LVManagerException("Failed to open %s" % lvPath)
    self.openFiles[uuid] = f
    self.lvmCache.changeOpen(lvName, 1)