MCPcopy
hub / github.com/perkeep/perkeep / Open

Method Open

pkg/fs/rover.go:366–391  ·  view source on GitHub ↗
(ctx context.Context, req *fuse.OpenRequest, res *fuse.OpenResponse)

Source from the content-addressed store, hash-verified

364}
365
366func (n *roFileVersion) Open(ctx context.Context, req *fuse.OpenRequest, res *fuse.OpenResponse) (fs.Handle, error) {
367 roFileOpen.Incr()
368
369 if isWriteFlags(req.Flags) {
370 return nil, fuse.EPERM
371 }
372
373 Logger.Printf("roFile.Open: %v: content: %v dir=%v flags=%v", n.permanode, n.content, req.Dir, req.Flags)
374 r, err := schema.NewFileReader(ctx, n.fs.fetcher, n.content)
375 if err != nil {
376 roFileOpenError.Incr()
377 Logger.Printf("roFile.Open: %v", err)
378 return nil, handleEIOorEINTR(err)
379 }
380
381 // Turn off the OpenDirectIO bit (on by default in rsc fuse server.go),
382 // else append operations don't work for some reason.
383 res.Flags &= ^fuse.OpenDirectIO
384
385 // Read-only.
386 nod := &node{
387 fs: n.fs,
388 blobref: n.content,
389 }
390 return &nodeReader{n: nod, fr: r}, nil
391}
392
393func (n *roVersionsDir) Getxattr(ctx context.Context, req *fuse.GetxattrRequest, res *fuse.GetxattrResponse) error {
394 return n.xattr().get(req, res)

Callers

nothing calls this directly

Calls 5

NewFileReaderFunction · 0.92
isWriteFlagsFunction · 0.85
handleEIOorEINTRFunction · 0.85
PrintfMethod · 0.80
IncrMethod · 0.45

Tested by

no test coverage detected