Messages in this thread | | | Date | Fri, 28 Jul 2023 07:05:06 +0200 | Subject | Re: [PATCH] fuse: enable larger read buffers for readdir [v2]. | From | Jaco Kroon <> |
| |
Hi, >>> plus = fuse_use_readdirplus(inode, ctx); >>> ap->args.out_pages = true; >>> - ap->num_pages = 1; >>> + ap->num_pages = READDIR_PAGES; >> >> No. This is the array lenght, which is 1. This is the hack I guess, >> which makes the above trick work. > > Hmm, ap->num_pages / ap->pages[] is used in fuse_copy_pages, but so is > ap->descs[] - shouldn't the patch caused an out-of-bound access? > Out of interest, would you mind to explain how the hack worked?
Apparently it shouldn't ... my understanding of how pages* worked was all wrong.
I'm guessing since all the data fits in the first page (ap->pages[0] in other words, of length/size desc.length) that the other pages are never accessed. Looking at fuse_copy_pages this does indeed seem to be the case. So I ended up just being really, really lucky here.
Kind regards, Jaco
| |