Lines Matching refs:map

373 				struct ext4_map_blocks *map)  in __check_block_validity()  argument
375 if (!ext4_data_block_valid(EXT4_SB(inode->i_sb), map->m_pblk, in __check_block_validity()
376 map->m_len)) { in __check_block_validity()
377 ext4_error_inode(inode, func, line, map->m_pblk, in __check_block_validity()
379 "(length %d)", (unsigned long) map->m_lblk, in __check_block_validity()
380 map->m_len); in __check_block_validity()
386 #define check_block_validity(inode, map) \ argument
387 __check_block_validity((inode), __func__, __LINE__, (map))
393 struct ext4_map_blocks *map, in ext4_map_blocks_es_recheck() argument
398 map->m_flags = 0; in ext4_map_blocks_es_recheck()
409 retval = ext4_ext_map_blocks(handle, inode, map, flags & in ext4_map_blocks_es_recheck()
412 retval = ext4_ind_map_blocks(handle, inode, map, flags & in ext4_map_blocks_es_recheck()
422 if (es_map->m_lblk != map->m_lblk || in ext4_map_blocks_es_recheck()
423 es_map->m_flags != map->m_flags || in ext4_map_blocks_es_recheck()
424 es_map->m_pblk != map->m_pblk) { in ext4_map_blocks_es_recheck()
429 es_map->m_pblk, es_map->m_flags, map->m_lblk, in ext4_map_blocks_es_recheck()
430 map->m_len, map->m_pblk, map->m_flags, in ext4_map_blocks_es_recheck()
459 struct ext4_map_blocks *map, int flags) in ext4_map_blocks() argument
467 memcpy(&orig_map, map, sizeof(*map)); in ext4_map_blocks()
470 map->m_flags = 0; in ext4_map_blocks()
472 "logical block %lu\n", inode->i_ino, flags, map->m_len, in ext4_map_blocks()
473 (unsigned long) map->m_lblk); in ext4_map_blocks()
478 if (unlikely(map->m_len > INT_MAX)) in ext4_map_blocks()
479 map->m_len = INT_MAX; in ext4_map_blocks()
482 if (unlikely(map->m_lblk >= EXT_MAX_BLOCKS)) in ext4_map_blocks()
486 if (ext4_es_lookup_extent(inode, map->m_lblk, &es)) { in ext4_map_blocks()
488 map->m_pblk = ext4_es_pblock(&es) + in ext4_map_blocks()
489 map->m_lblk - es.es_lblk; in ext4_map_blocks()
490 map->m_flags |= ext4_es_is_written(&es) ? in ext4_map_blocks()
492 retval = es.es_len - (map->m_lblk - es.es_lblk); in ext4_map_blocks()
493 if (retval > map->m_len) in ext4_map_blocks()
494 retval = map->m_len; in ext4_map_blocks()
495 map->m_len = retval; in ext4_map_blocks()
502 ext4_map_blocks_es_recheck(handle, inode, map, in ext4_map_blocks()
515 retval = ext4_ext_map_blocks(handle, inode, map, flags & in ext4_map_blocks()
518 retval = ext4_ind_map_blocks(handle, inode, map, flags & in ext4_map_blocks()
524 if (unlikely(retval != map->m_len)) { in ext4_map_blocks()
528 inode->i_ino, retval, map->m_len); in ext4_map_blocks()
532 status = map->m_flags & EXT4_MAP_UNWRITTEN ? in ext4_map_blocks()
536 ext4_find_delalloc_range(inode, map->m_lblk, in ext4_map_blocks()
537 map->m_lblk + map->m_len - 1)) in ext4_map_blocks()
539 ret = ext4_es_insert_extent(inode, map->m_lblk, in ext4_map_blocks()
540 map->m_len, map->m_pblk, status); in ext4_map_blocks()
548 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { in ext4_map_blocks()
549 ret = check_block_validity(inode, map); in ext4_map_blocks()
565 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) in ext4_map_blocks()
578 map->m_flags &= ~EXT4_MAP_FLAGS; in ext4_map_blocks()
593 retval = ext4_ext_map_blocks(handle, inode, map, flags); in ext4_map_blocks()
595 retval = ext4_ind_map_blocks(handle, inode, map, flags); in ext4_map_blocks()
597 if (retval > 0 && map->m_flags & EXT4_MAP_NEW) { in ext4_map_blocks()
620 if (unlikely(retval != map->m_len)) { in ext4_map_blocks()
624 inode->i_ino, retval, map->m_len); in ext4_map_blocks()
633 ext4_es_lookup_extent(inode, map->m_lblk, &es)) { in ext4_map_blocks()
637 status = map->m_flags & EXT4_MAP_UNWRITTEN ? in ext4_map_blocks()
641 ext4_find_delalloc_range(inode, map->m_lblk, in ext4_map_blocks()
642 map->m_lblk + map->m_len - 1)) in ext4_map_blocks()
644 ret = ext4_es_insert_extent(inode, map->m_lblk, map->m_len, in ext4_map_blocks()
645 map->m_pblk, status); in ext4_map_blocks()
652 if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { in ext4_map_blocks()
653 ret = check_block_validity(inode, map); in ext4_map_blocks()
695 struct ext4_map_blocks map; in _ext4_get_block() local
702 map.m_lblk = iblock; in _ext4_get_block()
703 map.m_len = bh->b_size >> inode->i_blkbits; in _ext4_get_block()
707 if (map.m_len > DIO_MAX_BLOCKS) in _ext4_get_block()
708 map.m_len = DIO_MAX_BLOCKS; in _ext4_get_block()
709 dio_credits = ext4_chunk_trans_blocks(inode, map.m_len); in _ext4_get_block()
719 ret = ext4_map_blocks(handle, inode, &map, flags); in _ext4_get_block()
723 map_bh(bh, inode->i_sb, map.m_pblk); in _ext4_get_block()
724 ext4_update_bh_state(bh, map.m_flags); in _ext4_get_block()
737 bh->b_size = inode->i_sb->s_blocksize * map.m_len; in _ext4_get_block()
758 struct ext4_map_blocks map; in ext4_getblk() local
765 map.m_lblk = block; in ext4_getblk()
766 map.m_len = 1; in ext4_getblk()
767 err = ext4_map_blocks(handle, inode, &map, map_flags); in ext4_getblk()
774 bh = sb_getblk(inode->i_sb, map.m_pblk); in ext4_getblk()
777 if (map.m_flags & EXT4_MAP_NEW) { in ext4_getblk()
1457 struct ext4_map_blocks map; member
1539 struct ext4_map_blocks *map, in ext4_da_map_blocks() argument
1548 memcpy(&orig_map, map, sizeof(*map)); in ext4_da_map_blocks()
1554 map->m_flags = 0; in ext4_da_map_blocks()
1556 "logical block %lu\n", inode->i_ino, map->m_len, in ext4_da_map_blocks()
1557 (unsigned long) map->m_lblk); in ext4_da_map_blocks()
1578 map->m_pblk = ext4_es_pblock(&es) + iblock - es.es_lblk; in ext4_da_map_blocks()
1580 if (retval > map->m_len) in ext4_da_map_blocks()
1581 retval = map->m_len; in ext4_da_map_blocks()
1582 map->m_len = retval; in ext4_da_map_blocks()
1584 map->m_flags |= EXT4_MAP_MAPPED; in ext4_da_map_blocks()
1586 map->m_flags |= EXT4_MAP_UNWRITTEN; in ext4_da_map_blocks()
1591 ext4_map_blocks_es_recheck(NULL, inode, map, &orig_map, 0); in ext4_da_map_blocks()
1604 retval = ext4_ext_map_blocks(NULL, inode, map, 0); in ext4_da_map_blocks()
1606 retval = ext4_ind_map_blocks(NULL, inode, map, 0); in ext4_da_map_blocks()
1621 !ext4_find_delalloc_cluster(inode, map->m_lblk)) { in ext4_da_map_blocks()
1630 ret = ext4_es_insert_extent(inode, map->m_lblk, map->m_len, in ext4_da_map_blocks()
1644 if (unlikely(retval != map->m_len)) { in ext4_da_map_blocks()
1648 inode->i_ino, retval, map->m_len); in ext4_da_map_blocks()
1652 status = map->m_flags & EXT4_MAP_UNWRITTEN ? in ext4_da_map_blocks()
1654 ret = ext4_es_insert_extent(inode, map->m_lblk, map->m_len, in ext4_da_map_blocks()
1655 map->m_pblk, status); in ext4_da_map_blocks()
1681 struct ext4_map_blocks map; in ext4_da_get_block_prep() local
1687 map.m_lblk = iblock; in ext4_da_get_block_prep()
1688 map.m_len = 1; in ext4_da_get_block_prep()
1695 ret = ext4_da_map_blocks(inode, iblock, &map, bh); in ext4_da_get_block_prep()
1699 map_bh(bh, inode->i_sb, map.m_pblk); in ext4_da_get_block_prep()
1700 ext4_update_bh_state(bh, map.m_flags); in ext4_da_get_block_prep()
1974 struct ext4_map_blocks *map = &mpd->map; in mpage_add_bh_to_extent() local
1980 if (map->m_len == 0) in mpage_add_bh_to_extent()
1986 if (map->m_len == 0) { in mpage_add_bh_to_extent()
1987 map->m_lblk = lblk; in mpage_add_bh_to_extent()
1988 map->m_len = 1; in mpage_add_bh_to_extent()
1989 map->m_flags = bh->b_state & BH_FLAGS; in mpage_add_bh_to_extent()
1994 if (map->m_len >= MAX_WRITEPAGES_EXTENT_LEN) in mpage_add_bh_to_extent()
1998 if (lblk == map->m_lblk + map->m_len && in mpage_add_bh_to_extent()
1999 (bh->b_state & BH_FLAGS) == map->m_flags) { in mpage_add_bh_to_extent()
2000 map->m_len++; in mpage_add_bh_to_extent()
2037 if (mpd->map.m_len) in mpage_process_page_bufs()
2044 if (mpd->map.m_len == 0) { in mpage_process_page_bufs()
2078 start = mpd->map.m_lblk >> bpp_bits; in mpage_map_and_submit_buffers()
2079 end = (mpd->map.m_lblk + mpd->map.m_len - 1) >> bpp_bits; in mpage_map_and_submit_buffers()
2081 pblock = mpd->map.m_pblk; in mpage_map_and_submit_buffers()
2098 if (lblk < mpd->map.m_lblk) in mpage_map_and_submit_buffers()
2100 if (lblk >= mpd->map.m_lblk + mpd->map.m_len) { in mpage_map_and_submit_buffers()
2105 mpd->map.m_len = 0; in mpage_map_and_submit_buffers()
2106 mpd->map.m_flags = 0; in mpage_map_and_submit_buffers()
2145 mpd->map.m_len = 0; in mpage_map_and_submit_buffers()
2146 mpd->map.m_flags = 0; in mpage_map_and_submit_buffers()
2153 struct ext4_map_blocks *map = &mpd->map; in mpage_map_one_extent() local
2157 trace_ext4_da_write_pages_extent(inode, map); in mpage_map_one_extent()
2178 if (map->m_flags & (1 << BH_Delay)) in mpage_map_one_extent()
2181 err = ext4_map_blocks(handle, inode, map, get_blocks_flags); in mpage_map_one_extent()
2184 if (dioread_nolock && (map->m_flags & EXT4_MAP_UNWRITTEN)) { in mpage_map_one_extent()
2193 BUG_ON(map->m_len == 0); in mpage_map_one_extent()
2194 if (map->m_flags & EXT4_MAP_NEW) { in mpage_map_one_extent()
2198 for (i = 0; i < map->m_len; i++) in mpage_map_one_extent()
2199 unmap_underlying_metadata(bdev, map->m_pblk + i); in mpage_map_one_extent()
2229 struct ext4_map_blocks *map = &mpd->map; in mpage_map_and_submit_extent() local
2235 ((loff_t)map->m_lblk) << inode->i_blkbits; in mpage_map_and_submit_extent()
2259 (unsigned long long)map->m_lblk, in mpage_map_and_submit_extent()
2260 (unsigned)map->m_len, -err); in mpage_map_and_submit_extent()
2278 } while (map->m_len); in mpage_map_and_submit_extent()
2361 mpd->map.m_len = 0; in mpage_prepare_extent_to_map()
2394 if (mpd->map.m_len > 0 && mpd->next_page != page->index) in mpage_prepare_extent_to_map()
2416 if (mpd->map.m_len == 0) in mpage_prepare_extent_to_map()
2579 if (mpd.map.m_len) in ext4_writepages()