Re: [git pull] first batch of ufs fixes

From: Al Viro
Date: Sat Jun 10 2017 - 12:07:59 EST


On Sat, Jun 10, 2017 at 06:03:24AM -0700, Richard Narron wrote:

> 2) After creating a new filesystem on FreeBSD, then on Linux copying a
> larger than 2GB file and creating a directory, the fsck back on FreeBSD
> looks ok.
>
> But after going back to Linux and removing the large file and removing the
> directory, the fsck on FreeBSD looks not so good:

What happens is ufs_evict_inode() buggering off without syncing the inode
in case of final removal. Incremental on top of that branch is
diff --git a/fs/ufs/inode.c b/fs/ufs/inode.c
index 34f11cf0900a..da553ffec85b 100644
--- a/fs/ufs/inode.c
+++ b/fs/ufs/inode.c
@@ -848,6 +848,7 @@ void ufs_evict_inode(struct inode * inode)
(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
S_ISLNK(inode->i_mode)))
ufs_truncate_blocks(inode);
+ ufs_update_inode(inode, inode_needs_sync(inode));
}

invalidate_inode_buffers(inode);

Committed and pushed out...