5.3.2.1.19. Address Space Structure
struct address_space {
  struct inode            *host;          /* owner: inode, block_device */

  struct radix_tree_root  page_tree;      /* radix tree of all pages */
  spinlock_t              tree_lock;      /* and spinlock protecting it */

  unsigned int            i_mmap_writable;/* count VM_SHARED mappings */
  struct prio_tree_root   i_mmap;         /* tree of private and shared mappings */
  struct list_head        i_mmap_nonlinear;/*list VM_NONLINEAR mappings */
  spinlock_t              i_mmap_lock;    /* protect tree, count, list */

  unsigned int            truncate_count; /* Cover race condition with truncate */
  unsigned long           nrpages;        /* number of total pages */
  pgoff_t                 writeback_index;/* writeback starts here */

  struct address_space_operations *a_ops; /* methods */

  unsigned long           flags;          /* error bits/gfp mask */
  struct backing_dev_info *backing_dev_info; /* device readahead, etc */

  spinlock_t              private_lock;   /* for use by the address_space */
  struct list_head        private_list;   /* ditto */
  struct address_space    *assoc_mapping; /* ditto */
};