> - err = bio_add_page(bio, page, PAGE_SIZE, 0); > - if (err != PAGE_SIZE) { > + if (bio_add_page(bio, page, PAGE_SIZE, 0) != PAGE_SIZE) { > err = -EFAULT; > goto err_out; > } This patch looks like an improvement. But looking at that whole area just makes me cringe. Why is there __erofs_get_meta_page with the two weird booleans instead of a single erofs_get_meta_page that gets and gfp_t for additional flags and an unsigned int for additional bio op flags. Why do need ioprio support to start with? Seeing that in a new fs look kinda odd. Do you have benchmarks that show the difference? That function then calls erofs_grab_bio, which tries to handle a bio_alloc failure, except that the function will not actually fail due the mempool backing it. It also seems like and awfully huge function to inline. Why is there __submit_bio which really just obsfucates what is going on? Also why is __submit_bio using bio_set_op_attrs instead of opencode it as the comment right next to it asks you to? Also I really don't understand why you can't just use read_cache_page or even read_cache_page_gfp instead of __erofs_get_meta_page. That function is a whole lot of duplication of functionality shared by a lot of other file systems. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel