io_ctl 931 fs/btrfs/block-group.c WARN_ON(!IS_ERR(inode) && inode != block_group->io_ctl.inode); io_ctl 2418 fs/btrfs/block-group.c cache->io_ctl.inode = NULL; io_ctl 2420 fs/btrfs/block-group.c if (ret == 0 && cache->io_ctl.inode) { io_ctl 2573 fs/btrfs/block-group.c cache->io_ctl.inode = NULL; io_ctl 2575 fs/btrfs/block-group.c if (ret == 0 && cache->io_ctl.inode) { io_ctl 3081 fs/btrfs/block-group.c ASSERT(block_group->io_ctl.inode == NULL); io_ctl 124 fs/btrfs/block-group.h struct btrfs_io_ctl io_ctl; io_ctl 4466 fs/btrfs/disk-io.c inode = cache->io_ctl.inode; io_ctl 4470 fs/btrfs/disk-io.c cache->io_ctl.inode = NULL; io_ctl 40 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 300 fs/btrfs/free-space-cache.c static int io_ctl_init(struct btrfs_io_ctl *io_ctl, struct inode *inode, io_ctl 316 fs/btrfs/free-space-cache.c memset(io_ctl, 0, sizeof(struct btrfs_io_ctl)); io_ctl 318 fs/btrfs/free-space-cache.c io_ctl->pages = kcalloc(num_pages, sizeof(struct page *), GFP_NOFS); io_ctl 319 fs/btrfs/free-space-cache.c if (!io_ctl->pages) io_ctl 322 fs/btrfs/free-space-cache.c io_ctl->num_pages = num_pages; io_ctl 323 fs/btrfs/free-space-cache.c io_ctl->fs_info = btrfs_sb(inode->i_sb); io_ctl 324 fs/btrfs/free-space-cache.c io_ctl->check_crcs = check_crcs; io_ctl 325 fs/btrfs/free-space-cache.c io_ctl->inode = inode; io_ctl 331 fs/btrfs/free-space-cache.c static void io_ctl_free(struct btrfs_io_ctl *io_ctl) io_ctl 333 fs/btrfs/free-space-cache.c kfree(io_ctl->pages); io_ctl 334 fs/btrfs/free-space-cache.c io_ctl->pages = NULL; io_ctl 337 fs/btrfs/free-space-cache.c static void io_ctl_unmap_page(struct btrfs_io_ctl *io_ctl) io_ctl 339 fs/btrfs/free-space-cache.c if (io_ctl->cur) { io_ctl 340 fs/btrfs/free-space-cache.c io_ctl->cur = NULL; io_ctl 341 fs/btrfs/free-space-cache.c io_ctl->orig = NULL; io_ctl 345 fs/btrfs/free-space-cache.c static void io_ctl_map_page(struct btrfs_io_ctl *io_ctl, int clear) io_ctl 347 fs/btrfs/free-space-cache.c ASSERT(io_ctl->index < io_ctl->num_pages); io_ctl 348 fs/btrfs/free-space-cache.c io_ctl->page = io_ctl->pages[io_ctl->index++]; io_ctl 349 fs/btrfs/free-space-cache.c io_ctl->cur = page_address(io_ctl->page); io_ctl 350 fs/btrfs/free-space-cache.c io_ctl->orig = io_ctl->cur; io_ctl 351 fs/btrfs/free-space-cache.c io_ctl->size = PAGE_SIZE; io_ctl 353 fs/btrfs/free-space-cache.c clear_page(io_ctl->cur); io_ctl 356 fs/btrfs/free-space-cache.c static void io_ctl_drop_pages(struct btrfs_io_ctl *io_ctl) io_ctl 360 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 362 fs/btrfs/free-space-cache.c for (i = 0; i < io_ctl->num_pages; i++) { io_ctl 363 fs/btrfs/free-space-cache.c if (io_ctl->pages[i]) { io_ctl 364 fs/btrfs/free-space-cache.c ClearPageChecked(io_ctl->pages[i]); io_ctl 365 fs/btrfs/free-space-cache.c unlock_page(io_ctl->pages[i]); io_ctl 366 fs/btrfs/free-space-cache.c put_page(io_ctl->pages[i]); io_ctl 371 fs/btrfs/free-space-cache.c static int io_ctl_prepare_pages(struct btrfs_io_ctl *io_ctl, struct inode *inode, io_ctl 378 fs/btrfs/free-space-cache.c for (i = 0; i < io_ctl->num_pages; i++) { io_ctl 381 fs/btrfs/free-space-cache.c io_ctl_drop_pages(io_ctl); io_ctl 384 fs/btrfs/free-space-cache.c io_ctl->pages[i] = page; io_ctl 391 fs/btrfs/free-space-cache.c io_ctl_drop_pages(io_ctl); io_ctl 397 fs/btrfs/free-space-cache.c io_ctl_drop_pages(io_ctl); io_ctl 403 fs/btrfs/free-space-cache.c for (i = 0; i < io_ctl->num_pages; i++) { io_ctl 404 fs/btrfs/free-space-cache.c clear_page_dirty_for_io(io_ctl->pages[i]); io_ctl 405 fs/btrfs/free-space-cache.c set_page_extent_mapped(io_ctl->pages[i]); io_ctl 411 fs/btrfs/free-space-cache.c static void io_ctl_set_generation(struct btrfs_io_ctl *io_ctl, u64 generation) io_ctl 415 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 1); io_ctl 421 fs/btrfs/free-space-cache.c if (io_ctl->check_crcs) { io_ctl 422 fs/btrfs/free-space-cache.c io_ctl->cur += (sizeof(u32) * io_ctl->num_pages); io_ctl 423 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(u64) + (sizeof(u32) * io_ctl->num_pages); io_ctl 425 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(u64); io_ctl 426 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(u64) * 2; io_ctl 429 fs/btrfs/free-space-cache.c val = io_ctl->cur; io_ctl 431 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(u64); io_ctl 434 fs/btrfs/free-space-cache.c static int io_ctl_check_generation(struct btrfs_io_ctl *io_ctl, u64 generation) io_ctl 442 fs/btrfs/free-space-cache.c if (io_ctl->check_crcs) { io_ctl 443 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(u32) * io_ctl->num_pages; io_ctl 444 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(u64) + io_ctl 445 fs/btrfs/free-space-cache.c (sizeof(u32) * io_ctl->num_pages); io_ctl 447 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(u64); io_ctl 448 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(u64) * 2; io_ctl 451 fs/btrfs/free-space-cache.c gen = io_ctl->cur; io_ctl 453 fs/btrfs/free-space-cache.c btrfs_err_rl(io_ctl->fs_info, io_ctl 456 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 459 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(u64); io_ctl 463 fs/btrfs/free-space-cache.c static void io_ctl_set_crc(struct btrfs_io_ctl *io_ctl, int index) io_ctl 469 fs/btrfs/free-space-cache.c if (!io_ctl->check_crcs) { io_ctl 470 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 475 fs/btrfs/free-space-cache.c offset = sizeof(u32) * io_ctl->num_pages; io_ctl 477 fs/btrfs/free-space-cache.c crc = btrfs_crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset); io_ctl 479 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 480 fs/btrfs/free-space-cache.c tmp = page_address(io_ctl->pages[0]); io_ctl 485 fs/btrfs/free-space-cache.c static int io_ctl_check_crc(struct btrfs_io_ctl *io_ctl, int index) io_ctl 491 fs/btrfs/free-space-cache.c if (!io_ctl->check_crcs) { io_ctl 492 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 0); io_ctl 497 fs/btrfs/free-space-cache.c offset = sizeof(u32) * io_ctl->num_pages; io_ctl 499 fs/btrfs/free-space-cache.c tmp = page_address(io_ctl->pages[0]); io_ctl 503 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 0); io_ctl 504 fs/btrfs/free-space-cache.c crc = btrfs_crc32c(crc, io_ctl->orig + offset, PAGE_SIZE - offset); io_ctl 507 fs/btrfs/free-space-cache.c btrfs_err_rl(io_ctl->fs_info, io_ctl 509 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 516 fs/btrfs/free-space-cache.c static int io_ctl_add_entry(struct btrfs_io_ctl *io_ctl, u64 offset, u64 bytes, io_ctl 521 fs/btrfs/free-space-cache.c if (!io_ctl->cur) io_ctl 524 fs/btrfs/free-space-cache.c entry = io_ctl->cur; io_ctl 529 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(struct btrfs_free_space_entry); io_ctl 530 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(struct btrfs_free_space_entry); io_ctl 532 fs/btrfs/free-space-cache.c if (io_ctl->size >= sizeof(struct btrfs_free_space_entry)) io_ctl 535 fs/btrfs/free-space-cache.c io_ctl_set_crc(io_ctl, io_ctl->index - 1); io_ctl 538 fs/btrfs/free-space-cache.c if (io_ctl->index >= io_ctl->num_pages) io_ctl 542 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 1); io_ctl 546 fs/btrfs/free-space-cache.c static int io_ctl_add_bitmap(struct btrfs_io_ctl *io_ctl, void *bitmap) io_ctl 548 fs/btrfs/free-space-cache.c if (!io_ctl->cur) io_ctl 555 fs/btrfs/free-space-cache.c if (io_ctl->cur != io_ctl->orig) { io_ctl 556 fs/btrfs/free-space-cache.c io_ctl_set_crc(io_ctl, io_ctl->index - 1); io_ctl 557 fs/btrfs/free-space-cache.c if (io_ctl->index >= io_ctl->num_pages) io_ctl 559 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 0); io_ctl 562 fs/btrfs/free-space-cache.c copy_page(io_ctl->cur, bitmap); io_ctl 563 fs/btrfs/free-space-cache.c io_ctl_set_crc(io_ctl, io_ctl->index - 1); io_ctl 564 fs/btrfs/free-space-cache.c if (io_ctl->index < io_ctl->num_pages) io_ctl 565 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 0); io_ctl 569 fs/btrfs/free-space-cache.c static void io_ctl_zero_remaining_pages(struct btrfs_io_ctl *io_ctl) io_ctl 575 fs/btrfs/free-space-cache.c if (io_ctl->cur != io_ctl->orig) io_ctl 576 fs/btrfs/free-space-cache.c io_ctl_set_crc(io_ctl, io_ctl->index - 1); io_ctl 578 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 580 fs/btrfs/free-space-cache.c while (io_ctl->index < io_ctl->num_pages) { io_ctl 581 fs/btrfs/free-space-cache.c io_ctl_map_page(io_ctl, 1); io_ctl 582 fs/btrfs/free-space-cache.c io_ctl_set_crc(io_ctl, io_ctl->index - 1); io_ctl 586 fs/btrfs/free-space-cache.c static int io_ctl_read_entry(struct btrfs_io_ctl *io_ctl, io_ctl 592 fs/btrfs/free-space-cache.c if (!io_ctl->cur) { io_ctl 593 fs/btrfs/free-space-cache.c ret = io_ctl_check_crc(io_ctl, io_ctl->index); io_ctl 598 fs/btrfs/free-space-cache.c e = io_ctl->cur; io_ctl 602 fs/btrfs/free-space-cache.c io_ctl->cur += sizeof(struct btrfs_free_space_entry); io_ctl 603 fs/btrfs/free-space-cache.c io_ctl->size -= sizeof(struct btrfs_free_space_entry); io_ctl 605 fs/btrfs/free-space-cache.c if (io_ctl->size >= sizeof(struct btrfs_free_space_entry)) io_ctl 608 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 613 fs/btrfs/free-space-cache.c static int io_ctl_read_bitmap(struct btrfs_io_ctl *io_ctl, io_ctl 618 fs/btrfs/free-space-cache.c ret = io_ctl_check_crc(io_ctl, io_ctl->index); io_ctl 622 fs/btrfs/free-space-cache.c copy_page(entry->bitmap, io_ctl->cur); io_ctl 623 fs/btrfs/free-space-cache.c io_ctl_unmap_page(io_ctl); io_ctl 673 fs/btrfs/free-space-cache.c struct btrfs_io_ctl io_ctl; io_ctl 726 fs/btrfs/free-space-cache.c ret = io_ctl_init(&io_ctl, inode, 0); io_ctl 732 fs/btrfs/free-space-cache.c ret = io_ctl_prepare_pages(&io_ctl, inode, 1); io_ctl 736 fs/btrfs/free-space-cache.c ret = io_ctl_check_crc(&io_ctl, 0); io_ctl 740 fs/btrfs/free-space-cache.c ret = io_ctl_check_generation(&io_ctl, generation); io_ctl 750 fs/btrfs/free-space-cache.c ret = io_ctl_read_entry(&io_ctl, e, &type); io_ctl 798 fs/btrfs/free-space-cache.c io_ctl_unmap_page(&io_ctl); io_ctl 806 fs/btrfs/free-space-cache.c ret = io_ctl_read_bitmap(&io_ctl, e); io_ctl 811 fs/btrfs/free-space-cache.c io_ctl_drop_pages(&io_ctl); io_ctl 815 fs/btrfs/free-space-cache.c io_ctl_free(&io_ctl); io_ctl 818 fs/btrfs/free-space-cache.c io_ctl_drop_pages(&io_ctl); io_ctl 920 fs/btrfs/free-space-cache.c int write_cache_extent_entries(struct btrfs_io_ctl *io_ctl, io_ctl 953 fs/btrfs/free-space-cache.c ret = io_ctl_add_entry(io_ctl, e->offset, e->bytes, io_ctl 982 fs/btrfs/free-space-cache.c ret = io_ctl_add_entry(io_ctl, trim_entry->start, io_ctl 1051 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 1090 fs/btrfs/free-space-cache.c ret = io_ctl_add_entry(io_ctl, extent_start, len, NULL); io_ctl 1101 fs/btrfs/free-space-cache.c write_bitmap_entries(struct btrfs_io_ctl *io_ctl, struct list_head *bitmap_list) io_ctl 1108 fs/btrfs/free-space-cache.c ret = io_ctl_add_bitmap(io_ctl, entry->bitmap); io_ctl 1140 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 1143 fs/btrfs/free-space-cache.c io_ctl_drop_pages(io_ctl); io_ctl 1151 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 1155 fs/btrfs/free-space-cache.c struct inode *inode = io_ctl->inode; io_ctl 1167 fs/btrfs/free-space-cache.c io_ctl->entries, io_ctl->bitmaps); io_ctl 1169 fs/btrfs/free-space-cache.c io_ctl_free(io_ctl); io_ctl 1202 fs/btrfs/free-space-cache.c io_ctl->inode = NULL; io_ctl 1212 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 1215 fs/btrfs/free-space-cache.c return __btrfs_wait_cache_io(root, trans, NULL, io_ctl, path, 0); io_ctl 1223 fs/btrfs/free-space-cache.c block_group, &block_group->io_ctl, io_ctl 1241 fs/btrfs/free-space-cache.c struct btrfs_io_ctl *io_ctl, io_ctl 1254 fs/btrfs/free-space-cache.c WARN_ON(io_ctl->pages); io_ctl 1255 fs/btrfs/free-space-cache.c ret = io_ctl_init(io_ctl, inode, 1); io_ctl 1275 fs/btrfs/free-space-cache.c ret = io_ctl_prepare_pages(io_ctl, inode, 0); io_ctl 1282 fs/btrfs/free-space-cache.c io_ctl_set_generation(io_ctl, trans->transid); io_ctl 1287 fs/btrfs/free-space-cache.c ret = write_cache_extent_entries(io_ctl, ctl, io_ctl 1301 fs/btrfs/free-space-cache.c ret = write_pinned_extent_entries(block_group, io_ctl, &entries); io_ctl 1310 fs/btrfs/free-space-cache.c ret = write_bitmap_entries(io_ctl, &bitmap_list); io_ctl 1317 fs/btrfs/free-space-cache.c io_ctl_zero_remaining_pages(io_ctl); io_ctl 1320 fs/btrfs/free-space-cache.c ret = btrfs_dirty_pages(inode, io_ctl->pages, io_ctl->num_pages, 0, io_ctl 1331 fs/btrfs/free-space-cache.c io_ctl_drop_pages(io_ctl); io_ctl 1341 fs/btrfs/free-space-cache.c io_ctl->entries = entries; io_ctl 1342 fs/btrfs/free-space-cache.c io_ctl->bitmaps = bitmaps; io_ctl 1351 fs/btrfs/free-space-cache.c io_ctl->inode = NULL; io_ctl 1352 fs/btrfs/free-space-cache.c io_ctl_free(io_ctl); io_ctl 1368 fs/btrfs/free-space-cache.c cleanup_write_cache_enospc(inode, io_ctl, &cached_state); io_ctl 1398 fs/btrfs/free-space-cache.c block_group, &block_group->io_ctl, trans); io_ctl 1409 fs/btrfs/free-space-cache.c block_group->io_ctl.inode = NULL; io_ctl 3559 fs/btrfs/free-space-cache.c struct btrfs_io_ctl io_ctl; io_ctl 3565 fs/btrfs/free-space-cache.c memset(&io_ctl, 0, sizeof(io_ctl)); io_ctl 3566 fs/btrfs/free-space-cache.c ret = __btrfs_write_out_cache(root, inode, ctl, NULL, &io_ctl, trans); io_ctl 3575 fs/btrfs/free-space-cache.c ret = btrfs_wait_cache_io_root(root, trans, &io_ctl, path);