| 580 | } |
| 581 | |
| 582 | static int test_skip(struct io_uring *ring) |
| 583 | { |
| 584 | int *files; |
| 585 | int ret; |
| 586 | |
| 587 | files = open_files(100, 0, 0); |
| 588 | ret = io_uring_register_files(ring, files, 100); |
| 589 | if (ret) { |
| 590 | fprintf(stderr, "%s: register ret=%d\n", __FUNCTION__, ret); |
| 591 | goto err; |
| 592 | } |
| 593 | |
| 594 | files[90] = IORING_REGISTER_FILES_SKIP; |
| 595 | ret = io_uring_register_files_update(ring, 90, &files[90], 1); |
| 596 | if (ret != 1) { |
| 597 | if (ret == -EBADF) { |
| 598 | fprintf(stdout, "Skipping files not supported\n"); |
| 599 | goto done; |
| 600 | } |
| 601 | fprintf(stderr, "%s: update ret=%d\n", __FUNCTION__, ret); |
| 602 | goto err; |
| 603 | } |
| 604 | |
| 605 | /* verify can still use file index 90 */ |
| 606 | if (test_fixed_read_write(ring, 90)) |
| 607 | goto err; |
| 608 | |
| 609 | ret = io_uring_unregister_files(ring); |
| 610 | if (ret) { |
| 611 | fprintf(stderr, "%s: unregister ret=%d\n", __FUNCTION__, ret); |
| 612 | goto err; |
| 613 | } |
| 614 | |
| 615 | done: |
| 616 | close_files(files, 100, 0); |
| 617 | return 0; |
| 618 | err: |
| 619 | close_files(files, 100, 0); |
| 620 | return 1; |
| 621 | } |
| 622 | |
| 623 | static int test_sparse_updates(void) |
| 624 | { |
no test coverage detected