* [mcgrof-next:20240808-large-block-misc 15388/15390] fs/xfs/xfs_super.c:1655:27: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int')
@ 2024-08-09 8:43 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-08-09 8:43 UTC (permalink / raw)
To: Pankaj Raghav; +Cc: llvm, oe-kbuild-all, Luis Chamberlain, Darrick J. Wong
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git 20240808-large-block-misc
head: f87d6ccd9d1e95abe5c254c89b52d42e6a99ca81
commit: c85bf06395ffe514c6312414a1ab6a9a5c2e16c1 [15388/15390] xfs: enable block size larger than page size support
config: i386-buildonly-randconfig-002-20240809 (https://download.01.org/0day-ci/archive/20240809/202408091606.cZeaSAvg-lkp@intel.com/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240809/202408091606.cZeaSAvg-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/202408091606.cZeaSAvg-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/xfs/xfs_super.c:1655:27: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
1654 | "block size (%u bytes) not supported; Only block size (%ld) or less is supported",
| ~~~
| %zu
1655 | mp->m_sb.sb_blocksize, max_folio_size);
| ^~~~~~~~~~~~~~
fs/xfs/xfs_message.h:27:49: note: expanded from macro 'xfs_warn'
27 | xfs_printk_index_wrap(KERN_WARNING, mp, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
fs/xfs/xfs_message.h:16:42: note: expanded from macro 'xfs_printk_index_wrap'
16 | xfs_printk_level(kern_level, mp, fmt, ##__VA_ARGS__); \
| ~~~ ^~~~~~~~~~~
1 warning generated.
vim +1655 fs/xfs/xfs_super.c
1496
1497 static int
1498 xfs_fs_fill_super(
1499 struct super_block *sb,
1500 struct fs_context *fc)
1501 {
1502 struct xfs_mount *mp = sb->s_fs_info;
1503 struct inode *root;
1504 int flags = 0, error;
1505
1506 mp->m_super = sb;
1507
1508 /*
1509 * Copy VFS mount flags from the context now that all parameter parsing
1510 * is guaranteed to have been completed by either the old mount API or
1511 * the newer fsopen/fsconfig API.
1512 */
1513 if (fc->sb_flags & SB_RDONLY)
1514 set_bit(XFS_OPSTATE_READONLY, &mp->m_opstate);
1515 if (fc->sb_flags & SB_DIRSYNC)
1516 mp->m_features |= XFS_FEAT_DIRSYNC;
1517 if (fc->sb_flags & SB_SYNCHRONOUS)
1518 mp->m_features |= XFS_FEAT_WSYNC;
1519
1520 error = xfs_fs_validate_params(mp);
1521 if (error)
1522 return error;
1523
1524 sb_min_blocksize(sb, BBSIZE);
1525 sb->s_xattr = xfs_xattr_handlers;
1526 sb->s_export_op = &xfs_export_operations;
1527 #ifdef CONFIG_XFS_QUOTA
1528 sb->s_qcop = &xfs_quotactl_operations;
1529 sb->s_quota_types = QTYPE_MASK_USR | QTYPE_MASK_GRP | QTYPE_MASK_PRJ;
1530 #endif
1531 sb->s_op = &xfs_super_operations;
1532
1533 /*
1534 * Delay mount work if the debug hook is set. This is debug
1535 * instrumention to coordinate simulation of xfs mount failures with
1536 * VFS superblock operations
1537 */
1538 if (xfs_globals.mount_delay) {
1539 xfs_notice(mp, "Delaying mount for %d seconds.",
1540 xfs_globals.mount_delay);
1541 msleep(xfs_globals.mount_delay * 1000);
1542 }
1543
1544 if (fc->sb_flags & SB_SILENT)
1545 flags |= XFS_MFSI_QUIET;
1546
1547 error = xfs_open_devices(mp);
1548 if (error)
1549 return error;
1550
1551 if (xfs_debugfs) {
1552 mp->m_debugfs = xfs_debugfs_mkdir(mp->m_super->s_id,
1553 xfs_debugfs);
1554 } else {
1555 mp->m_debugfs = NULL;
1556 }
1557
1558 error = xfs_init_mount_workqueues(mp);
1559 if (error)
1560 goto out_shutdown_devices;
1561
1562 error = xfs_init_percpu_counters(mp);
1563 if (error)
1564 goto out_destroy_workqueues;
1565
1566 error = xfs_inodegc_init_percpu(mp);
1567 if (error)
1568 goto out_destroy_counters;
1569
1570 /* Allocate stats memory before we do operations that might use it */
1571 mp->m_stats.xs_stats = alloc_percpu(struct xfsstats);
1572 if (!mp->m_stats.xs_stats) {
1573 error = -ENOMEM;
1574 goto out_destroy_inodegc;
1575 }
1576
1577 error = xchk_mount_stats_alloc(mp);
1578 if (error)
1579 goto out_free_stats;
1580
1581 error = xfs_readsb(mp, flags);
1582 if (error)
1583 goto out_free_scrub_stats;
1584
1585 error = xfs_finish_flags(mp);
1586 if (error)
1587 goto out_free_sb;
1588
1589 error = xfs_setup_devices(mp);
1590 if (error)
1591 goto out_free_sb;
1592
1593 /*
1594 * V4 support is undergoing deprecation.
1595 *
1596 * Note: this has to use an open coded m_features check as xfs_has_crc
1597 * always returns false for !CONFIG_XFS_SUPPORT_V4.
1598 */
1599 if (!(mp->m_features & XFS_FEAT_CRC)) {
1600 if (!IS_ENABLED(CONFIG_XFS_SUPPORT_V4)) {
1601 xfs_warn(mp,
1602 "Deprecated V4 format (crc=0) not supported by kernel.");
1603 error = -EINVAL;
1604 goto out_free_sb;
1605 }
1606 xfs_warn_once(mp,
1607 "Deprecated V4 format (crc=0) will not be supported after September 2030.");
1608 }
1609
1610 /* ASCII case insensitivity is undergoing deprecation. */
1611 if (xfs_has_asciici(mp)) {
1612 #ifdef CONFIG_XFS_SUPPORT_ASCII_CI
1613 xfs_warn_once(mp,
1614 "Deprecated ASCII case-insensitivity feature (ascii-ci=1) will not be supported after September 2030.");
1615 #else
1616 xfs_warn(mp,
1617 "Deprecated ASCII case-insensitivity feature (ascii-ci=1) not supported by kernel.");
1618 error = -EINVAL;
1619 goto out_free_sb;
1620 #endif
1621 }
1622
1623 /* Filesystem claims it needs repair, so refuse the mount. */
1624 if (xfs_has_needsrepair(mp)) {
1625 xfs_warn(mp, "Filesystem needs repair. Please run xfs_repair.");
1626 error = -EFSCORRUPTED;
1627 goto out_free_sb;
1628 }
1629
1630 /*
1631 * Don't touch the filesystem if a user tool thinks it owns the primary
1632 * superblock. mkfs doesn't clear the flag from secondary supers, so
1633 * we don't check them at all.
1634 */
1635 if (mp->m_sb.sb_inprogress) {
1636 xfs_warn(mp, "Offline file system operation in progress!");
1637 error = -EFSCORRUPTED;
1638 goto out_free_sb;
1639 }
1640
1641 if (mp->m_sb.sb_blocksize > PAGE_SIZE) {
1642 size_t max_folio_size = mapping_max_folio_size_supported();
1643
1644 if (!xfs_has_crc(mp)) {
1645 xfs_warn(mp,
1646 "V4 Filesystem with blocksize %d bytes. Only pagesize (%ld) or less is supported.",
1647 mp->m_sb.sb_blocksize, PAGE_SIZE);
1648 error = -ENOSYS;
1649 goto out_free_sb;
1650 }
1651
1652 if (mp->m_sb.sb_blocksize > max_folio_size) {
1653 xfs_warn(mp,
1654 "block size (%u bytes) not supported; Only block size (%ld) or less is supported",
> 1655 mp->m_sb.sb_blocksize, max_folio_size);
1656 error = -ENOSYS;
1657 goto out_free_sb;
1658 }
1659
1660 xfs_warn(mp,
1661 "EXPERIMENTAL: V5 Filesystem with Large Block Size (%d bytes) enabled.",
1662 mp->m_sb.sb_blocksize);
1663 }
1664
1665 /* Ensure this filesystem fits in the page cache limits */
1666 if (xfs_sb_validate_fsb_count(&mp->m_sb, mp->m_sb.sb_dblocks) ||
1667 xfs_sb_validate_fsb_count(&mp->m_sb, mp->m_sb.sb_rblocks)) {
1668 xfs_warn(mp,
1669 "file system too large to be mounted on this system.");
1670 error = -EFBIG;
1671 goto out_free_sb;
1672 }
1673
1674 /*
1675 * XFS block mappings use 54 bits to store the logical block offset.
1676 * This should suffice to handle the maximum file size that the VFS
1677 * supports (currently 2^63 bytes on 64-bit and ULONG_MAX << PAGE_SHIFT
1678 * bytes on 32-bit), but as XFS and VFS have gotten the s_maxbytes
1679 * calculation wrong on 32-bit kernels in the past, we'll add a WARN_ON
1680 * to check this assertion.
1681 *
1682 * Avoid integer overflow by comparing the maximum bmbt offset to the
1683 * maximum pagecache offset in units of fs blocks.
1684 */
1685 if (!xfs_verify_fileoff(mp, XFS_B_TO_FSBT(mp, MAX_LFS_FILESIZE))) {
1686 xfs_warn(mp,
1687 "MAX_LFS_FILESIZE block offset (%llu) exceeds extent map maximum (%llu)!",
1688 XFS_B_TO_FSBT(mp, MAX_LFS_FILESIZE),
1689 XFS_MAX_FILEOFF);
1690 error = -EINVAL;
1691 goto out_free_sb;
1692 }
1693
1694 error = xfs_filestream_mount(mp);
1695 if (error)
1696 goto out_free_sb;
1697
1698 /*
1699 * we must configure the block size in the superblock before we run the
1700 * full mount process as the mount process can lookup and cache inodes.
1701 */
1702 sb->s_magic = XFS_SUPER_MAGIC;
1703 sb->s_blocksize = mp->m_sb.sb_blocksize;
1704 sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
1705 sb->s_maxbytes = MAX_LFS_FILESIZE;
1706 sb->s_max_links = XFS_MAXLINK;
1707 sb->s_time_gran = 1;
1708 if (xfs_has_bigtime(mp)) {
1709 sb->s_time_min = xfs_bigtime_to_unix(XFS_BIGTIME_TIME_MIN);
1710 sb->s_time_max = xfs_bigtime_to_unix(XFS_BIGTIME_TIME_MAX);
1711 } else {
1712 sb->s_time_min = XFS_LEGACY_TIME_MIN;
1713 sb->s_time_max = XFS_LEGACY_TIME_MAX;
1714 }
1715 trace_xfs_inode_timestamp_range(mp, sb->s_time_min, sb->s_time_max);
1716 sb->s_iflags |= SB_I_CGROUPWB;
1717
1718 set_posix_acl_flag(sb);
1719
1720 /* version 5 superblocks support inode version counters. */
1721 if (xfs_has_crc(mp))
1722 sb->s_flags |= SB_I_VERSION;
1723
1724 if (xfs_has_dax_always(mp)) {
1725 error = xfs_setup_dax_always(mp);
1726 if (error)
1727 goto out_filestream_unmount;
1728 }
1729
1730 if (xfs_has_discard(mp) && !bdev_max_discard_sectors(sb->s_bdev)) {
1731 xfs_warn(mp,
1732 "mounting with \"discard\" option, but the device does not support discard");
1733 mp->m_features &= ~XFS_FEAT_DISCARD;
1734 }
1735
1736 if (xfs_has_reflink(mp)) {
1737 if (mp->m_sb.sb_rblocks) {
1738 xfs_alert(mp,
1739 "reflink not compatible with realtime device!");
1740 error = -EINVAL;
1741 goto out_filestream_unmount;
1742 }
1743
1744 if (xfs_globals.always_cow) {
1745 xfs_info(mp, "using DEBUG-only always_cow mode.");
1746 mp->m_always_cow = true;
1747 }
1748 }
1749
1750 if (xfs_has_rmapbt(mp) && mp->m_sb.sb_rblocks) {
1751 xfs_alert(mp,
1752 "reverse mapping btree not compatible with realtime device!");
1753 error = -EINVAL;
1754 goto out_filestream_unmount;
1755 }
1756
1757 if (xfs_has_exchange_range(mp))
1758 xfs_warn(mp,
1759 "EXPERIMENTAL exchange-range feature enabled. Use at your own risk!");
1760
1761 if (xfs_has_parent(mp))
1762 xfs_warn(mp,
1763 "EXPERIMENTAL parent pointer feature enabled. Use at your own risk!");
1764
1765 error = xfs_mountfs(mp);
1766 if (error)
1767 goto out_filestream_unmount;
1768
1769 root = igrab(VFS_I(mp->m_rootip));
1770 if (!root) {
1771 error = -ENOENT;
1772 goto out_unmount;
1773 }
1774 sb->s_root = d_make_root(root);
1775 if (!sb->s_root) {
1776 error = -ENOMEM;
1777 goto out_unmount;
1778 }
1779
1780 return 0;
1781
1782 out_filestream_unmount:
1783 xfs_filestream_unmount(mp);
1784 out_free_sb:
1785 xfs_freesb(mp);
1786 out_free_scrub_stats:
1787 xchk_mount_stats_free(mp);
1788 out_free_stats:
1789 free_percpu(mp->m_stats.xs_stats);
1790 out_destroy_inodegc:
1791 xfs_inodegc_free_percpu(mp);
1792 out_destroy_counters:
1793 xfs_destroy_percpu_counters(mp);
1794 out_destroy_workqueues:
1795 xfs_destroy_mount_workqueues(mp);
1796 out_shutdown_devices:
1797 xfs_shutdown_devices(mp);
1798 return error;
1799
1800 out_unmount:
1801 xfs_filestream_unmount(mp);
1802 xfs_unmountfs(mp);
1803 goto out_free_sb;
1804 }
1805
--
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:[~2024-08-09 8:44 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-09 8:43 [mcgrof-next:20240808-large-block-misc 15388/15390] fs/xfs/xfs_super.c:1655:27: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox