diff options
Diffstat (limited to 'lib/inode.c')
-rw-r--r-- | lib/inode.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/inode.c b/lib/inode.c index d0b1389..093c78f 100644 --- a/lib/inode.c +++ b/lib/inode.c @@ -537,14 +537,20 @@ int erofs_write_tail_end(struct erofs_inode *inode) ibh->op = &erofs_write_inline_bhops; } else { int ret; + erofs_off_t pos; erofs_mapbh(bh->block, true); - ret = dev_write(inode->idata, - erofs_btell(bh, true) - EROFS_BLKSIZ, - inode->idata_size); + pos = erofs_btell(bh, true) - EROFS_BLKSIZ; + ret = dev_write(inode->idata, pos, inode->idata_size); if (ret) return ret; - + if (inode->idata_size < EROFS_BLKSIZ) { + ret = dev_fillzero(pos + inode->idata_size, + EROFS_BLKSIZ - inode->idata_size, + false); + if (ret) + return ret; + } inode->idata_size = 0; free(inode->idata); inode->idata = NULL; |