MCPcopy
hub / github.com/runfinch/finch / attachPersistentDiskToLimaDisk

Method attachPersistentDiskToLimaDisk

pkg/disk/disk_darwin.go:170–204  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

168}
169
170func (m *userDataDiskManager) attachPersistentDiskToLimaDisk() error {
171 limaPath := fmt.Sprintf("%s/_disks/%s/datadisk", m.finch.LimaHomePath(), diskName)
172 if !m.persistentDiskExists() {
173 disksDir := path.Dir(m.finch.UserDataDiskPath(m.rootDir))
174 _, err := m.fs.Stat(disksDir)
175 if errors.Is(err, fs.ErrNotExist) {
176 if err := m.fs.MkdirAll(disksDir, 0o700); err != nil {
177 return fmt.Errorf("could not create persistent disk directory: %w", err)
178 }
179 }
180 if err = m.fs.Rename(limaPath, m.finch.UserDataDiskPath(m.rootDir)); err != nil {
181 return fmt.Errorf("could not move data disk to persistent path: %w", err)
182 }
183 }
184
185 // if a datadisk already exists in the lima path, SymlinkIfPossible will no-op.
186 // to ensure that it symlinks properly, we have to delete the disk in the lima path
187 _, err := m.fs.Stat(limaPath)
188 if err != nil {
189 if !errors.Is(err, fs.ErrNotExist) {
190 return err
191 }
192 } else {
193 err = m.fs.Remove(limaPath)
194 if err != nil {
195 return err
196 }
197 }
198
199 err = m.fs.SymlinkIfPossible(m.finch.UserDataDiskPath(m.rootDir), limaPath)
200 if err != nil {
201 return err
202 }
203 return nil
204}
205
206func (m *userDataDiskManager) limaDiskIsLocked() bool {
207 lockPath := path.Join(m.finch.LimaHomePath(), "_disks", diskName, "in_use_by")

Callers 1

EnsureUserDataDiskMethod · 0.95

Calls 9

persistentDiskExistsMethod · 0.95
LimaHomePathMethod · 0.80
UserDataDiskPathMethod · 0.80
ErrorfMethod · 0.65
StatMethod · 0.45
MkdirAllMethod · 0.45
RenameMethod · 0.45
RemoveMethod · 0.45
SymlinkIfPossibleMethod · 0.45

Tested by

no test coverage detected