recursively make the dirs needed to get to self.datadir