From eff3d78cb1376798fcb708b5a1f050312164dec7 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Sat, 26 Mar 2016 22:28:45 -0700 Subject: [PATCH] scoutfs: update inode when write changes i_size Extended file data wasn't persistent because we weren't writing out the inode with the i_size update that covered the newly written data. Signed-off-by: Zach Brown --- kmod/src/filerw.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/kmod/src/filerw.c b/kmod/src/filerw.c index f1febd31..fc7a46ec 100644 --- a/kmod/src/filerw.c +++ b/kmod/src/filerw.c @@ -197,8 +197,12 @@ static int scoutfs_write_end(struct file *file, struct address_space *mapping, if (copied < len) zero_user_segment(page, off + copied, len); - if (pos + copied > inode->i_size) + if (pos + copied > inode->i_size) { i_size_write(inode, pos + copied); + /* XXX need to think about pinning and enospc */ + if (!scoutfs_dirty_inode_item(inode)) + scoutfs_update_inode_item(inode); + } if (!PageUptodate(page)) SetPageUptodate(page);