mirror of
https://github.com/libfuse/libfuse.git
synced 2024-11-23 04:04:31 +08:00
fuse_lowlevel FUSE_INIT: Simplify the max_write/bufsize logic
max_write can be limited by se->op.init() and by the buffer size, we use the minimum of these two. Required se->bufsize is then set according to the determined max_write. The current thread will have the old buffer size, though, as it already had to the allocation to handle the FUSE_INIT call (unless splice is used and ths variable and related buffer is not used at all). The given bufsize is just a hint for minimum size, allocation could be actually larger (for example to get huge pages).
This commit is contained in:
parent
ba7d362d14
commit
2aeef499b8
@ -9,6 +9,13 @@
|
||||
#include "fuse.h"
|
||||
#include "fuse_lowlevel.h"
|
||||
|
||||
#define MIN(a, b) \
|
||||
({ \
|
||||
typeof(a) _a = (a); \
|
||||
typeof(b) _b = (b); \
|
||||
_a < _b ? _a : _b; \
|
||||
})
|
||||
|
||||
struct mount_opts;
|
||||
|
||||
struct fuse_req {
|
||||
|
@ -2146,11 +2146,8 @@ void do_init(fuse_req_t req, fuse_ino_t nodeid, const void *inarg)
|
||||
bufsize = FUSE_MIN_READ_BUFFER;
|
||||
}
|
||||
|
||||
if (se->conn.max_write > bufsize - FUSE_BUFFER_HEADER_SIZE)
|
||||
se->conn.max_write = bufsize - FUSE_BUFFER_HEADER_SIZE;
|
||||
if (se->conn.max_write < bufsize - FUSE_BUFFER_HEADER_SIZE)
|
||||
bufsize = se->conn.max_write + FUSE_BUFFER_HEADER_SIZE;
|
||||
se->bufsize = bufsize;
|
||||
se->conn.max_write = MIN(se->conn.max_write, bufsize - FUSE_BUFFER_HEADER_SIZE);
|
||||
se->bufsize = se->conn.max_write + FUSE_BUFFER_HEADER_SIZE;
|
||||
|
||||
if (arg->flags & FUSE_MAX_PAGES) {
|
||||
outarg.flags |= FUSE_MAX_PAGES;
|
||||
|
Loading…
Reference in New Issue
Block a user