Lines Matching refs:isi

30 static int iomap_swapfile_add_extent(struct iomap_swapfile_info *isi)
32 struct iomap *iomap = &isi->iomap;
40 if (unlikely(isi->nr_pages >= isi->sis->max))
42 max_pages = isi->sis->max - isi->nr_pages;
66 if (isi->lowest_ppage > first_ppage_reported)
67 isi->lowest_ppage = first_ppage_reported;
68 if (isi->highest_ppage < (next_ppage - 1))
69 isi->highest_ppage = next_ppage - 1;
72 error = add_swap_extent(isi->sis, isi->nr_pages, nr_pages, first_ppage);
75 isi->nr_extents += error;
76 isi->nr_pages += nr_pages;
80 static int iomap_swapfile_fail(struct iomap_swapfile_info *isi, const char *str)
86 p = file_path(isi->file, buf, PATH_MAX);
98 struct iomap *iomap, struct iomap_swapfile_info *isi)
107 return iomap_swapfile_fail(isi, "is inline");
109 return iomap_swapfile_fail(isi, "has unallocated extents");
114 return iomap_swapfile_fail(isi, "is not committed");
116 return iomap_swapfile_fail(isi, "has shared extents");
119 if (iomap->bdev != isi->sis->bdev)
120 return iomap_swapfile_fail(isi, "outside the main device");
122 if (isi->iomap.length == 0) {
124 memcpy(&isi->iomap, iomap, sizeof(isi->iomap));
125 } else if (isi->iomap.addr + isi->iomap.length == iomap->addr) {
127 isi->iomap.length += iomap->length;
130 int error = iomap_swapfile_add_extent(isi);
133 memcpy(&isi->iomap, iomap, sizeof(isi->iomap));
153 struct iomap_swapfile_info isi = {
169 iter.processed = iomap_swapfile_iter(&iter, &iter.iomap, &isi);
173 if (isi.iomap.length) {
174 ret = iomap_swapfile_add_extent(&isi);
184 if (isi.nr_pages == 0) {
189 *pagespan = 1 + isi.highest_ppage - isi.lowest_ppage;
190 sis->max = isi.nr_pages;
191 sis->pages = isi.nr_pages - 1;
192 sis->highest_bit = isi.nr_pages - 1;
193 return isi.nr_extents;