Lines Matching refs:folio
16 static void __netfs_set_group(struct folio *folio, struct netfs_group *netfs_group) in __netfs_set_group() argument
19 folio_attach_private(folio, netfs_get_group(netfs_group)); in __netfs_set_group()
22 static void netfs_set_group(struct folio *folio, struct netfs_group *netfs_group) in netfs_set_group() argument
24 void *priv = folio_get_private(folio); in netfs_set_group()
28 folio_attach_private(folio, netfs_get_group(netfs_group)); in netfs_set_group()
30 folio_detach_private(folio); in netfs_set_group()
38 static struct folio *netfs_grab_folio_for_write(struct address_space *mapping, in netfs_grab_folio_for_write()
121 struct folio *folio = NULL, *writethrough = NULL; in netfs_perform_write() local
179 folio = netfs_grab_folio_for_write(mapping, pos, part); in netfs_perform_write()
180 if (IS_ERR(folio)) { in netfs_perform_write()
181 ret = PTR_ERR(folio); in netfs_perform_write()
185 flen = folio_size(folio); in netfs_perform_write()
186 fpos = folio_pos(folio); in netfs_perform_write()
194 if (folio_get_private(folio) && in netfs_perform_write()
195 folio_wait_writeback_killable(folio)) { in netfs_perform_write()
212 finfo = netfs_folio_info(folio); in netfs_perform_write()
213 group = netfs_folio_group(folio); in netfs_perform_write()
219 if (folio_test_uptodate(folio)) { in netfs_perform_write()
221 flush_dcache_folio(folio); in netfs_perform_write()
222 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
225 netfs_set_group(folio, netfs_group); in netfs_perform_write()
226 trace_netfs_folio(folio, netfs_folio_is_uptodate); in netfs_perform_write()
235 folio_zero_segment(folio, 0, offset); in netfs_perform_write()
236 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
239 folio_zero_segment(folio, offset + copied, flen); in netfs_perform_write()
240 __netfs_set_group(folio, netfs_group); in netfs_perform_write()
241 folio_mark_uptodate(folio); in netfs_perform_write()
242 trace_netfs_folio(folio, netfs_modify_and_clear); in netfs_perform_write()
248 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
255 folio_unlock(folio); in netfs_perform_write()
258 __netfs_set_group(folio, netfs_group); in netfs_perform_write()
259 folio_mark_uptodate(folio); in netfs_perform_write()
260 trace_netfs_folio(folio, netfs_whole_folio_modify); in netfs_perform_write()
276 ret = netfs_prefetch_for_write(file, folio, offset, part); in netfs_perform_write()
283 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
286 netfs_set_group(folio, netfs_group); in netfs_perform_write()
287 trace_netfs_folio(folio, netfs_just_prefetch); in netfs_perform_write()
293 if (WARN_ON(folio_get_private(folio))) in netfs_perform_write()
295 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
299 __netfs_set_group(folio, netfs_group); in netfs_perform_write()
300 folio_mark_uptodate(folio); in netfs_perform_write()
301 trace_netfs_folio(folio, netfs_streaming_filled_page); in netfs_perform_write()
314 folio_attach_private(folio, (void *)((unsigned long)finfo | in netfs_perform_write()
316 trace_netfs_folio(folio, netfs_streaming_write); in netfs_perform_write()
325 copied = copy_folio_from_iter_atomic(folio, offset, part, iter); in netfs_perform_write()
331 folio_change_private(folio, finfo->netfs_group); in netfs_perform_write()
333 folio_detach_private(folio); in netfs_perform_write()
334 folio_mark_uptodate(folio); in netfs_perform_write()
336 trace_netfs_folio(folio, netfs_streaming_cont_filled_page); in netfs_perform_write()
338 trace_netfs_folio(folio, netfs_streaming_write_cont); in netfs_perform_write()
345 trace_netfs_folio(folio, netfs_flush_content); in netfs_perform_write()
346 folio_unlock(folio); in netfs_perform_write()
347 folio_put(folio); in netfs_perform_write()
354 flush_dcache_folio(folio); in netfs_perform_write()
362 folio_mark_dirty(folio); in netfs_perform_write()
363 folio_unlock(folio); in netfs_perform_write()
365 netfs_advance_writethrough(wreq, &wbc, folio, copied, in netfs_perform_write()
371 folio_put(folio); in netfs_perform_write()
372 folio = NULL; in netfs_perform_write()
407 folio_unlock(folio); in netfs_perform_write()
408 folio_put(folio); in netfs_perform_write()
508 struct folio *folio = page_folio(vmf->page); in netfs_page_mkwrite() local
516 _enter("%lx", folio->index); in netfs_page_mkwrite()
520 if (folio_lock_killable(folio) < 0) in netfs_page_mkwrite()
522 if (folio->mapping != mapping) in netfs_page_mkwrite()
524 if (folio_wait_writeback_killable(folio) < 0) in netfs_page_mkwrite()
528 if (WARN_ON(!folio_test_uptodate(folio))) { in netfs_page_mkwrite()
533 group = netfs_folio_group(folio); in netfs_page_mkwrite()
535 folio_unlock(folio); in netfs_page_mkwrite()
537 folio_pos(folio), in netfs_page_mkwrite()
538 folio_pos(folio) + folio_size(folio)); in netfs_page_mkwrite()
552 if (folio_test_dirty(folio)) in netfs_page_mkwrite()
553 trace_netfs_folio(folio, netfs_folio_trace_mkwrite_plus); in netfs_page_mkwrite()
555 trace_netfs_folio(folio, netfs_folio_trace_mkwrite); in netfs_page_mkwrite()
556 netfs_set_group(folio, netfs_group); in netfs_page_mkwrite()
566 folio_unlock(folio); in netfs_page_mkwrite()