tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 73d0e32571a0786151eb72634f1a4c5891166176 commit: d5f5b32dee7c09e3152cbbce45c73f0b1ea7d94c [728/1207] xfs: support CoW in fsdax mode config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220607/202206071511.FI7WLdZo-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.3.0-1) 11.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.4-18-g56afb504-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=d5f5b32dee7c09e3152cbbce45c73f0b1ea7d94c git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout d5f5b32dee7c09e3152cbbce45c73f0b1ea7d94c # save the config file mkdir build_dir && cp config build_dir/.config make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/xfs/ If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) >> fs/xfs/xfs_file.c:1266:31: sparse: sparse: incorrect type in return expression (different base types) @@ expected int @@ got restricted vm_fault_t @@ fs/xfs/xfs_file.c:1266:31: sparse: expected int fs/xfs/xfs_file.c:1266:31: sparse: got restricted vm_fault_t >> fs/xfs/xfs_file.c:1260:1: sparse: sparse: symbol 'xfs_dax_fault' was not declared. Should it be static? >> fs/xfs/xfs_file.c:1314:21: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted vm_fault_t [usertype] ret @@ got int @@ fs/xfs/xfs_file.c:1314:21: sparse: expected restricted vm_fault_t [usertype] ret fs/xfs/xfs_file.c:1314:21: sparse: got int Please review and possibly fold the followup patch. vim +1266 fs/xfs/xfs_file.c 1257 1258 #ifdef CONFIG_FS_DAX 1259 int > 1260 xfs_dax_fault( 1261 struct vm_fault *vmf, 1262 enum page_entry_size pe_size, 1263 bool write_fault, 1264 pfn_t *pfn) 1265 { > 1266 return dax_iomap_fault(vmf, pe_size, pfn, NULL, 1267 (write_fault && !vmf->cow_page) ? 1268 &xfs_dax_write_iomap_ops : 1269 &xfs_read_iomap_ops); 1270 } 1271 #else 1272 int 1273 xfs_dax_fault( 1274 struct vm_fault *vmf, 1275 enum page_entry_size pe_size, 1276 bool write_fault, 1277 pfn_t *pfn) 1278 { 1279 return 0; 1280 } 1281 #endif 1282 1283 /* 1284 * Locking for serialisation of IO during page faults. This results in a lock 1285 * ordering of: 1286 * 1287 * mmap_lock (MM) 1288 * sb_start_pagefault(vfs, freeze) 1289 * invalidate_lock (vfs/XFS_MMAPLOCK - truncate serialisation) 1290 * page_lock (MM) 1291 * i_lock (XFS - extent map serialisation) 1292 */ 1293 static vm_fault_t 1294 __xfs_filemap_fault( 1295 struct vm_fault *vmf, 1296 enum page_entry_size pe_size, 1297 bool write_fault) 1298 { 1299 struct inode *inode = file_inode(vmf->vma->vm_file); 1300 struct xfs_inode *ip = XFS_I(inode); 1301 vm_fault_t ret; 1302 1303 trace_xfs_filemap_fault(ip, pe_size, write_fault); 1304 1305 if (write_fault) { 1306 sb_start_pagefault(inode->i_sb); 1307 file_update_time(vmf->vma->vm_file); 1308 } 1309 1310 if (IS_DAX(inode)) { 1311 pfn_t pfn; 1312 1313 xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED); > 1314 ret = xfs_dax_fault(vmf, pe_size, write_fault, &pfn); 1315 if (ret & VM_FAULT_NEEDDSYNC) 1316 ret = dax_finish_sync_fault(vmf, pe_size, pfn); 1317 xfs_iunlock(XFS_I(inode), XFS_MMAPLOCK_SHARED); 1318 } else { 1319 if (write_fault) { 1320 xfs_ilock(XFS_I(inode), XFS_MMAPLOCK_SHARED); 1321 ret = iomap_page_mkwrite(vmf, 1322 &xfs_buffered_write_iomap_ops); 1323 xfs_iunlock(XFS_I(inode), XFS_MMAPLOCK_SHARED); 1324 } else { 1325 ret = filemap_fault(vmf); 1326 } 1327 } 1328 1329 if (write_fault) 1330 sb_end_pagefault(inode->i_sb); 1331 return ret; 1332 } 1333 -- 0-DAY CI Kernel Test Service https://01.org/lkp