Lines Matching full:isi
27 static int iomap_swapfile_add_extent(struct iomap_swapfile_info *isi) in iomap_swapfile_add_extent() argument
29 struct iomap *iomap = &isi->iomap; in iomap_swapfile_add_extent()
37 if (unlikely(isi->nr_pages >= isi->sis->max)) in iomap_swapfile_add_extent()
39 max_pages = isi->sis->max - isi->nr_pages; in iomap_swapfile_add_extent()
63 if (isi->lowest_ppage > first_ppage_reported) in iomap_swapfile_add_extent()
64 isi->lowest_ppage = first_ppage_reported; in iomap_swapfile_add_extent()
65 if (isi->highest_ppage < (next_ppage - 1)) in iomap_swapfile_add_extent()
66 isi->highest_ppage = next_ppage - 1; in iomap_swapfile_add_extent()
69 error = add_swap_extent(isi->sis, isi->nr_pages, nr_pages, first_ppage); in iomap_swapfile_add_extent()
72 isi->nr_extents += error; in iomap_swapfile_add_extent()
73 isi->nr_pages += nr_pages; in iomap_swapfile_add_extent()
77 static int iomap_swapfile_fail(struct iomap_swapfile_info *isi, const char *str) in iomap_swapfile_fail() argument
83 p = file_path(isi->file, buf, PATH_MAX); in iomap_swapfile_fail()
95 struct iomap *iomap, struct iomap_swapfile_info *isi) in iomap_swapfile_iter() argument
104 return iomap_swapfile_fail(isi, "is inline"); in iomap_swapfile_iter()
106 return iomap_swapfile_fail(isi, "has unallocated extents"); in iomap_swapfile_iter()
111 return iomap_swapfile_fail(isi, "is not committed"); in iomap_swapfile_iter()
113 return iomap_swapfile_fail(isi, "has shared extents"); in iomap_swapfile_iter()
116 if (iomap->bdev != isi->sis->bdev) in iomap_swapfile_iter()
117 return iomap_swapfile_fail(isi, "outside the main device"); in iomap_swapfile_iter()
119 if (isi->iomap.length == 0) { in iomap_swapfile_iter()
121 memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); in iomap_swapfile_iter()
122 } else if (isi->iomap.addr + isi->iomap.length == iomap->addr) { in iomap_swapfile_iter()
124 isi->iomap.length += iomap->length; in iomap_swapfile_iter()
127 int error = iomap_swapfile_add_extent(isi); in iomap_swapfile_iter()
130 memcpy(&isi->iomap, iomap, sizeof(isi->iomap)); in iomap_swapfile_iter()
151 struct iomap_swapfile_info isi = { in iomap_swapfile_activate() local
167 iter.status = iomap_swapfile_iter(&iter, &iter.iomap, &isi); in iomap_swapfile_activate()
171 if (isi.iomap.length) { in iomap_swapfile_activate()
172 ret = iomap_swapfile_add_extent(&isi); in iomap_swapfile_activate()
182 if (isi.nr_pages == 0) { in iomap_swapfile_activate()
187 *pagespan = 1 + isi.highest_ppage - isi.lowest_ppage; in iomap_swapfile_activate()
188 sis->max = isi.nr_pages; in iomap_swapfile_activate()
189 sis->pages = isi.nr_pages - 1; in iomap_swapfile_activate()
190 return isi.nr_extents; in iomap_swapfile_activate()