<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_mount_point(self, path, total_size=None):
 """Add a new mount point for a filesystem device. The mount point gets a new unique device number. Args: path: The root path for the new mount path. total_size: The new total size of the added filesystem device in bytes. Defaults to infinite size. Returns: The newly created mount point dict. Raises: OSError: if trying to mount an existing mount point again. """

        path = self.absnormpath(path)
        if path in self.mount_points:
            self.raise_os_error(errno.EEXIST, path)
        self._last_dev += 1
        self.mount_points[path] = {
            'idev': self._last_dev, 'total_size': total_size, 'used_size': 0
        }
        # special handling for root path: has been created before
        root_dir = (self.root if path == self.root.name
                    else self.create_dir(path))
        root_dir.st_dev = self._last_dev
        return self.mount_points[path]