Hi Boaz, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [cannot apply to v5.3-rc4 next-20190813] [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/Boaz-Harrosh/zuf-ZUFS-Zero-copy-User-mode-FileSystem/20190813-074124 config: x86_64-allyesconfig (attached as .config) compiler: gcc-7 (Debian 7.4.0-10) 7.4.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All warnings (new ones prefixed by >>): fs/zuf/file.c: In function 'zuf_fiemap': >> fs/zuf/file.c:324:1: warning: the frame size of 8512 bytes is larger than 8192 bytes [-Wframe-larger-than=] } ^ vim +324 fs/zuf/file.c 243 244 static int zuf_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, 245 u64 offset, u64 len) 246 { 247 struct super_block *sb = inode->i_sb; 248 struct zuf_inode_info *zii = ZUII(inode); 249 struct zufs_ioc_fiemap ioc_fiemap = { 250 .hdr.operation = ZUFS_OP_FIEMAP, 251 .hdr.in_len = sizeof(ioc_fiemap), 252 .hdr.out_len = sizeof(ioc_fiemap), 253 .zus_ii = zii->zus_ii, 254 .start = offset, 255 .length = len, 256 .flags = fieinfo->fi_flags, 257 }; 258 struct page *pages[ZUS_API_MAP_MAX_PAGES]; 259 uint nump = 0, extents_max = 0; 260 int i, err; 261 262 zuf_dbg_vfs("[%ld] offset=0x%llx len=0x%llx extents_max=%u flags=0x%x\n", 263 inode->i_ino, offset, len, fieinfo->fi_extents_max, 264 fieinfo->fi_flags); 265 266 /* TODO: Have support for FIEMAP_FLAG_XATTR */ 267 err = fiemap_check_flags(fieinfo, FIEMAP_FLAG_SYNC); 268 if (unlikely(err)) 269 return err; 270 271 if (likely(fieinfo->fi_extents_max)) { 272 ulong start = (ulong)fieinfo->fi_extents_start; 273 ulong len = fieinfo->fi_extents_max * 274 sizeof(struct fiemap_extent); 275 ulong offset = start & (PAGE_SIZE - 1); 276 ulong end_offset = (offset + len) & (PAGE_SIZE - 1); 277 ulong __len; 278 uint nump_r; 279 280 nump = md_o2p_up(offset + len); 281 if (ARRAY_SIZE(pages) < nump) { 282 nump = ARRAY_SIZE(pages); 283 end_offset = 0; 284 } 285 286 nump_r = get_user_pages_fast(start, nump, WRITE, pages); 287 if (unlikely(nump != nump_r)) 288 return -EFAULT; 289 290 __len = nump * PAGE_SIZE - offset; 291 if (end_offset) 292 __len -= (PAGE_SIZE - end_offset); 293 294 extents_max = __len / sizeof(struct fiemap_extent); 295 296 ioc_fiemap.hdr.len = extents_max * sizeof(struct fiemap_extent); 297 ioc_fiemap.hdr.offset = offset; 298 } 299 ioc_fiemap.extents_max = extents_max; 300 301 zuf_r_lock(zii); 302 303 err = zufc_dispatch(ZUF_ROOT(SBI(sb)), &ioc_fiemap.hdr, pages, nump); 304 if (unlikely(err)) { 305 zuf_dbg_err("zufs_dispatch failed => %d\n", err); 306 goto out; 307 } 308 309 fieinfo->fi_extents_mapped = ioc_fiemap.extents_mapped; 310 if (unlikely(extents_max && 311 (extents_max < ioc_fiemap.extents_mapped))) { 312 zuf_err("extents_max=%d extents_mapped=%d\n", extents_max, 313 ioc_fiemap.extents_mapped); 314 err = -EINVAL; 315 } 316 317 out: 318 zuf_r_unlock(zii); 319 320 for (i = 0; i < nump; ++i) 321 put_page(pages[i]); 322 323 return err; > 324 } 325 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip