Upgrade versions of vendored libs
This commit is contained in:
25
vendor/github.com/cockroachdb/pebble/vfs/disk_full.go
generated
vendored
25
vendor/github.com/cockroachdb/pebble/vfs/disk_full.go
generated
vendored
@@ -228,6 +228,17 @@ func (fs *enospcFS) Open(name string, opts ...OpenOption) (File, error) {
|
||||
return f, err
|
||||
}
|
||||
|
||||
func (fs *enospcFS) OpenReadWrite(name string, opts ...OpenOption) (File, error) {
|
||||
f, err := fs.inner.OpenReadWrite(name, opts...)
|
||||
if f != nil {
|
||||
f = &enospcFile{
|
||||
fs: fs,
|
||||
inner: f,
|
||||
}
|
||||
}
|
||||
return f, err
|
||||
}
|
||||
|
||||
func (fs *enospcFS) OpenDir(name string) (File, error) {
|
||||
f, err := fs.inner.OpenDir(name)
|
||||
if f != nil {
|
||||
@@ -375,6 +386,20 @@ func (f *enospcFile) Write(p []byte) (n int, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (f *enospcFile) WriteAt(p []byte, ofs int64) (n int, err error) {
|
||||
gen := f.fs.waitUntilReady()
|
||||
|
||||
n, err = f.inner.WriteAt(p, ofs)
|
||||
|
||||
if err != nil && isENOSPC(err) {
|
||||
f.fs.handleENOSPC(gen)
|
||||
var n2 int
|
||||
n2, err = f.inner.WriteAt(p[n:], ofs+int64(n))
|
||||
n += n2
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (f *enospcFile) Prefetch(offset, length int64) error {
|
||||
return f.inner.Prefetch(offset, length)
|
||||
}
|
||||
|
||||
13
vendor/github.com/cockroachdb/pebble/vfs/disk_health.go
generated
vendored
13
vendor/github.com/cockroachdb/pebble/vfs/disk_health.go
generated
vendored
@@ -219,6 +219,14 @@ func (d *diskHealthCheckingFile) Write(p []byte) (n int, err error) {
|
||||
return n, err
|
||||
}
|
||||
|
||||
// Write implements the io.WriterAt interface.
|
||||
func (d *diskHealthCheckingFile) WriteAt(p []byte, ofs int64) (n int, err error) {
|
||||
d.timeDiskOp(OpTypeWrite, int64(len(p)), func() {
|
||||
n, err = d.file.WriteAt(p, ofs)
|
||||
})
|
||||
return n, err
|
||||
}
|
||||
|
||||
// Close implements the io.Closer interface.
|
||||
func (d *diskHealthCheckingFile) Close() error {
|
||||
d.stopTicker()
|
||||
@@ -680,6 +688,11 @@ func (d *diskHealthCheckingFS) Open(name string, opts ...OpenOption) (File, erro
|
||||
return d.fs.Open(name, opts...)
|
||||
}
|
||||
|
||||
// OpenReadWrite implements the FS interface.
|
||||
func (d *diskHealthCheckingFS) OpenReadWrite(name string, opts ...OpenOption) (File, error) {
|
||||
return d.fs.Open(name, opts...)
|
||||
}
|
||||
|
||||
// OpenDir implements the FS interface.
|
||||
func (d *diskHealthCheckingFS) OpenDir(name string) (File, error) {
|
||||
f, err := d.fs.OpenDir(name)
|
||||
|
||||
14
vendor/github.com/cockroachdb/pebble/vfs/logging_fs.go
generated
vendored
14
vendor/github.com/cockroachdb/pebble/vfs/logging_fs.go
generated
vendored
@@ -46,6 +46,15 @@ func (fs *loggingFS) Open(name string, opts ...OpenOption) (File, error) {
|
||||
return newLoggingFile(f, name, fs.logFn), nil
|
||||
}
|
||||
|
||||
func (fs *loggingFS) OpenReadWrite(name string, opts ...OpenOption) (File, error) {
|
||||
fs.logFn("open-read-write: %s", name)
|
||||
f, err := fs.FS.OpenReadWrite(name, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return newLoggingFile(f, name, fs.logFn), nil
|
||||
}
|
||||
|
||||
func (fs *loggingFS) Link(oldname, newname string) error {
|
||||
fs.logFn("link: %s -> %s", oldname, newname)
|
||||
return fs.FS.Link(oldname, newname)
|
||||
@@ -137,6 +146,11 @@ func (f *loggingFile) ReadAt(p []byte, offset int64) (int, error) {
|
||||
return f.File.ReadAt(p, offset)
|
||||
}
|
||||
|
||||
func (f *loggingFile) WriteAt(p []byte, offset int64) (int, error) {
|
||||
f.logFn("write-at(%d, %d): %s", offset, len(p), f.name)
|
||||
return f.File.WriteAt(p, offset)
|
||||
}
|
||||
|
||||
func (f *loggingFile) Prefetch(offset int64, length int64) error {
|
||||
f.logFn("prefetch(%d, %d): %s", offset, length, f.name)
|
||||
return f.File.Prefetch(offset, length)
|
||||
|
||||
47
vendor/github.com/cockroachdb/pebble/vfs/mem_fs.go
generated
vendored
47
vendor/github.com/cockroachdb/pebble/vfs/mem_fs.go
generated
vendored
@@ -208,6 +208,7 @@ func (y *MemFS) Create(fullname string) (File, error) {
|
||||
ret = &memFile{
|
||||
n: n,
|
||||
fs: y,
|
||||
read: true,
|
||||
write: true,
|
||||
}
|
||||
}
|
||||
@@ -262,7 +263,7 @@ func (y *MemFS) Link(oldname, newname string) error {
|
||||
})
|
||||
}
|
||||
|
||||
func (y *MemFS) open(fullname string) (File, error) {
|
||||
func (y *MemFS) open(fullname string, openForWrite bool) (File, error) {
|
||||
var ret *memFile
|
||||
err := y.walk(fullname, func(dir *memNode, frag string, final bool) error {
|
||||
if final {
|
||||
@@ -275,9 +276,10 @@ func (y *MemFS) open(fullname string) (File, error) {
|
||||
}
|
||||
if n := dir.children[frag]; n != nil {
|
||||
ret = &memFile{
|
||||
n: n,
|
||||
fs: y,
|
||||
read: true,
|
||||
n: n,
|
||||
fs: y,
|
||||
read: true,
|
||||
write: openForWrite,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -299,12 +301,22 @@ func (y *MemFS) open(fullname string) (File, error) {
|
||||
|
||||
// Open implements FS.Open.
|
||||
func (y *MemFS) Open(fullname string, opts ...OpenOption) (File, error) {
|
||||
return y.open(fullname)
|
||||
return y.open(fullname, false /* openForWrite */)
|
||||
}
|
||||
|
||||
// OpenReadWrite implements FS.OpenReadWrite.
|
||||
func (y *MemFS) OpenReadWrite(fullname string, opts ...OpenOption) (File, error) {
|
||||
f, err := y.open(fullname, true /* openForWrite */)
|
||||
pathErr, ok := err.(*os.PathError)
|
||||
if ok && pathErr.Err == oserror.ErrNotExist {
|
||||
return y.Create(fullname)
|
||||
}
|
||||
return f, err
|
||||
}
|
||||
|
||||
// OpenDir implements FS.OpenDir.
|
||||
func (y *MemFS) OpenDir(fullname string) (File, error) {
|
||||
return y.open(fullname)
|
||||
return y.open(fullname, false /* openForWrite */)
|
||||
}
|
||||
|
||||
// Remove implements FS.Remove.
|
||||
@@ -702,6 +714,29 @@ func (f *memFile) Write(p []byte) (int, error) {
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (f *memFile) WriteAt(p []byte, ofs int64) (int, error) {
|
||||
if !f.write {
|
||||
return 0, errors.New("pebble/vfs: file was not created for writing")
|
||||
}
|
||||
if f.n.isDir {
|
||||
return 0, errors.New("pebble/vfs: cannot write a directory")
|
||||
}
|
||||
f.n.mu.Lock()
|
||||
defer f.n.mu.Unlock()
|
||||
f.n.mu.modTime = time.Now()
|
||||
|
||||
for len(f.n.mu.data) < int(ofs)+len(p) {
|
||||
f.n.mu.data = append(f.n.mu.data, 0)
|
||||
}
|
||||
|
||||
n := copy(f.n.mu.data[int(ofs):int(ofs)+len(p)], p)
|
||||
if n != len(p) {
|
||||
panic("stuff")
|
||||
}
|
||||
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (f *memFile) Prefetch(offset int64, length int64) error { return nil }
|
||||
func (f *memFile) Preallocate(offset, length int64) error { return nil }
|
||||
|
||||
|
||||
18
vendor/github.com/cockroachdb/pebble/vfs/vfs.go
generated
vendored
18
vendor/github.com/cockroachdb/pebble/vfs/vfs.go
generated
vendored
@@ -29,6 +29,8 @@ type File interface {
|
||||
// method *is* allowed to modify the slice passed in, whether temporarily
|
||||
// or permanently. Callers of Write() need to take this into account.
|
||||
io.Writer
|
||||
// WriteAt() is only supported for files that were opened with FS.OpenReadWrite.
|
||||
io.WriterAt
|
||||
|
||||
// Preallocate optionally preallocates storage for `length` at `offset`
|
||||
// within the file. Implementations may choose to do nothing.
|
||||
@@ -99,6 +101,10 @@ type FS interface {
|
||||
// Open opens the named file for reading. openOptions provides
|
||||
Open(name string, opts ...OpenOption) (File, error)
|
||||
|
||||
// OpenReadWrite opens the named file for reading and writing. If the file
|
||||
// does not exist, it is created.
|
||||
OpenReadWrite(name string, opts ...OpenOption) (File, error)
|
||||
|
||||
// OpenDir opens the named directory for syncing.
|
||||
OpenDir(name string) (File, error)
|
||||
|
||||
@@ -232,6 +238,18 @@ func (defaultFS) Open(name string, opts ...OpenOption) (File, error) {
|
||||
return file, nil
|
||||
}
|
||||
|
||||
func (defaultFS) OpenReadWrite(name string, opts ...OpenOption) (File, error) {
|
||||
osFile, err := os.OpenFile(name, os.O_RDWR|syscall.O_CLOEXEC|os.O_CREATE, 0666)
|
||||
if err != nil {
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
file := wrapOSFile(osFile)
|
||||
for _, opt := range opts {
|
||||
opt.Apply(file)
|
||||
}
|
||||
return file, nil
|
||||
}
|
||||
|
||||
func (defaultFS) Remove(name string) error {
|
||||
return errors.WithStack(os.Remove(name))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user