struct gfs2_sbd *sdp = GFS2_SB(inode);
unsigned int blocks;
+ /* gfs2 does not support large folios yet */
+ if (len > PAGE_SIZE)
+ len = PAGE_SIZE;
blocks = ((pos & blockmask) + len + blockmask) >> inode->i_blkbits;
return gfs2_trans_begin(sdp, RES_DINODE + blocks, 0);
}
goto out_no_page;
}
folio = page_folio(page);
+ if (pos + len > folio_pos(folio) + folio_size(folio))
+ len = folio_pos(folio) + folio_size(folio) - pos;
if (srcmap->type == IOMAP_INLINE)
status = iomap_write_begin_inline(iter, page);
struct page *page;
int status;
unsigned offset = offset_in_page(pos);
- unsigned bytes = min_t(u64, PAGE_SIZE - offset, length);
+ unsigned bytes = min_t(u64, UINT_MAX, length);
status = iomap_write_begin(iter, pos, bytes, &page);
if (status)
return status;
+ if (bytes > PAGE_SIZE - offset)
+ bytes = PAGE_SIZE - offset;
zero_user(page, offset, bytes);
mark_page_accessed(page);