Lines Matching refs:ow

78 static int orangefs_writepages_work(struct orangefs_writepages *ow,  in orangefs_writepages_work()  argument
81 struct inode *inode = ow->mapping->host; in orangefs_writepages_work()
91 start = offset_in_folio(ow->folios[0], ow->off); in orangefs_writepages_work()
92 for (i = 0; i < ow->nfolios; i++) { in orangefs_writepages_work()
93 folio_start_writeback(ow->folios[i]); in orangefs_writepages_work()
94 bvec_set_folio(&ow->bv[i], ow->folios[i], in orangefs_writepages_work()
95 folio_size(ow->folios[i]) - start, start); in orangefs_writepages_work()
98 iov_iter_bvec(&iter, ITER_SOURCE, ow->bv, ow->nfolios, ow->len); in orangefs_writepages_work()
100 WARN_ON(ow->off >= len); in orangefs_writepages_work()
101 if (ow->off + ow->len > len) in orangefs_writepages_work()
102 ow->len = len - ow->off; in orangefs_writepages_work()
104 off = ow->off; in orangefs_writepages_work()
105 wr.uid = ow->uid; in orangefs_writepages_work()
106 wr.gid = ow->gid; in orangefs_writepages_work()
107 ret = wait_for_direct_io(ORANGEFS_IO_WRITE, inode, &off, &iter, ow->len, in orangefs_writepages_work()
110 mapping_set_error(ow->mapping, ret); in orangefs_writepages_work()
114 for (i = 0; i < ow->nfolios; i++) { in orangefs_writepages_work()
115 wrp = folio_detach_private(ow->folios[i]); in orangefs_writepages_work()
117 folio_end_writeback(ow->folios[i]); in orangefs_writepages_work()
118 folio_unlock(ow->folios[i]); in orangefs_writepages_work()
125 struct writeback_control *wbc, struct orangefs_writepages *ow) in orangefs_writepages_callback() argument
139 if (ow->nfolios == 0) { in orangefs_writepages_callback()
140 ow->off = wr->pos; in orangefs_writepages_callback()
141 ow->len = wr->len; in orangefs_writepages_callback()
142 ow->uid = wr->uid; in orangefs_writepages_callback()
143 ow->gid = wr->gid; in orangefs_writepages_callback()
144 ow->folios[ow->nfolios++] = folio; in orangefs_writepages_callback()
148 if (!uid_eq(ow->uid, wr->uid) || !gid_eq(ow->gid, wr->gid)) { in orangefs_writepages_callback()
149 orangefs_writepages_work(ow, wbc); in orangefs_writepages_callback()
150 ow->nfolios = 0; in orangefs_writepages_callback()
154 if (ow->off + ow->len == wr->pos) { in orangefs_writepages_callback()
155 ow->len += wr->len; in orangefs_writepages_callback()
156 ow->folios[ow->nfolios++] = folio; in orangefs_writepages_callback()
162 if (ow->nfolios) { in orangefs_writepages_callback()
163 orangefs_writepages_work(ow, wbc); in orangefs_writepages_callback()
164 ow->nfolios = 0; in orangefs_writepages_callback()
171 if (ow->nfolios == ow->maxpages) { in orangefs_writepages_callback()
172 orangefs_writepages_work(ow, wbc); in orangefs_writepages_callback()
173 ow->nfolios = 0; in orangefs_writepages_callback()
182 struct orangefs_writepages *ow; in orangefs_writepages() local
187 ow = kzalloc_obj(struct orangefs_writepages); in orangefs_writepages()
188 if (!ow) in orangefs_writepages()
190 ow->maxpages = orangefs_bufmap_size_query()/PAGE_SIZE; in orangefs_writepages()
191 ow->folios = kzalloc_objs(struct folio *, ow->maxpages); in orangefs_writepages()
192 if (!ow->folios) { in orangefs_writepages()
193 kfree(ow); in orangefs_writepages()
196 ow->bv = kzalloc_objs(struct bio_vec, ow->maxpages); in orangefs_writepages()
197 if (!ow->bv) { in orangefs_writepages()
198 kfree(ow->folios); in orangefs_writepages()
199 kfree(ow); in orangefs_writepages()
202 ow->mapping = mapping; in orangefs_writepages()
205 error = orangefs_writepages_callback(folio, wbc, ow); in orangefs_writepages()
206 if (ow->nfolios) in orangefs_writepages()
207 error = orangefs_writepages_work(ow, wbc); in orangefs_writepages()
209 kfree(ow->folios); in orangefs_writepages()
210 kfree(ow->bv); in orangefs_writepages()
211 kfree(ow); in orangefs_writepages()