diff --git a/connection.go b/connection.go index 878f302..ab465bd 100644 --- a/connection.go +++ b/connection.go @@ -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 diff --git a/mount_config.go b/mount_config.go index 8081591..cf1fff8 100644 --- a/mount_config.go +++ b/mount_config.go @@ -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))