mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
Add plumbing for file locks in VFS2.
Updates #1480 PiperOrigin-RevId: 292180192
This commit is contained in:
@@ -44,6 +44,7 @@ go_library(
|
||||
"//pkg/context",
|
||||
"//pkg/fspath",
|
||||
"//pkg/sentry/arch",
|
||||
"//pkg/sentry/fs/lock",
|
||||
"//pkg/sentry/kernel/auth",
|
||||
"//pkg/sentry/memmap",
|
||||
"//pkg/sync",
|
||||
|
||||
@@ -20,6 +20,7 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/abi/linux"
|
||||
"gvisor.dev/gvisor/pkg/context"
|
||||
"gvisor.dev/gvisor/pkg/sentry/arch"
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs/lock"
|
||||
"gvisor.dev/gvisor/pkg/sentry/kernel/auth"
|
||||
"gvisor.dev/gvisor/pkg/sentry/memmap"
|
||||
"gvisor.dev/gvisor/pkg/sync"
|
||||
@@ -393,7 +394,25 @@ type FileDescriptionImpl interface {
|
||||
// Removexattr removes the given extended attribute from the file.
|
||||
Removexattr(ctx context.Context, name string) error
|
||||
|
||||
// TODO: file locking
|
||||
// LockBSD tries to acquire a BSD-style advisory file lock.
|
||||
//
|
||||
// TODO(gvisor.dev/issue/1480): BSD-style file locking
|
||||
LockBSD(ctx context.Context, uid lock.UniqueID, t lock.LockType, block lock.Blocker) error
|
||||
|
||||
// LockBSD releases a BSD-style advisory file lock.
|
||||
//
|
||||
// TODO(gvisor.dev/issue/1480): BSD-style file locking
|
||||
UnlockBSD(ctx context.Context, uid lock.UniqueID) error
|
||||
|
||||
// LockPOSIX tries to acquire a POSIX-style advisory file lock.
|
||||
//
|
||||
// TODO(gvisor.dev/issue/1480): POSIX-style file locking
|
||||
LockPOSIX(ctx context.Context, uid lock.UniqueID, t lock.LockType, rng lock.LockRange, block lock.Blocker) error
|
||||
|
||||
// UnlockPOSIX releases a POSIX-style advisory file lock.
|
||||
//
|
||||
// TODO(gvisor.dev/issue/1480): POSIX-style file locking
|
||||
UnlockPOSIX(ctx context.Context, uid lock.UniqueID, rng lock.LockRange) error
|
||||
}
|
||||
|
||||
// Dirent holds the information contained in struct linux_dirent64.
|
||||
|
||||
@@ -21,6 +21,7 @@ import (
|
||||
"gvisor.dev/gvisor/pkg/abi/linux"
|
||||
"gvisor.dev/gvisor/pkg/context"
|
||||
"gvisor.dev/gvisor/pkg/sentry/arch"
|
||||
"gvisor.dev/gvisor/pkg/sentry/fs/lock"
|
||||
"gvisor.dev/gvisor/pkg/sentry/memmap"
|
||||
"gvisor.dev/gvisor/pkg/sync"
|
||||
"gvisor.dev/gvisor/pkg/syserror"
|
||||
@@ -152,6 +153,26 @@ func (FileDescriptionDefaultImpl) Removexattr(ctx context.Context, name string)
|
||||
return syserror.ENOTSUP
|
||||
}
|
||||
|
||||
// LockBSD implements FileDescriptionImpl.LockBSD.
|
||||
func (FileDescriptionDefaultImpl) LockBSD(ctx context.Context, uid lock.UniqueID, t lock.LockType, block lock.Blocker) error {
|
||||
return syserror.EBADF
|
||||
}
|
||||
|
||||
// UnlockBSD implements FileDescriptionImpl.UnlockBSD.
|
||||
func (FileDescriptionDefaultImpl) UnlockBSD(ctx context.Context, uid lock.UniqueID) error {
|
||||
return syserror.EBADF
|
||||
}
|
||||
|
||||
// LockPOSIX implements FileDescriptionImpl.LockPOSIX.
|
||||
func (FileDescriptionDefaultImpl) LockPOSIX(ctx context.Context, uid lock.UniqueID, t lock.LockType, rng lock.LockRange, block lock.Blocker) error {
|
||||
return syserror.EBADF
|
||||
}
|
||||
|
||||
// UnlockPOSIX implements FileDescriptionImpl.UnlockPOSIX.
|
||||
func (FileDescriptionDefaultImpl) UnlockPOSIX(ctx context.Context, uid lock.UniqueID, rng lock.LockRange) error {
|
||||
return syserror.EBADF
|
||||
}
|
||||
|
||||
// DirectoryFileDescriptionDefaultImpl may be embedded by implementations of
|
||||
// FileDescriptionImpl that always represent directories to obtain
|
||||
// implementations of non-directory I/O methods that return EISDIR.
|
||||
|
||||
Reference in New Issue
Block a user