On Wed, 2025-03-12 at 10:47 +0000, David Howells wrote: > In ceph, in fill_fscrypt_truncate(), the end flush position is calculated > by: > > loff_t lend = orig_pos + CEPH_FSCRYPT_BLOCK_SHIFT - 1; > > but that's using the block shift not the block size. > > Fix this to use the block size instead. > > Fixes: 5c64737d2536 ("ceph: add truncate size handling support for fscrypt") > Signed-off-by: David Howells <dhowells@xxxxxxxxxx> > cc: Viacheslav Dubeyko <slava@xxxxxxxxxxx> > cc: Alex Markuze <amarkuze@xxxxxxxxxx> > cc: Xiubo Li <xiubli@xxxxxxxxxx> > cc: Ilya Dryomov <idryomov@xxxxxxxxx> > cc: ceph-devel@xxxxxxxxxxxxxxx > cc: linux-fsdevel@xxxxxxxxxxxxxxx > --- > fs/ceph/inode.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c > index ab63c7ebce5b..ec9b80fec7be 100644 > --- a/fs/ceph/inode.c > +++ b/fs/ceph/inode.c > @@ -2363,7 +2363,7 @@ static int fill_fscrypt_truncate(struct inode *inode, > > /* Try to writeback the dirty pagecaches */ > if (issued & (CEPH_CAP_FILE_BUFFER)) { > - loff_t lend = orig_pos + CEPH_FSCRYPT_BLOCK_SHIFT - 1; > + loff_t lend = orig_pos + CEPH_FSCRYPT_BLOCK_SIZE - 1; > > ret = filemap_write_and_wait_range(inode->i_mapping, > orig_pos, lend); > > Looks good. Reviewed-by: Viacheslav Dubeyko <Slava.Dubeyko@xxxxxxx> Do we know easy way to reproduce the issue? Thanks, Slava.