Hi Boaz, I love your patch! Yet something to improve: [auto build test ERROR on linus/master] [cannot apply to v5.3-rc4] [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 All errors (new ones prefixed by >>): fs/zuf/zuf-core.c: In function '_r_zufs_dispatch': >> fs/zuf/zuf-core.c:697:46: error: 'struct task_struct' has no member named 'cpus_allowed'; did you mean 'nr_cpus_allowed'? cpumask_copy(&zt->relay.cpus_allowed, &app->cpus_allowed); ^~~~~~~~~~~~ nr_cpus_allowed fs/zuf/zuf-core.c:698:21: error: 'struct task_struct' has no member named 'cpus_allowed'; did you mean 'nr_cpus_allowed'? cpumask_copy(&app->cpus_allowed, cpumask_of(smp_processor_id())); ^~~~~~~~~~~~ nr_cpus_allowed fs/zuf/zuf-core.c:721:22: error: 'struct task_struct' has no member named 'cpus_allowed'; did you mean 'nr_cpus_allowed'? cpumask_copy(&app->cpus_allowed, &zt->relay.cpus_allowed); ^~~~~~~~~~~~ nr_cpus_allowed vim +697 fs/zuf/zuf-core.c 643 644 int __zufc_dispatch(struct zuf_root_info *zri, struct zuf_dispatch_op *zdo) 645 #endif /* CONFIG_ZUF_DEBUG */ 646 { 647 struct task_struct *app = get_current(); 648 struct zufs_ioc_hdr *hdr = zdo->hdr; 649 int cpu; 650 struct zufc_thread *zt; 651 652 if (unlikely(hdr->out_len && !hdr->out_max)) { 653 /* TODO: Complain here and let caller code do this proper */ 654 hdr->out_max = hdr->out_len; 655 } 656 657 if (unlikely(zdo->__locked_zt)) { 658 zt = zdo->__locked_zt; 659 zdo->__locked_zt = NULL; 660 661 cpu = get_cpu(); 662 /* FIXME: Very Pedantic need it stay */ 663 if (unlikely((zt->zdo != zdo) || cpu != zt->no)) { 664 zuf_warn("[%ld] __locked_zt but zdo(%p != %p) || cpu(%d != %d)\n", 665 _zt_pr_no(zt), zt->zdo, zdo, cpu, zt->no); 666 put_cpu(); 667 goto channel_busy; 668 } 669 goto has_channel; 670 } 671 channel_busy: 672 cpu = get_cpu(); 673 674 if (!_try_grab_zt_channel(zri, cpu, &zt)) { 675 put_cpu(); 676 677 /* If channel was grabbed then maybe a break_all is in progress 678 * on a different CPU make sure zt->file on this core is 679 * updated 680 */ 681 mb(); 682 if (unlikely(!zt->hdr.file)) { 683 zuf_err("[%d] !zt->file\n", cpu); 684 return -EIO; 685 } 686 zuf_dbg_err("[%d] can this be\n", cpu); 687 /* FIXME: Do something much smarter */ 688 msleep(10); 689 if (signal_pending(get_current())) { 690 zuf_dbg_err("[%d] => EINTR\n", cpu); 691 return -EINTR; 692 } 693 goto channel_busy; 694 } 695 696 /* lock app to this cpu while waiting */ > 697 cpumask_copy(&zt->relay.cpus_allowed, &app->cpus_allowed); 698 cpumask_copy(&app->cpus_allowed, cpumask_of(smp_processor_id())); 699 700 zt->zdo = zdo; 701 702 has_channel: 703 if (zdo->dh) 704 zdo->dh(zdo, zt, zt->opt_buff); 705 else 706 memcpy(zt->opt_buff, zt->zdo->hdr, zt->zdo->hdr->in_len); 707 708 put_cpu(); 709 710 if (relay_fss_wakeup_app_wait(&zt->relay) == -ERESTARTSYS) { 711 struct zufs_ioc_hdr *opt_hdr = zt->opt_buff; 712 713 opt_hdr->flags |= ZUFS_H_INTR; 714 715 relay_fss_wakeup_app_wait_cont(&zt->relay); 716 } 717 718 /* __locked_zt must be kept on same cpu */ 719 if (!zdo->__locked_zt) 720 /* restore cpu affinity after wakeup */ 721 cpumask_copy(&app->cpus_allowed, &zt->relay.cpus_allowed); 722 723 DEBUG_CPU_SWITCH(cpu); 724 725 return zt->hdr.file ? hdr->err : -EIO; 726 } 727 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation