v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
v4.19.y, v5.1.y:
fs/btrfs/props.c: In function 'prop_compression_validate': fs/btrfs/props.c:369:6: error: implicit declaration of function 'btrfs_compression_is_valid_type'
My apologies for the noise if this has already been reported/fixed.
Guenter
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
This was reported, only seems to show up on arm64, right?
v4.19.y, v5.1.y:
fs/btrfs/props.c: In function 'prop_compression_validate': fs/btrfs/props.c:369:6: error: implicit declaration of function 'btrfs_compression_is_valid_type'
My apologies for the noise if this has already been reported/fixed.
Odd, I thought I fixed that, maybe I need to push out an updated git tree, sorry about that.
greg k-h
On 7/24/19 8:40 AM, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
This was reported, only seems to show up on arm64, right?
From the 4.9.y build:
Failed builds: arm:allmodconfig i386:allyesconfig i386:allmodconfig m68k:allmodconfig mips:allmodconfig parisc:allmodconfig xtensa:allmodconfig
It also affects various qemu builds, such as malta_defconfig, with btrfs enabled. It looks like it may affect all 32-bit builds with btrfs enabled. I _don't_ see this problem with arm64, actually.
v4.19.y, v5.1.y:
fs/btrfs/props.c: In function 'prop_compression_validate': fs/btrfs/props.c:369:6: error: implicit declaration of function 'btrfs_compression_is_valid_type'
My apologies for the noise if this has already been reported/fixed.
Odd, I thought I fixed that, maybe I need to push out an updated git tree, sorry about that.
It is reported with v4.19.60-243-gb06e2890aa3d and v5.1.19-346-ge63e6fbad916.
No worries if it is already fixed.
Guenter
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
Oops, no, this looks like a 32bit issue, let me dig into that...
On Wed, Jul 24, 2019 at 05:40:39PM +0200, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
Oops, no, this looks like a 32bit issue, let me dig into that...
Ok, this makes no sense.
A few lines above this we do: inode->i_mtime = inode->i_ctime = current_time(inode);
And here we are now doing: struct timespec64 now = current_time(inode);
inode_inc_iversion(inode); inode->i_mtime = now; inode->i_ctime = now;
And current_time() is defined as: extern struct timespec64 current_time(struct inode *inode);
I have no idea what is going on :(
This is caused by Felipe's patch: 179006688a7e ("Btrfs: add missing inode version, ctime and mtime updates when punching hole"). Felipe, any ideas?
thanks,
greg k-h
On 7/24/19 9:15 AM, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 05:40:39PM +0200, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
Oops, no, this looks like a 32bit issue, let me dig into that...
Ok, this makes no sense.
A few lines above this we do: inode->i_mtime = inode->i_ctime = current_time(inode);
And here we are now doing: struct timespec64 now = current_time(inode);
inode_inc_iversion(inode); inode->i_mtime = now; inode->i_ctime = now;
And current_time() is defined as: extern struct timespec64 current_time(struct inode *inode);
v4.9.186-108-g5b3c7cd16340 and v4.9.186-126-g97ad1fbc1478, line 1489 of fs.h:
extern struct timespec current_fs_time(struct super_block *sb);
Your code base seems to be different :-(.
Guenter
I have no idea what is going on :(
This is caused by Felipe's patch: 179006688a7e ("Btrfs: add missing inode version, ctime and mtime updates when punching hole"). Felipe, any ideas?
thanks,
greg k-h
On Wed, Jul 24, 2019 at 09:50:54AM -0700, Guenter Roeck wrote:
On 7/24/19 9:15 AM, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 05:40:39PM +0200, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
Oops, no, this looks like a 32bit issue, let me dig into that...
Ok, this makes no sense.
A few lines above this we do: inode->i_mtime = inode->i_ctime = current_time(inode);
And here we are now doing: struct timespec64 now = current_time(inode);
inode_inc_iversion(inode); inode->i_mtime = now; inode->i_ctime = now;
And current_time() is defined as: extern struct timespec64 current_time(struct inode *inode);
v4.9.186-108-g5b3c7cd16340 and v4.9.186-126-g97ad1fbc1478, line 1489 of fs.h:
extern struct timespec current_fs_time(struct super_block *sb);
Your code base seems to be different :-(.
I was looking at 5.1 as you said it failed there :(
I'll go fix up 4.9 and I think 4.14, but the other kernel versions should be fine.
thanks,
greg k-h
On 7/24/19 11:31 AM, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 09:50:54AM -0700, Guenter Roeck wrote:
On 7/24/19 9:15 AM, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 05:40:39PM +0200, Greg Kroah-Hartman wrote:
On Wed, Jul 24, 2019 at 08:07:50AM -0700, Guenter Roeck wrote:
v4.9.y to v5.1.y:
fs/btrfs/file.c: In function 'btrfs_punch_hole': fs/btrfs/file.c:2787:27: error: invalid initializer struct timespec64 now = current_time(inode); ^~~~~~~~~~~~ fs/btrfs/file.c:2790:18: error: incompatible types when assigning to type 'struct timespec' from type 'struct timespec64'
Oops, no, this looks like a 32bit issue, let me dig into that...
Ok, this makes no sense.
A few lines above this we do: inode->i_mtime = inode->i_ctime = current_time(inode);
And here we are now doing: struct timespec64 now = current_time(inode);
inode_inc_iversion(inode); inode->i_mtime = now; inode->i_ctime = now;
And current_time() is defined as: extern struct timespec64 current_time(struct inode *inode);
v4.9.186-108-g5b3c7cd16340 and v4.9.186-126-g97ad1fbc1478, line 1489 of fs.h:
extern struct timespec current_fs_time(struct super_block *sb);
Your code base seems to be different :-(.
I was looking at 5.1 as you said it failed there :(
I'll go fix up 4.9 and I think 4.14, but the other kernel versions should be fine.
Oops. Yes, you are correct, only 4.9 and 4.14 are affected by this problem. Sorry. Guenter
linux-stable-mirror@lists.linaro.org