1======= 2Locking 3======= 4 5The text below describes the locking rules for VFS-related methods. 6It is (believed to be) up-to-date. *Please*, if you change anything in 7prototypes or locking protocols - update this file. And update the relevant 8instances in the tree, don't leave that to maintainers of filesystems/devices/ --- 250 unchanged lines hidden (view full) --- 259 void (*invalidate_folio) (struct folio *, size_t start, size_t len); 260 bool (*release_folio)(struct folio *, gfp_t); 261 void (*free_folio)(struct folio *); 262 int (*direct_IO)(struct kiocb *, struct iov_iter *iter); 263 int (*migrate_folio)(struct address_space *, struct folio *dst, 264 struct folio *src, enum migrate_mode); 265 int (*launder_folio)(struct folio *); 266 bool (*is_partially_uptodate)(struct folio *, size_t from, size_t count); |
267 int (*error_remove_folio)(struct address_space *, struct folio *); |
268 int (*swap_activate)(struct swap_info_struct *sis, struct file *f, sector_t *span) 269 int (*swap_deactivate)(struct file *); 270 int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter); 271 272locking rules: 273 All except dirty_folio and free_folio may block 274 275====================== ======================== ========= =============== --- 9 unchanged lines hidden (view full) --- 285bmap: 286invalidate_folio: yes exclusive 287release_folio: yes 288free_folio: yes 289direct_IO: 290migrate_folio: yes (both) 291launder_folio: yes 292is_partially_uptodate: yes |
293error_remove_folio: yes |
294swap_activate: no 295swap_deactivate: no 296swap_rw: yes, unlocks 297====================== ======================== ========= =============== 298 299->write_begin(), ->write_end() and ->read_folio() may be called from 300the request handler (/dev/loop). 301 --- 413 unchanged lines hidden --- |