Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ceph: pass inclusive lend parameter to filemap_write_and_wait_range()

The 'lend' parameter of filemap_write_and_wait_range is required to be
inclusive, so follow the rule. Same for invalidate_inode_pages2_range.

Signed-off-by: zhengbin <zhengbin13@huawei.com>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>

authored by

zhengbin and committed by
Ilya Dryomov
e450f4d1 0c93e1b7

+8 -5
+8 -5
fs/ceph/file.c
··· 590 590 * but it will at least behave sensibly when they are 591 591 * in sequence. 592 592 */ 593 - ret = filemap_write_and_wait_range(inode->i_mapping, off, off + len); 593 + ret = filemap_write_and_wait_range(inode->i_mapping, 594 + off, off + len - 1); 594 595 if (ret < 0) 595 596 return ret; 596 597 ··· 930 929 (write ? "write" : "read"), file, pos, (unsigned)count, 931 930 snapc, snapc->seq); 932 931 933 - ret = filemap_write_and_wait_range(inode->i_mapping, pos, pos + count); 932 + ret = filemap_write_and_wait_range(inode->i_mapping, 933 + pos, pos + count - 1); 934 934 if (ret < 0) 935 935 return ret; 936 936 937 937 if (write) { 938 938 int ret2 = invalidate_inode_pages2_range(inode->i_mapping, 939 939 pos >> PAGE_SHIFT, 940 - (pos + count) >> PAGE_SHIFT); 940 + (pos + count - 1) >> PAGE_SHIFT); 941 941 if (ret2 < 0) 942 942 dout("invalidate_inode_pages2_range returned %d\n", ret2); 943 943 ··· 1134 1132 dout("sync_write on file %p %lld~%u snapc %p seq %lld\n", 1135 1133 file, pos, (unsigned)count, snapc, snapc->seq); 1136 1134 1137 - ret = filemap_write_and_wait_range(inode->i_mapping, pos, pos + count); 1135 + ret = filemap_write_and_wait_range(inode->i_mapping, 1136 + pos, pos + count - 1); 1138 1137 if (ret < 0) 1139 1138 return ret; 1140 1139 1141 1140 ret = invalidate_inode_pages2_range(inode->i_mapping, 1142 1141 pos >> PAGE_SHIFT, 1143 - (pos + count) >> PAGE_SHIFT); 1142 + (pos + count - 1) >> PAGE_SHIFT); 1144 1143 if (ret < 0) 1145 1144 dout("invalidate_inode_pages2_range returned %d\n", ret); 1146 1145