Skip to content

Commit cd35605

Browse files
authored
Merge pull request #332 from pojntfx/master
Call `OpenFile` instead of `Open` in `CacheOnReadFs` (fixes #193)
2 parents 8298014 + 039e386 commit cd35605

File tree

2 files changed

+26
-8
lines changed

2 files changed

+26
-8
lines changed

Diff for: cacheOnReadFs.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ func (u *CacheOnReadFs) copyToLayer(name string) error {
7575
return copyToLayer(u.base, u.layer, name)
7676
}
7777

78+
func (u *CacheOnReadFs) copyFileToLayer(name string, flag int, perm os.FileMode) error {
79+
return copyFileToLayer(u.base, u.layer, name, flag, perm)
80+
}
81+
7882
func (u *CacheOnReadFs) Chtimes(name string, atime, mtime time.Time) error {
7983
st, _, err := u.cacheStatus(name)
8084
if err != nil {
@@ -212,7 +216,7 @@ func (u *CacheOnReadFs) OpenFile(name string, flag int, perm os.FileMode) (File,
212216
switch st {
213217
case cacheLocal, cacheHit:
214218
default:
215-
if err := u.copyToLayer(name); err != nil {
219+
if err := u.copyFileToLayer(name, flag, perm); err != nil {
216220
return nil, err
217221
}
218222
}

Diff for: unionFile.go

+21-7
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,7 @@ func (f *UnionFile) WriteString(s string) (n int, err error) {
268268
return 0, BADFD
269269
}
270270

271-
func copyToLayer(base Fs, layer Fs, name string) error {
272-
bfh, err := base.Open(name)
273-
if err != nil {
274-
return err
275-
}
276-
defer bfh.Close()
277-
271+
func copyFile(base Fs, layer Fs, name string, bfh File) error {
278272
// First make sure the directory exists
279273
exists, err := Exists(layer, filepath.Dir(name))
280274
if err != nil {
@@ -315,3 +309,23 @@ func copyToLayer(base Fs, layer Fs, name string) error {
315309
}
316310
return layer.Chtimes(name, bfi.ModTime(), bfi.ModTime())
317311
}
312+
313+
func copyToLayer(base Fs, layer Fs, name string) error {
314+
bfh, err := base.Open(name)
315+
if err != nil {
316+
return err
317+
}
318+
defer bfh.Close()
319+
320+
return copyFile(base, layer, name, bfh)
321+
}
322+
323+
func copyFileToLayer(base Fs, layer Fs, name string, flag int, perm os.FileMode) error {
324+
bfh, err := base.OpenFile(name, flag, perm)
325+
if err != nil {
326+
return err
327+
}
328+
defer bfh.Close()
329+
330+
return copyFile(base, layer, name, bfh)
331+
}

0 commit comments

Comments
 (0)