In kernel 4.18 we become more strict about what can be in the extent
size hint fields, even for freed inodes. Therefore, if repair decides
to clear out an inode core, zero the hint fields and clear the flags so
that the kernel won't trip over the cleared inode if and when it tries
to read the chunk.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
dinoc->di_anextents = 0;
}
+ if (be32_to_cpu(dinoc->di_extsize) != 0) {
+ __dirty_no_modify_ret(dirty);
+ dinoc->di_extsize = 0;
+ }
+
if (dinoc->di_version > 1 &&
be32_to_cpu(dinoc->di_nlink) != 0) {
__dirty_no_modify_ret(dirty);
dinoc->di_changecount = 0;
}
+ if (be32_to_cpu(dinoc->di_cowextsize) != 0) {
+ __dirty_no_modify_ret(dirty);
+ dinoc->di_cowextsize = 0;
+ }
+
return dirty;
}