* [willy-pagecache:set_ptes 9/38] mm/filemap.c:2709: undefined reference to `flush_dcache_folio'
@ 2023-07-08 2:57 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2023-07-08 2:57 UTC (permalink / raw)
To: Matthew Wilcox; +Cc: oe-kbuild-all
tree: git://git.infradead.org/users/willy/pagecache set_ptes
head: 72c34bd0b2a432506d992bdc1e3a89260461667d
commit: 440dacbb8de713a54c1f2c71e070576dee31424e [9/38] arm: Implement the new page table range API
config: arm-randconfig-r061-20230704 (https://download.01.org/0day-ci/archive/20230708/202307081040.pxdFGWsP-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230708/202307081040.pxdFGWsP-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307081040.pxdFGWsP-lkp@intel.com/
All errors (new ones prefixed by >>):
arm-linux-gnueabi-ld: mm/filemap.o: in function `filemap_read':
>> mm/filemap.c:2709: undefined reference to `flush_dcache_folio'
arm-linux-gnueabi-ld: mm/filemap.o: in function `filemap_splice_read':
mm/filemap.c:2964: undefined reference to `flush_dcache_folio'
arm-linux-gnueabi-ld: fs/libfs.o: in function `simple_read_folio':
>> fs/libfs.c:789: undefined reference to `flush_dcache_folio'
arm-linux-gnueabi-ld: fs/remap_range.o: in function `vfs_dedupe_file_range_compare':
>> fs/remap_range.c:234: undefined reference to `flush_dcache_folio'
>> arm-linux-gnueabi-ld: fs/remap_range.c:235: undefined reference to `flush_dcache_folio'
arm-linux-gnueabi-ld: fs/netfs/buffered_read.o:fs/netfs/buffered_read.c:84: more undefined references to `flush_dcache_folio' follow
vim +2709 mm/filemap.c
5ccc944dce3df5 Matthew Wilcox (Oracle 2022-06-10 2611)
723ef24b9b379e Kent Overstreet 2020-12-14 2612 /**
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2613 * filemap_read - Read data from the page cache.
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2614 * @iocb: The iocb to read.
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2615 * @iter: Destination for the data.
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2616 * @already_read: Number of bytes already read by the caller.
723ef24b9b379e Kent Overstreet 2020-12-14 2617 *
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2618 * Copies data from the page cache. If the data is not currently present,
7e0a126519b826 Matthew Wilcox (Oracle 2022-04-29 2619) * uses the readahead and read_folio address_space operations to fetch it.
723ef24b9b379e Kent Overstreet 2020-12-14 2620 *
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2621 * Return: Total number of bytes copied, including those already read by
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2622 * the caller. If an error happens before any bytes are copied, returns
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2623 * a negative error number.
723ef24b9b379e Kent Overstreet 2020-12-14 2624 */
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2625 ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter,
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2626 ssize_t already_read)
723ef24b9b379e Kent Overstreet 2020-12-14 2627 {
723ef24b9b379e Kent Overstreet 2020-12-14 2628 struct file *filp = iocb->ki_filp;
06c0444290cecf Kent Overstreet 2020-12-14 2629 struct file_ra_state *ra = &filp->f_ra;
723ef24b9b379e Kent Overstreet 2020-12-14 2630 struct address_space *mapping = filp->f_mapping;
723ef24b9b379e Kent Overstreet 2020-12-14 2631 struct inode *inode = mapping->host;
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2632) struct folio_batch fbatch;
ff993ba130009b Matthew Wilcox (Oracle 2021-02-24 2633) int i, error = 0;
06c0444290cecf Kent Overstreet 2020-12-14 2634 bool writably_mapped;
06c0444290cecf Kent Overstreet 2020-12-14 2635 loff_t isize, end_offset;
881a8706c13e41 Haibo Li 2023-06-28 2636 loff_t last_pos = ra->prev_pos;
723ef24b9b379e Kent Overstreet 2020-12-14 2637
723ef24b9b379e Kent Overstreet 2020-12-14 2638 if (unlikely(iocb->ki_pos >= inode->i_sb->s_maxbytes))
723ef24b9b379e Kent Overstreet 2020-12-14 2639 return 0;
3644e2d2dda78e Kent Overstreet 2020-12-18 2640 if (unlikely(!iov_iter_count(iter)))
3644e2d2dda78e Kent Overstreet 2020-12-18 2641 return 0;
3644e2d2dda78e Kent Overstreet 2020-12-18 2642
723ef24b9b379e Kent Overstreet 2020-12-14 2643 iov_iter_truncate(iter, inode->i_sb->s_maxbytes);
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2644) folio_batch_init(&fbatch);
723ef24b9b379e Kent Overstreet 2020-12-14 2645
06c0444290cecf Kent Overstreet 2020-12-14 2646 do {
06c0444290cecf Kent Overstreet 2020-12-14 2647 cond_resched();
723ef24b9b379e Kent Overstreet 2020-12-14 2648
^1da177e4c3f41 Linus Torvalds 2005-04-16 2649 /*
723ef24b9b379e Kent Overstreet 2020-12-14 2650 * If we've already successfully copied some data, then we
723ef24b9b379e Kent Overstreet 2020-12-14 2651 * can no longer safely return -EIOCBQUEUED. Hence mark
723ef24b9b379e Kent Overstreet 2020-12-14 2652 * an async read NOWAIT at that point.
^1da177e4c3f41 Linus Torvalds 2005-04-16 2653 */
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2654 if ((iocb->ki_flags & IOCB_WAITQ) && already_read)
723ef24b9b379e Kent Overstreet 2020-12-14 2655 iocb->ki_flags |= IOCB_NOWAIT;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2656
8c8387ee3f55a3 David Howells 2021-11-05 2657 if (unlikely(iocb->ki_pos >= i_size_read(inode)))
8c8387ee3f55a3 David Howells 2021-11-05 2658 break;
8c8387ee3f55a3 David Howells 2021-11-05 2659
3fc40265ae2b48 David Howells 2023-05-22 2660 error = filemap_get_pages(iocb, iter->count, &fbatch, false);
ff993ba130009b Matthew Wilcox (Oracle 2021-02-24 2661) if (error < 0)
06c0444290cecf Kent Overstreet 2020-12-14 2662 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2663
^1da177e4c3f41 Linus Torvalds 2005-04-16 2664 /*
06c0444290cecf Kent Overstreet 2020-12-14 2665 * i_size must be checked after we know the pages are Uptodate.
06c0444290cecf Kent Overstreet 2020-12-14 2666 *
06c0444290cecf Kent Overstreet 2020-12-14 2667 * Checking i_size after the check allows us to calculate
06c0444290cecf Kent Overstreet 2020-12-14 2668 * the correct value for "nr", which means the zero-filled
06c0444290cecf Kent Overstreet 2020-12-14 2669 * part of the page is not copied back to userspace (unless
06c0444290cecf Kent Overstreet 2020-12-14 2670 * another truncate extends the file - this is desired though).
^1da177e4c3f41 Linus Torvalds 2005-04-16 2671 */
06c0444290cecf Kent Overstreet 2020-12-14 2672 isize = i_size_read(inode);
06c0444290cecf Kent Overstreet 2020-12-14 2673 if (unlikely(iocb->ki_pos >= isize))
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2674) goto put_folios;
06c0444290cecf Kent Overstreet 2020-12-14 2675 end_offset = min_t(loff_t, isize, iocb->ki_pos + iter->count);
723ef24b9b379e Kent Overstreet 2020-12-14 2676
06c0444290cecf Kent Overstreet 2020-12-14 2677 /*
06c0444290cecf Kent Overstreet 2020-12-14 2678 * Once we start copying data, we don't want to be touching any
06c0444290cecf Kent Overstreet 2020-12-14 2679 * cachelines that might be contended:
06c0444290cecf Kent Overstreet 2020-12-14 2680 */
06c0444290cecf Kent Overstreet 2020-12-14 2681 writably_mapped = mapping_writably_mapped(mapping);
06c0444290cecf Kent Overstreet 2020-12-14 2682
06c0444290cecf Kent Overstreet 2020-12-14 2683 /*
5ccc944dce3df5 Matthew Wilcox (Oracle 2022-06-10 2684) * When a read accesses the same folio several times, only
06c0444290cecf Kent Overstreet 2020-12-14 2685 * mark it as accessed the first time.
06c0444290cecf Kent Overstreet 2020-12-14 2686 */
881a8706c13e41 Haibo Li 2023-06-28 2687 if (!pos_same_folio(iocb->ki_pos, last_pos - 1,
5ccc944dce3df5 Matthew Wilcox (Oracle 2022-06-10 2688) fbatch.folios[0]))
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2689) folio_mark_accessed(fbatch.folios[0]);
06c0444290cecf Kent Overstreet 2020-12-14 2690
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2691) for (i = 0; i < folio_batch_count(&fbatch); i++) {
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2692) struct folio *folio = fbatch.folios[i];
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2693) size_t fsize = folio_size(folio);
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2694) size_t offset = iocb->ki_pos & (fsize - 1);
cbd59c48ae2bca Matthew Wilcox (Oracle 2021-02-24 2695) size_t bytes = min_t(loff_t, end_offset - iocb->ki_pos,
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2696) fsize - offset);
cbd59c48ae2bca Matthew Wilcox (Oracle 2021-02-24 2697) size_t copied;
06c0444290cecf Kent Overstreet 2020-12-14 2698
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2699) if (end_offset < folio_pos(folio))
cbd59c48ae2bca Matthew Wilcox (Oracle 2021-02-24 2700) break;
cbd59c48ae2bca Matthew Wilcox (Oracle 2021-02-24 2701) if (i > 0)
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2702) folio_mark_accessed(folio);
06c0444290cecf Kent Overstreet 2020-12-14 2703 /*
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2704) * If users can be writing to this folio using arbitrary
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2705) * virtual addresses, take care of potential aliasing
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2706) * before reading the folio on the kernel side.
06c0444290cecf Kent Overstreet 2020-12-14 2707 */
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2708) if (writably_mapped)
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 @2709) flush_dcache_folio(folio);
cbd59c48ae2bca Matthew Wilcox (Oracle 2021-02-24 2710)
d996fc7f615feb Matthew Wilcox (Oracle 2021-10-31 2711) copied = copy_folio_to_iter(folio, offset, bytes, iter);
06c0444290cecf Kent Overstreet 2020-12-14 2712
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2713 already_read += copied;
06c0444290cecf Kent Overstreet 2020-12-14 2714 iocb->ki_pos += copied;
881a8706c13e41 Haibo Li 2023-06-28 2715 last_pos = iocb->ki_pos;
06c0444290cecf Kent Overstreet 2020-12-14 2716
06c0444290cecf Kent Overstreet 2020-12-14 2717 if (copied < bytes) {
06c0444290cecf Kent Overstreet 2020-12-14 2718 error = -EFAULT;
06c0444290cecf Kent Overstreet 2020-12-14 2719 break;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2720 }
^1da177e4c3f41 Linus Torvalds 2005-04-16 2721 }
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2722) put_folios:
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2723) for (i = 0; i < folio_batch_count(&fbatch); i++)
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2724) folio_put(fbatch.folios[i]);
25d6a23e8d2808 Matthew Wilcox (Oracle 2021-12-06 2725) folio_batch_init(&fbatch);
06c0444290cecf Kent Overstreet 2020-12-14 2726 } while (iov_iter_count(iter) && iocb->ki_pos < isize && !error);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2727
^1da177e4c3f41 Linus Torvalds 2005-04-16 2728 file_accessed(filp);
881a8706c13e41 Haibo Li 2023-06-28 2729 ra->prev_pos = last_pos;
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2730 return already_read ? already_read : error;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2731 }
87fa0f3eb267ee Christoph Hellwig 2021-02-24 2732 EXPORT_SYMBOL_GPL(filemap_read);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2733
:::::: The code at line 2709 was first introduced by commit
:::::: d996fc7f615feb5986f67829e18a8d8400f41361 filemap: Convert filemap_read() to use a folio
:::::: TO: Matthew Wilcox (Oracle) <willy@infradead.org>
:::::: CC: Matthew Wilcox (Oracle) <willy@infradead.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-07-08 2:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-08 2:57 [willy-pagecache:set_ptes 9/38] mm/filemap.c:2709: undefined reference to `flush_dcache_folio' kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.