LINUX.ORG.RU

Сборка exfat-1.2.19 и exfat-1.2.19 на Centos 7.3 WTF?

 


0

1
localhost exfat-nofuse-master]$ make
Makefile:641: Cannot use CONFIG_CC_STACKPROTECTOR_STRONG: -fstack-protector-strong not supported by compiler
make -C /lib/modules/3.10.0-514.2.2.el7.x86_64/build M=/home/constantin/Desktop/exfat-nofuse-master modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
  CC [M]  /home/constantin/Desktop/exfat-nofuse-master/exfat_core.o
  CC [M]  /home/constantin/Desktop/exfat-nofuse-master/exfat_super.o
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:471:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_hash         = exfat_d_hashi,
  ^
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:471:2: warning: (near initialization for ‘exfat_ci_dentry_ops.d_hash’) [enabled by default]
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:472:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_compare      = exfat_cmpi,
  ^
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:472:2: warning: (near initialization for ‘exfat_ci_dentry_ops.d_compare’) [enabled by default]
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:477:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_hash         = exfat_d_hash,
  ^
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:477:2: warning: (near initialization for ‘exfat_dentry_ops.d_hash’) [enabled by default]
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:478:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_compare      = exfat_cmp,
  ^
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:478:2: warning: (near initialization for ‘exfat_dentry_ops.d_compare’) [enabled by default]
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c: In function ‘exfat_write_failed’:
/home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:1645:3: error: too many arguments to function ‘truncate_pagecache’
   truncate_pagecache(inode, to, i_size_read(inode));
   ^
In file included from include/linux/pagemap.h:7:0,
                 from /home/constantin/Desktop/exfat-nofuse-master/exfat_super.c:57:
include/linux/mm.h:1220:13: note: declared here
 extern void truncate_pagecache(struct inode *inode, loff_t new);
             ^
make[2]: *** [/home/constantin/Desktop/exfat-nofuse-master/exfat_super.o] Error 1
make[1]: *** [_module_/home/constantin/Desktop/exfat-nofuse-master] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
make: *** [all] Error 2
localhost exfat-1.2.19]$ make
make -C /lib/modules/3.10.0-514.2.2.el7.x86_64/build M=/home/constantin/Desktop/exfat-1.2.19 modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_api.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_blkdev.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_cache.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_data.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_global.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_nls.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_oal.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_upcase.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_xattr.o
  CC [M]  /home/constantin/Desktop/exfat-1.2.19/exfat_super.o
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:515:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_hash         = exfat_d_hashi,
  ^
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:515:2: warning: (near initialization for ‘exfat_ci_dentry_ops.d_hash’) [enabled by default]
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:516:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_compare      = exfat_cmpi,
  ^
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:516:2: warning: (near initialization for ‘exfat_ci_dentry_ops.d_compare’) [enabled by default]
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:521:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_hash         = exfat_d_hash,
  ^
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:521:2: warning: (near initialization for ‘exfat_dentry_ops.d_hash’) [enabled by default]
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:522:2: warning: initialization from incompatible pointer type [enabled by default]
  .d_compare      = exfat_cmp,
  ^
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:522:2: warning: (near initialization for ‘exfat_dentry_ops.d_compare’) [enabled by default]
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c: In function ‘exfat_write_failed’:
/home/constantin/Desktop/exfat-1.2.19/exfat_super.c:1658:3: error: too many arguments to function ‘truncate_pagecache’
   truncate_pagecache(inode, to, i_size_read(inode));
   ^
In file included from include/linux/pagemap.h:7:0,
                 from /home/constantin/Desktop/exfat-1.2.19/exfat_super.c:74:
include/linux/mm.h:1220:13: note: declared here
 extern void truncate_pagecache(struct inode *inode, loff_t new);
             ^
make[2]: *** [/home/constantin/Desktop/exfat-1.2.19/exfat_super.o] Error 1
make[1]: *** [_module_/home/constantin/Desktop/exfat-1.2.19] Error 2
make[1]: Leaving directory `/usr/src/kernels/3.10.0-514.2.2.el7.x86_64'
make: *** [all] Error 2

Странно: у меня на ядре 3.10 работала даже очень старая версия 1.2.4.

Попробуй exfat-nofuse, это форк самсунговского драйвера

ZenitharChampion ★★★★★
()
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,00)
		truncate_pagecache(inode, i_size_read(inode));
#else
		truncate_pagecache(inode, to, i_size_read(inode));
#endif

Код один и тот же, но написан немного по-другому для ядра 3.14 и выше. Возможно что какая-то функциональность была бэкпортирована из нового ядра в старое. Попробуй убрать условие для ядра < 3.14 и оставить условие для ядра >= 3.14. Вообще избавиться от #if и #else.

P.S. А в форке exfat-nofuse указана версия >= 3.12, а не >= 3.14. Странно.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от roco_constantin

Ну тебе же сказали, сотри условие.
Оставь только truncate_pagecache(inode, i_size_read(inode));

В CentOS много чего портируют из новых ядер, так что оно не совсем 3.10.

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от arson

оно же там не просто так стоит после инсталяции exfat-nofuse, и монтировании флешки получаю падение ядра и перезагрузку

roco_constantin ★★
() автор топика
Ответ на: комментарий от roco_constantin

Да и правда, падает.
Ставь fuse-exfat из fedor-ы (собери из srpm).

arson ★★★★★
()
Ответ на: комментарий от arson

В CentOS много чего портируют из новых ядер, так что оно не совсем 3.10.

В том и проблема, что они меняют там ОЧЕНЬ много. CentOS 7.3 вообще сплошной облом. Они бы уже сразу поменяли версию ядра, чем так гадить. В добавок ещё предыдущие минорные версии дропят только в путь.

З.Ы.: Пошёл я переходить на Scientific Linux 7.2, а то OFED 3.18 не собирается на «новых» ядрах.

AlexVR ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.