Messages in this thread Patch in this message | ![/](/images/icornerl.gif) | | Date | Wed, 26 Mar 2003 09:26:32 +0100 | From | Michal Grzedzicki <> | Subject | Cramfs compilation errors under 2.5.66. |
| |
I recently encountered some errors during the build of cramfs for Linux kernel 2.5.66.
gcc -Wp,-MD,fs/cramfs/.inode.o.d -D__KERNEL__ -Iinclude -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -malign-functions=4 -Iinclude/asm-i386/mach-default -fomit-frame-pointer -nostdinc -iwithprefix include -DMODULE -DKBUILD_BASENAME=inode -DKBUILD_MODNAME=cramfs -c -o fs/cramfs/inode.o fs/cramfs/inode.c fs/cramfs/inode.c: In function `get_cramfs_inode': fs/cramfs/inode.c:54: incompatible types in assignment make[2]: *** [fs/cramfs/inode.o] Error 1 make[1]: *** [fs/cramfs] Error 2 make: *** [fs] Error 2
The problem is that i_mtime and i_atime members of struct inode are of type 'struct timespec' so you must initialize its elements explicitly. from fs/cramfs/inode.c:
... get_cramfs_inode(struct super_block *sb, struct cramfs_inode * cramfs_inode) { struct inode * inode = new_inode(sb); if (inode) { inode->i_mode = cramfs_inode->mode; inode->i_uid = cramfs_inode->uid; inode->i_size = cramfs_inode->size; inode->i_blocks = (cramfs_inode->size - 1) / 512 + 1; inode->i_blksize = PAGE_CACHE_SIZE; inode->i_gid = cramfs_inode->gid; inode->i_mtime = inode->i_atime = inode->i_ctime = 0; ...
taken from include/linux/fs.h:
struct inode { ... kdev_t i_rdev; loff_t i_size; struct timespec i_atime; struct timespec i_mtime; struct timespec i_ctime; unsigned int i_blkbits; ...
taken from include/linux/time.h:
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ };
a trivial patch is available below and at http://manta.univ.gda.pl/~lazy/cramfs_2.5.66_xtime.patch
Michal Grzedzicki <lazy@manta.univ.gda.pl>
file cramfs_2.5.66_xtime.patch ________CUT BELOW________ --- linux-2.5.66_org/fs/cramfs/inode.c Mon Mar 24 22:59:55 2003 +++ linux-2.5.66/fs/cramfs/inode.c Tue Mar 25 22:15:49 2003 @@ -51,7 +51,8 @@ inode->i_blocks = (cramfs_inode->size - 1) / 512 + 1; inode->i_blksize = PAGE_CACHE_SIZE; inode->i_gid = cramfs_inode->gid; - inode->i_mtime = inode->i_atime = inode->i_ctime = 0; + inode->i_mtime.tv_sec = inode->i_atime.tv_sec = inode->i_ctime.tv_sec = 0; + inode->i_mtime.tv_nsec = inode->i_atime.tv_nsec = inode->i_ctime.tv_nsec = 0; inode->i_ino = CRAMINO(cramfs_inode); /* inode->i_nlink is left 1 - arguably wrong for directories, but it's the best we can do without reading the directory - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |