| 138 | } |
| 139 | |
| 140 | int io_uring_register_files_sparse(struct io_uring *ring, unsigned nr) |
| 141 | { |
| 142 | struct io_uring_rsrc_register reg = { |
| 143 | .flags = IORING_RSRC_REGISTER_SPARSE, |
| 144 | .nr = nr, |
| 145 | }; |
| 146 | int ret, did_increase = 0; |
| 147 | |
| 148 | do { |
| 149 | ret = do_register(ring, IORING_REGISTER_FILES2, ®, sizeof(reg)); |
| 150 | if (ret >= 0) |
| 151 | break; |
| 152 | if (ret == -EMFILE && !did_increase) { |
| 153 | did_increase = 1; |
| 154 | increase_rlimit_nofile(nr); |
| 155 | continue; |
| 156 | } |
| 157 | break; |
| 158 | } while (1); |
| 159 | |
| 160 | return ret; |
| 161 | } |
| 162 | |
| 163 | int io_uring_register_files_tags(struct io_uring *ring, const int *files, |
| 164 | const __u64 *tags, unsigned nr) |