Hi Aleksei, Thank you for the patch! Yet something to improve: [auto build test ERROR on linus/master] [also build test ERROR on v4.17-rc3 next-20180501] [cannot apply to dgc-xfs/for-next] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Aleksei-Besogonov/fs-Add-iomap_swap_activate/20180502-034017 config: x86_64-randconfig-x009-201817 (attached as .config) compiler: gcc-7 (Debian 7.3.0-16) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): fs/iomap.c: In function 'iomap_swap_map': >> fs/iomap.c:1142:8: error: implicit declaration of function 'add_swap_extent'; did you mean '__swap_count'? [-Werror=implicit-function-declaration] ret = add_swap_extent(ctx->sis, ctx->page_no, num_pages, disk_pos); ^~~~~~~~~~~~~~~ __swap_count cc1: some warnings being treated as errors vim +1142 fs/iomap.c 1101 1102 static loff_t iomap_swap_map(struct inode *inode, loff_t pos, loff_t length, 1103 void *data, struct iomap *iomap) 1104 { 1105 struct iomap_swap_walker_context *ctx = data; 1106 unsigned int blocks_per_page = PAGE_SIZE >> inode->i_blkbits; 1107 u64 num_pages; 1108 u64 aligned_address; 1109 sector_t disk_pos; 1110 loff_t eff_length; 1111 loff_t ret; 1112 1113 /* Validate the extent */ 1114 1115 /* Only one bdev per swap file. */ 1116 if (iomap->bdev != ctx->sis->bdev) 1117 goto err; 1118 /* Only real or unwritten extents. */ 1119 if (iomap->type != IOMAP_MAPPED && iomap->type != IOMAP_UNWRITTEN) 1120 goto err; 1121 /* No uncommitted metadata or shared blocks or inline data. */ 1122 if (iomap->flags & (IOMAP_F_DIRTY | IOMAP_F_SHARED | IOMAP_F_DATA_INLINE)) 1123 goto err; 1124 1125 /* 1126 * Swap extents need to be PAGE_SIZE aligned on the disk 1127 */ 1128 aligned_address = ALIGN(iomap->addr, PAGE_SIZE); 1129 eff_length = length - (aligned_address - iomap->addr); 1130 BUG_ON(eff_length > length); 1131 disk_pos = aligned_address >> inode->i_blkbits; 1132 1133 if (eff_length < 0) 1134 return length; /* Continue probing */ 1135 1136 num_pages = eff_length / PAGE_SIZE; 1137 1138 /* Can't add blocks less than 1 page */ 1139 if (num_pages == 0) 1140 return length; /* Continue probing */ 1141 > 1142 ret = add_swap_extent(ctx->sis, ctx->page_no, num_pages, disk_pos); 1143 if (ret < 0) 1144 return ret; 1145 1146 ctx->nr_extents += ret; 1147 ctx->page_no += num_pages; 1148 (*ctx->span) += num_pages * blocks_per_page; 1149 1150 return length; /* continue probing */ 1151 err: 1152 pr_err("swapon: swapfile has holes\n"); 1153 return -EINVAL; 1154 } 1155 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation