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...

Reply via email to