]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: rebuild bl to avoid too many vector(> IOV_MAX) 40628/head
authorYanhu Cao <gmayyyha@gmail.com>
Tue, 23 Mar 2021 03:29:33 +0000 (11:29 +0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Tue, 6 Apr 2021 19:17:39 +0000 (12:17 -0700)
Fixes: https://tracker.ceph.com/issues/49936
Signed-off-by: Yanhu Cao <gmayyyha@gmail.com>
(cherry picked from commit 463dda7251aec1528f5796ea47956fba6e80fae1)

src/client/fuse_ll.cc

index f88fdee3c5582954d65d583d668b04d3f4406cc5..d49c1fbeb848b06d4a6f236707f400253f7a8791 100644 (file)
@@ -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);