locking.rst (22e111ed6c83dcde3037fc81176012721bc34c0b) locking.rst (bf4e7080aeed29354cb156a8eb5d221ab2b6a8cc)
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);
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_page)(struct address_space *, struct page *);
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
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_page: 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 ---
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 ---