(ctx context.Context, path string)
| 61 | return readFileChunk(ov.BackingPath, off, size) |
| 62 | } |
| 63 | n, err := e.Resolver.resolvePath(path) |
| 64 | if err != nil { |
| 65 | return nil, err |
| 66 | } |
| 67 | f, _, err := e.Hydrator.OpenHydrated(ctx, e.Repo, n.Base) |
| 68 | if err != nil { |
| 69 | return nil, err |
| 70 | } |
| 71 | defer f.Close() |
| 72 | return readFileChunkFrom(f, off, size) |
| 73 | } |
| 74 | |
| 75 | func (e *Engine) BaseCacheFile(ctx context.Context, path string) (*os.File, int64, bool, error) { |
| 76 | e.Resolver.transition.RLock() |
| 77 | defer e.Resolver.transition.RUnlock() |
| 78 | path = model.CleanPath(path) |
| 79 | if ov, ok, err := e.Overlay.Lookup(ctx, path); err != nil { |
| 80 | return nil, 0, false, err |
| 81 | } else if ok { |
| 82 | if ov.IsDeleted() { |
| 83 | return nil, 0, false, os.ErrNotExist |
| 84 | } |
no test coverage detected