With all users migrated to ->invalidate_folio, remove the old operation.
Unified · Split
| @@ -251,7 +251,6 @@ prototypes:: · 250 unmodified lines | ||
| 251 | 251 | struct page *page, void *fsdata); |
| 252 | 252 | sector_t (*bmap)(struct address_space *, sector_t); |
| 253 | 253 | void (*invalidate_folio) (struct folio *, size_t start, size_t len); |
| 254 | − void (*invalidatepage) (struct page *, unsigned int, unsigned int); | |
| 255 | 254 | int (*releasepage) (struct page *, int); |
| 256 | 255 | void (*freepage)(struct page *); |
| 257 | 256 | int (*direct_IO)(struct kiocb *, struct iov_iter *iter); |
| @@ -280,7 +279,6 @@ write_begin: locks the page exclusive · 22 unmodified lines | ||
| 280 | 279 | write_end: yes, unlocks exclusive |
| 281 | 280 | bmap: |
| 282 | 281 | invalidate_folio: yes exclusive |
| 283 | −invalidatepage: yes exclusive | |
| 284 | 282 | releasepage: yes |
| 285 | 283 | freepage: yes |
| 286 | 284 | direct_IO: |
| @@ -736,7 +736,6 @@ cache in your filesystem. The following members are defined: · 735 unmodified lines | ||
| 736 | 736 | struct page *page, void *fsdata); |
| 737 | 737 | sector_t (*bmap)(struct address_space *, sector_t); |
| 738 | 738 | void (*invalidate_folio) (struct folio *, size_t start, size_t len); |
| 739 | − void (*invalidatepage) (struct page *, unsigned int, unsigned int); | |
| 740 | 739 | int (*releasepage) (struct page *, int); |
| 741 | 740 | void (*freepage)(struct page *); |
| 742 | 741 | ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter); |
| @@ -388,7 +388,6 @@ struct address_space_operations { · 387 unmodified lines | ||
| 388 | 388 | /* Unfortunately this kludge is needed for FIBMAP. Don't use it */ |
| 389 | 389 | sector_t (*bmap)(struct address_space *, sector_t); |
| 390 | 390 | void (*invalidate_folio) (struct folio *, size_t offset, size_t len); |
| 391 | − void (*invalidatepage) (struct page *, unsigned int, unsigned int); | |
| 392 | 391 | int (*releasepage) (struct page *, gfp_t); |
| 393 | 392 | void (*freepage)(struct page *); |
| 394 | 393 | ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter); |
| @@ -19,8 +19,7 @@ · 18 unmodified lines | ||
| 19 | 19 | #include <linux/highmem.h> |
| 20 | 20 | #include <linux/pagevec.h> |
| 21 | 21 | #include <linux/task_io_accounting_ops.h> |
| 22 | −#include <linux/buffer_head.h> /* grr. try_to_release_page, | |
| 23 | − do_invalidatepage */ | |
| 22 | +#include <linux/buffer_head.h> /* grr. try_to_release_page */ | |
| 24 | 23 | #include <linux/shmem_fs.h> |
| 25 | 24 | #include <linux/rmap.h> |
| 26 | 25 | #include "internal.h" |
| @@ -155,16 +154,9 @@ static int invalidate_exceptional_entry2(struct address_space *mapping, · 128 unmodified lines | ||
| 155 | 154 | void folio_invalidate(struct folio *folio, size_t offset, size_t length) |
| 156 | 155 | { |
| 157 | 156 | const struct address_space_operations *aops = folio->mapping->a_ops; |
| 158 | − void (*invalidatepage)(struct page *, unsigned int, unsigned int); | |
| 159 | 157 | |
| 160 | − if (aops->invalidate_folio) { | |
| 158 | + if (aops->invalidate_folio) | |
| 161 | 159 | aops->invalidate_folio(folio, offset, length); |
| 162 | − return; | |
| 163 | − } | |
| 164 | − | |
| 165 | − invalidatepage = aops->invalidatepage; | |
| 166 | − if (invalidatepage) | |
| 167 | − (*invalidatepage)(&folio->page, offset, length); | |
| 168 | 160 | } |
| 169 | 161 | EXPORT_SYMBOL_GPL(folio_invalidate); |
| 170 | 162 | |
| @@ -334,7 +326,7 @@ int invalidate_inode_page(struct page *page) · 163 unmodified lines | ||
| 334 | 326 | * mapping is large, it is probably the case that the final pages are the most |
| 335 | 327 | * recently touched, and freeing happens in ascending file offset order. |
| 336 | 328 | * |
| 337 | − * Note that since ->invalidatepage() accepts range to invalidate | |
| 329 | + * Note that since ->invalidate_folio() accepts range to invalidate | |
| 338 | 330 | * truncate_inode_pages_range is able to handle cases where lend + 1 is not |
| 339 | 331 | * page aligned properly. |
| 340 | 332 | */ |