Change dup2 call to dup3
We changed syscalls to allow dup3 for ARM64. Updates #1198 PiperOrigin-RevId: 297870816
This commit is contained in:
parent
c96bb4d2eb
commit
0f8a9e3623
|
@ -1045,13 +1045,13 @@ func (d *dentry) ensureSharedHandle(ctx context.Context, read, write, trunc bool
|
|||
// using the old file descriptor, preventing us from safely
|
||||
// closing it. We could handle this by invalidating existing
|
||||
// memmap.Translations, but this is expensive. Instead, use
|
||||
// dup2() to make the old file descriptor refer to the new file
|
||||
// dup3 to make the old file descriptor refer to the new file
|
||||
// description, then close the new file descriptor (which is no
|
||||
// longer needed). Racing callers may use the old or new file
|
||||
// description, but this doesn't matter since they refer to the
|
||||
// same file (unless d.fs.opts.overlayfsStaleRead is true,
|
||||
// which we handle separately).
|
||||
if err := syscall.Dup2(int(h.fd), int(d.handle.fd)); err != nil {
|
||||
if err := syscall.Dup3(int(h.fd), int(d.handle.fd), 0); err != nil {
|
||||
d.handleMu.Unlock()
|
||||
ctx.Warningf("gofer.dentry.ensureSharedHandle: failed to dup fd %d to fd %d: %v", h.fd, d.handle.fd, err)
|
||||
h.close(ctx)
|
||||
|
|
Loading…
Reference in New Issue