From: Yanhu Cao Date: Tue, 23 Mar 2021 03:29:33 +0000 (+0800) Subject: client: rebuild bl to avoid too many vector(> IOV_MAX) X-Git-Tag: v16.2.2~8^2~4^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f55b707f090eaa82aaa9813ec3fa71dd6422cb71;p=ceph.git client: rebuild bl to avoid too many vector(> IOV_MAX) Fixes: https://tracker.ceph.com/issues/49936 Signed-off-by: Yanhu Cao (cherry picked from commit 463dda7251aec1528f5796ea47956fba6e80fae1) --- diff --git a/src/client/fuse_ll.cc b/src/client/fuse_ll.cc index f88fdee3c558..d49c1fbeb848 100644 --- a/src/client/fuse_ll.cc +++ b/src/client/fuse_ll.cc @@ -673,6 +673,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);