From 463dda7251aec1528f5796ea47956fba6e80fae1 Mon Sep 17 00:00:00 2001 From: Yanhu Cao Date: Tue, 23 Mar 2021 11:29:33 +0800 Subject: [PATCH] client: rebuild bl to avoid too many vector(> IOV_MAX) Fixes: https://tracker.ceph.com/issues/49936 Signed-off-by: Yanhu Cao --- src/client/fuse_ll.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/client/fuse_ll.cc b/src/client/fuse_ll.cc index 68c2900f3e4..c2141a00d7d 100644 --- a/src/client/fuse_ll.cc +++ b/src/client/fuse_ll.cc @@ -679,6 +679,9 @@ static void fuse_ll_read(fuse_req_t req, fuse_ino_t ino, size_t size, off_t off, size_t len; struct fuse_bufvec *bufv; + if (bl.get_num_buffers() > IOV_MAX) + bl.rebuild(); + bl.prepare_iov(&iov); len = sizeof(struct fuse_bufvec) + sizeof(struct fuse_buf) * (iov.size() - 1); bufv = (struct fuse_bufvec *)calloc(1, len); -- 2.39.5