Fixed maxReadahead.

geesefs-0-30-9
Aaron Jacobs 2015-07-24 16:03:24 +10:00
parent 2860526871
commit 91664cfc31
2 changed files with 20 additions and 21 deletions

View File

@ -32,6 +32,25 @@ import (
"github.com/jacobsa/fuse/internal/fuseshim"
)
// Ask the Linux kernel for larger read requests.
//
// As of 2015-03-26, the behavior in the kernel is:
//
// * (http://goo.gl/bQ1f1i, http://goo.gl/HwBrR6) Set the local variable
// ra_pages to be init_response->max_readahead divided by the page size.
//
// * (http://goo.gl/gcIsSh, http://goo.gl/LKV2vA) Set
// backing_dev_info::ra_pages to the min of that value and what was sent
// in the request's max_readahead field.
//
// * (http://goo.gl/u2SqzH) Use backing_dev_info::ra_pages when deciding
// how much to read ahead.
//
// * (http://goo.gl/JnhbdL) Don't read ahead at all if that field is zero.
//
// Reading a page at a time is a drag. Ask for a larger size.
const maxReadahead = 1 << 20
// A connection to the fuse kernel process.
type Connection struct {
debugLogger *log.Logger
@ -72,7 +91,7 @@ func newConnection(
Dev: dev,
}
err = fuseshim.InitMount(wrapped, TODO, TODO)
err = fuseshim.InitMount(wrapped, maxReadahead, TODO)
if err != nil {
err = fmt.Errorf("fuseshim.InitMount: %v", err)
return

View File

@ -129,26 +129,6 @@ func (c *MountConfig) bazilfuseOptions() (opts []fuseshim.MountOption) {
opts = append(opts, fuseshim.SetOption("noappledouble", ""))
}
// Ask the Linux kernel for larger read requests.
//
// As of 2015-03-26, the behavior in the kernel is:
//
// * (http://goo.gl/bQ1f1i, http://goo.gl/HwBrR6) Set the local variable
// ra_pages to be init_response->max_readahead divided by the page size.
//
// * (http://goo.gl/gcIsSh, http://goo.gl/LKV2vA) Set
// backing_dev_info::ra_pages to the min of that value and what was sent
// in the request's max_readahead field.
//
// * (http://goo.gl/u2SqzH) Use backing_dev_info::ra_pages when deciding
// how much to read ahead.
//
// * (http://goo.gl/JnhbdL) Don't read ahead at all if that field is zero.
//
// Reading a page at a time is a drag. Ask for a larger size.
const maxReadahead = 1 << 20
opts = append(opts, fuseshim.MaxReadahead(maxReadahead))
// Last but not least: other user-supplied options.
for k, v := range c.Options {
opts = append(opts, fuseshim.SetOption(k, v))