Lines Matching refs:wc

1285 static void ocfs2_unlock_pages(struct ocfs2_write_ctxt *wc)  in ocfs2_unlock_pages()  argument
1294 if (wc->w_target_locked) { in ocfs2_unlock_pages()
1295 BUG_ON(!wc->w_target_page); in ocfs2_unlock_pages()
1296 for (i = 0; i < wc->w_num_pages; i++) { in ocfs2_unlock_pages()
1297 if (wc->w_target_page == wc->w_pages[i]) { in ocfs2_unlock_pages()
1298 wc->w_pages[i] = NULL; in ocfs2_unlock_pages()
1302 mark_page_accessed(wc->w_target_page); in ocfs2_unlock_pages()
1303 page_cache_release(wc->w_target_page); in ocfs2_unlock_pages()
1305 ocfs2_unlock_and_free_pages(wc->w_pages, wc->w_num_pages); in ocfs2_unlock_pages()
1308 static void ocfs2_free_write_ctxt(struct ocfs2_write_ctxt *wc) in ocfs2_free_write_ctxt() argument
1310 ocfs2_unlock_pages(wc); in ocfs2_free_write_ctxt()
1311 brelse(wc->w_di_bh); in ocfs2_free_write_ctxt()
1312 kfree(wc); in ocfs2_free_write_ctxt()
1320 struct ocfs2_write_ctxt *wc; in ocfs2_alloc_write_ctxt() local
1322 wc = kzalloc(sizeof(struct ocfs2_write_ctxt), GFP_NOFS); in ocfs2_alloc_write_ctxt()
1323 if (!wc) in ocfs2_alloc_write_ctxt()
1326 wc->w_cpos = pos >> osb->s_clustersize_bits; in ocfs2_alloc_write_ctxt()
1327 wc->w_first_new_cpos = UINT_MAX; in ocfs2_alloc_write_ctxt()
1329 wc->w_clen = cend - wc->w_cpos + 1; in ocfs2_alloc_write_ctxt()
1331 wc->w_di_bh = di_bh; in ocfs2_alloc_write_ctxt()
1334 wc->w_large_pages = 1; in ocfs2_alloc_write_ctxt()
1336 wc->w_large_pages = 0; in ocfs2_alloc_write_ctxt()
1338 ocfs2_init_dealloc_ctxt(&wc->w_dealloc); in ocfs2_alloc_write_ctxt()
1340 *wcp = wc; in ocfs2_alloc_write_ctxt()
1391 struct ocfs2_write_ctxt *wc, in ocfs2_write_failure() argument
1399 ocfs2_zero_new_buffers(wc->w_target_page, from, to); in ocfs2_write_failure()
1401 for(i = 0; i < wc->w_num_pages; i++) { in ocfs2_write_failure()
1402 tmppage = wc->w_pages[i]; in ocfs2_write_failure()
1406 ocfs2_jbd2_file_inode(wc->w_handle, inode); in ocfs2_write_failure()
1414 struct ocfs2_write_ctxt *wc, in ocfs2_prepare_page_for_write() argument
1433 if (page == wc->w_target_page) { in ocfs2_prepare_page_for_write()
1498 struct ocfs2_write_ctxt *wc, in ocfs2_grab_pages_for_write() argument
1518 wc->w_num_pages = ocfs2_pages_per_cluster(inode->i_sb); in ocfs2_grab_pages_for_write()
1528 if ((start + wc->w_num_pages) > end_index) in ocfs2_grab_pages_for_write()
1529 wc->w_num_pages = end_index - start; in ocfs2_grab_pages_for_write()
1531 wc->w_num_pages = 1; in ocfs2_grab_pages_for_write()
1535 for(i = 0; i < wc->w_num_pages; i++) { in ocfs2_grab_pages_for_write()
1555 wc->w_pages[i] = mmap_page; in ocfs2_grab_pages_for_write()
1556 wc->w_target_locked = true; in ocfs2_grab_pages_for_write()
1558 wc->w_pages[i] = find_or_create_page(mapping, index, in ocfs2_grab_pages_for_write()
1560 if (!wc->w_pages[i]) { in ocfs2_grab_pages_for_write()
1566 wait_for_stable_page(wc->w_pages[i]); in ocfs2_grab_pages_for_write()
1569 wc->w_target_page = wc->w_pages[i]; in ocfs2_grab_pages_for_write()
1573 wc->w_target_locked = false; in ocfs2_grab_pages_for_write()
1585 struct ocfs2_write_ctxt *wc, u32 cpos, in ocfs2_write_cluster() argument
1603 &tmp_pos, 1, 0, wc->w_di_bh, in ocfs2_write_cluster()
1604 wc->w_handle, data_ac, in ocfs2_write_cluster()
1624 wc->w_di_bh); in ocfs2_write_cluster()
1626 wc->w_handle, cpos, 1, phys, in ocfs2_write_cluster()
1627 meta_ac, &wc->w_dealloc); in ocfs2_write_cluster()
1655 for(i = 0; i < wc->w_num_pages; i++) { in ocfs2_write_cluster()
1658 tmpret = ocfs2_prepare_page_for_write(inode, &p_blkno, wc, in ocfs2_write_cluster()
1659 wc->w_pages[i], cpos, in ocfs2_write_cluster()
1673 ocfs2_write_failure(inode, wc, user_pos, user_len); in ocfs2_write_cluster()
1683 struct ocfs2_write_ctxt *wc, in ocfs2_write_cluster_by_desc() argument
1692 for (i = 0; i < wc->w_clen; i++) { in ocfs2_write_cluster_by_desc()
1693 desc = &wc->w_desc[i]; in ocfs2_write_cluster_by_desc()
1708 wc, desc->c_cpos, pos, local_len); in ocfs2_write_cluster_by_desc()
1729 struct ocfs2_write_ctxt *wc, in ocfs2_set_target_boundaries() argument
1734 wc->w_target_from = pos & (PAGE_CACHE_SIZE - 1); in ocfs2_set_target_boundaries()
1735 wc->w_target_to = wc->w_target_from + len; in ocfs2_set_target_boundaries()
1749 if (wc->w_large_pages) { in ocfs2_set_target_boundaries()
1756 desc = &wc->w_desc[0]; in ocfs2_set_target_boundaries()
1760 &wc->w_target_from, in ocfs2_set_target_boundaries()
1763 desc = &wc->w_desc[wc->w_clen - 1]; in ocfs2_set_target_boundaries()
1768 &wc->w_target_to); in ocfs2_set_target_boundaries()
1770 wc->w_target_from = 0; in ocfs2_set_target_boundaries()
1771 wc->w_target_to = PAGE_CACHE_SIZE; in ocfs2_set_target_boundaries()
1784 struct ocfs2_write_ctxt *wc, in ocfs2_populate_write_desc() argument
1798 for (i = 0; i < wc->w_clen; i++) { in ocfs2_populate_write_desc()
1799 desc = &wc->w_desc[i]; in ocfs2_populate_write_desc()
1800 desc->c_cpos = wc->w_cpos + i; in ocfs2_populate_write_desc()
1841 if (desc->c_cpos >= wc->w_first_new_cpos) { in ocfs2_populate_write_desc()
1868 struct ocfs2_write_ctxt *wc) in ocfs2_write_begin_inline() argument
1874 struct ocfs2_dinode *di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; in ocfs2_write_begin_inline()
1894 wc->w_pages[0] = wc->w_target_page = page; in ocfs2_write_begin_inline()
1895 wc->w_num_pages = 1; in ocfs2_write_begin_inline()
1897 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), wc->w_di_bh, in ocfs2_write_begin_inline()
1910 ret = ocfs2_read_inline_data(inode, page, wc->w_di_bh); in ocfs2_write_begin_inline()
1918 wc->w_handle = handle; in ocfs2_write_begin_inline()
1935 struct ocfs2_write_ctxt *wc) in ocfs2_try_to_write_inline_data() argument
1951 ocfs2_size_fits_inline_data(wc->w_di_bh, end)) in ocfs2_try_to_write_inline_data()
1958 ret = ocfs2_convert_inline_data_to_extents(inode, wc->w_di_bh); in ocfs2_try_to_write_inline_data()
1973 di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; in ocfs2_try_to_write_inline_data()
1979 ret = ocfs2_write_begin_inline(mapping, inode, wc); in ocfs2_try_to_write_inline_data()
2006 struct ocfs2_write_ctxt *wc) in ocfs2_expand_nonsparse_inode() argument
2020 wc->w_first_new_cpos = in ocfs2_expand_nonsparse_inode()
2083 struct ocfs2_write_ctxt *wc; in ocfs2_write_begin_nolock() local
2094 ret = ocfs2_alloc_write_ctxt(&wc, osb, pos, len, di_bh); in ocfs2_write_begin_nolock()
2102 mmap_page, wc); in ocfs2_write_begin_nolock()
2117 wc); in ocfs2_write_begin_nolock()
2128 clusters_need = wc->w_clen; in ocfs2_write_begin_nolock()
2130 wc->w_cpos, wc->w_clen, UINT_MAX); in ocfs2_write_begin_nolock()
2137 ret = ocfs2_populate_write_desc(inode, wc, &clusters_to_alloc, in ocfs2_write_begin_nolock()
2145 di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; in ocfs2_write_begin_nolock()
2167 wc->w_di_bh); in ocfs2_write_begin_nolock()
2190 (wc->w_clen && (wc->w_desc[0].c_needs_zero || in ocfs2_write_begin_nolock()
2191 wc->w_desc[wc->w_clen - 1].c_needs_zero))) in ocfs2_write_begin_nolock()
2196 ocfs2_set_target_boundaries(osb, wc, pos, len, cluster_of_pages); in ocfs2_write_begin_nolock()
2205 wc->w_handle = handle; in ocfs2_write_begin_nolock()
2214 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), wc->w_di_bh, in ocfs2_write_begin_nolock()
2226 ret = ocfs2_grab_pages_for_write(mapping, wc, wc->w_cpos, pos, len, in ocfs2_write_begin_nolock()
2240 BUG_ON(wc->w_target_page); in ocfs2_write_begin_nolock()
2245 ret = ocfs2_write_cluster_by_desc(mapping, data_ac, meta_ac, wc, pos, in ocfs2_write_begin_nolock()
2258 *pagep = wc->w_target_page; in ocfs2_write_begin_nolock()
2259 *fsdata = wc; in ocfs2_write_begin_nolock()
2269 ocfs2_free_write_ctxt(wc); in ocfs2_write_begin_nolock()
2344 struct ocfs2_write_ctxt *wc) in ocfs2_write_end_inline() argument
2349 if (!PageUptodate(wc->w_target_page)) { in ocfs2_write_end_inline()
2355 kaddr = kmap_atomic(wc->w_target_page); in ocfs2_write_end_inline()
2374 struct ocfs2_write_ctxt *wc = fsdata; in ocfs2_write_end_nolock() local
2375 struct ocfs2_dinode *di = (struct ocfs2_dinode *)wc->w_di_bh->b_data; in ocfs2_write_end_nolock()
2376 handle_t *handle = wc->w_handle; in ocfs2_write_end_nolock()
2379 ret = ocfs2_journal_access_di(handle, INODE_CACHE(inode), wc->w_di_bh, in ocfs2_write_end_nolock()
2388 ocfs2_write_end_inline(inode, pos, len, &copied, di, wc); in ocfs2_write_end_nolock()
2393 if (!PageUptodate(wc->w_target_page)) in ocfs2_write_end_nolock()
2396 ocfs2_zero_new_buffers(wc->w_target_page, start+copied, in ocfs2_write_end_nolock()
2399 flush_dcache_page(wc->w_target_page); in ocfs2_write_end_nolock()
2401 for(i = 0; i < wc->w_num_pages; i++) { in ocfs2_write_end_nolock()
2402 tmppage = wc->w_pages[i]; in ocfs2_write_end_nolock()
2404 if (tmppage == wc->w_target_page) { in ocfs2_write_end_nolock()
2405 from = wc->w_target_from; in ocfs2_write_end_nolock()
2406 to = wc->w_target_to; in ocfs2_write_end_nolock()
2423 ocfs2_jbd2_file_inode(wc->w_handle, inode); in ocfs2_write_end_nolock()
2440 ocfs2_journal_dirty(handle, wc->w_di_bh); in ocfs2_write_end_nolock()
2448 ocfs2_unlock_pages(wc); in ocfs2_write_end_nolock()
2452 ocfs2_run_deallocs(osb, &wc->w_dealloc); in ocfs2_write_end_nolock()
2454 brelse(wc->w_di_bh); in ocfs2_write_end_nolock()
2455 kfree(wc); in ocfs2_write_end_nolock()