5.3.2.1.20. Address Space Operations
struct address_space_operations {
  int (*writepage) (struct page *page, struct writeback_control *wbc);
  int (*readpage) (struct file *, struct page *);
  int (*sync_page) (struct page *);

  /* Write back some dirty pages from this mapping. */
  int (*writepages) (struct address_space *, struct writeback_control *);

  /* Set a page dirty */
  int (*set_page_dirty) (struct page *page);

  int (*readpages) (
    struct file *filp, struct address_space *mapping,
    struct list_head *pages, unsigned nr_pages);

  /*
   * ext3 requires that a successful prepare_write() call be followed
   * by a commit_write() call - they must be balanced
   */
  int (*prepare_write) (struct file *, struct page *, unsigned, unsigned);
  int (*commit_write) (struct file *, struct page *, unsigned, unsigned);

  /* Unfortunately this kludge is needed for FIBMAP. Don't use it */
  sector_t (*bmap) (struct address_space *, sector_t);

  int (*invalidatepage) (struct page *, unsigned long);
  int (*releasepage) (struct page *, int);
  ssize_t (*direct_IO) (
    int, struct kiocb *, const struct iovec *iov,
    loff_t offset, unsigned long nr_segs);
};