]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: rebuild bl to avoid too many vector(> IOV_MAX) 40326/head
authorYanhu Cao <gmayyyha@gmail.com>
Tue, 23 Mar 2021 03:29:33 +0000 (11:29 +0800)
committerYanhu Cao <gmayyyha@gmail.com>
Tue, 23 Mar 2021 03:29:33 +0000 (11:29 +0800)
Fixes: https://tracker.ceph.com/issues/49936
Signed-off-by: Yanhu Cao <gmayyyha@gmail.com>
src/client/fuse_ll.cc

index 68c2900f3e462f68344e2387cfc79bfcd5b2c84e..c2141a00d7d270a584c032fb2445d9c47d26cb49 100644 (file)
@@ -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);