pnfs/blocklayout: fix last_write_offset incorrectly set to page boundary
Commit41963c10c4
sets the block layout's last written byte to the offset of the end of the extent rather than the end of the write which incorrectly updates the inode's size for partial-page writes. Fixes:41963c10c4
("pnfs/blocklayout: update last_write_offset atomically with extents") Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Tested-by: Christoph Hellwig <hch@lst.de> Cc: stable@vger.kernel.org # 4.8+ Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
3f807e5ae5
commit
a3f9d1b58a
|
@ -344,9 +344,10 @@ static void bl_write_cleanup(struct work_struct *work)
|
|||
u64 start = hdr->args.offset & (loff_t)PAGE_MASK;
|
||||
u64 end = (hdr->args.offset + hdr->args.count +
|
||||
PAGE_SIZE - 1) & (loff_t)PAGE_MASK;
|
||||
u64 lwb = hdr->args.offset + hdr->args.count;
|
||||
|
||||
ext_tree_mark_written(bl, start >> SECTOR_SHIFT,
|
||||
(end - start) >> SECTOR_SHIFT, end);
|
||||
(end - start) >> SECTOR_SHIFT, lwb);
|
||||
}
|
||||
|
||||
pnfs_ld_write_done(hdr);
|
||||
|
|
Loading…
Reference in New Issue
Block a user