On Tue, Apr 26, 2022 at 09:17:14AM +1000, Dave Chinner wrote: > Hi folks, > > I just pushed out a new for-next branch for the XFS tree. It > contains: > > - pending fixes for 5.18 > - various miscellaneous fixes > - xlog_write() rework > - conversions to unsigned for trace_printk flags > - large on-disk extent counts > > This all passes my local regression testing, though further smoke > testing in different environments would be appreaciated. > > I haven't pulled in fixes from late last week yet - I'll work > through those in the next couple of days to get them into the tree > as well. > > If I've missed anything you were expecting to see in this update, > let me know and I'll get them sorted for the next update. Hmm. I saw the following crash on an arm64 VM with 64k page size and an 8k blocksize: run fstests xfs/502 at 2022-04-26 20:54:15 spectre-v4 mitigation disabled by command-line option XFS (sda2): Mounting V5 Filesystem XFS (sda2): Ending clean mount XFS (sda3): Mounting V5 Filesystem XFS (sda3): Ending clean mount XFS (sda3): Quotacheck needed: Please wait. XFS (sda3): Quotacheck: Done. XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS (sda3): Injecting error (false) at file fs/xfs/xfs_inode.c, line 1876, on filesystem "sda3" XFS: Assertion failed: IS_ALIGNED((unsigned long)lv->lv_buf, sizeof(uint64_t)), file: fs/xfs/xfs_log_cil.c, line: 431 ------------[ cut here ]------------ WARNING: CPU: 1 PID: 3168300 at fs/xfs/xfs_message.c:112 assfail+0x44/0x54 [xfs] Modules linked in: xfs dm_delay dm_zero dm_flakey dm_snapshot dm_thin_pool dm_persistent_data dm_bio_prison dm_bufio libcrc32c xt_REDIRECT iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 rputh_rpcgss xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip6table_filter ip6_tables bfq iptable_filter crct10dif_ce sch_fq_codel efivarfs ip_tables x_tables overlay nfsv4 [last unloaded: xfs] CPU: 1 PID: 3168300 Comm: t_open_tmpfiles Not tainted 5.17.0-xfsa #5.17.0 0288cc936a4dc1878aaf6a4c6fa6235f949bf1e9 Hardware name: QEMU KVM Virtual Machine, BIOS 1.5.1 06/16/2021 pstate: 60401005 (nZCv daif +PAN -UAO -TCO -DIT +SSBS BTYPE=--) pc : assfail+0x44/0x54 [xfs] lr : assfail+0x34/0x54 [xfs] sp : fffffe00213ef8b0 x29: fffffe00213ef8b0 x28: 0000000000000000 x27: fffffc0102ce3c00 x26: fffffc013c2bbeb0 x25: fffffc01830d8000 x24: fffffc01bc0d4f70 x23: fffffc01825a41da x22: fffffc01bc0d5020 x21: fffffe00015bf0b8 x20: fffffc006023c000 x19: fffffc0102ce3c00 x18: 0000000000000030 x17: 7a6973202c667562 x16: 5f766c3e2d766c29 x15: 676e6f6c2064656e x14: 6769736e75282844 x13: 313334203a656e69 x12: 6c202c632e6c6963 x11: fffffe00213ef7d0 x10: fffffe00015bb9d8 x9 : fffffe00815bb9d7 x8 : 000000000000000a x7 : 00000000ffffffc0 x6 : 0000000000000021 x5 : fffffe00015bb9d9 x4 : 00000000ffffffca x3 : 0000000000000000 x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000 Call trace: assfail+0x44/0x54 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xlog_cil_commit+0x328/0x9b0 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] __xfs_trans_commit+0xe4/0x3a0 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_trans_commit+0x20/0x30 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_create_tmpfile+0x1ec/0x270 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_generic_create+0x324/0x390 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_vn_tmpfile+0x24/0x30 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] vfs_tmpfile+0xbc/0x160 path_openat+0x9c0/0xeb0 do_filp_open+0x8c/0x13c do_sys_openat2+0xbc/0x170 __arm64_sys_openat+0x70/0xbc invoke_syscall.constprop.0+0x58/0xf0 do_el0_svc+0x5c/0x160 el0_svc+0x30/0x15c el0t_64_sync_handler+0x1a8/0x1b0 el0t_64_sync+0x1a0/0x1a4 ---[ end trace 0000000000000000 ]--- Unable to handle kernel paging request at virtual address 9ac7c01eb06874e8 Mem abort info: ESR = 0x96000004 EC = 0x25: DABT (current EL), IL = 32 bits SET = 0, FnV = 0 EA = 0, S1PTW = 0 FSC = 0x04: level 0 translation fault Data abort info: ISV = 0, ISS = 0x00000004 CM = 0, WnR = 0 [9ac7c01eb06874e8] address between user and kernel address ranges Internal error: Oops: 96000004 [#1] PREEMPT SMP Dumping ftrace buffer: (ftrace buffer empty) Modules linked in: xfs dm_delay dm_zero dm_flakey dm_snapshot dm_thin_pool dm_persistent_data dm_bio_prison dm_bufio libcrc32c xt_REDIRECT iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 ip6t_REJECT nf_reject_ipv6 ipt_REJECT nf_reject_ipv4 rputh_rpcgss xt_tcpudp ip_set_hash_ip ip_set_hash_net xt_set ip_set_hash_mac ip6table_filter ip6_tables bfq iptable_filter crct10dif_ce sch_fq_codel efivarfs ip_tables x_tables overlay nfsv4 [last unloaded: xfs] CPU: 1 PID: 3168300 Comm: t_open_tmpfiles Tainted: G W 5.17.0-xfsa #5.17.0 0288cc936a4dc1878aaf6a4c6fa6235f949bf1e9 Hardware name: QEMU KVM Virtual Machine, BIOS 1.5.1 06/16/2021 pstate: a0401005 (NzCv daif +PAN -UAO -TCO -DIT +SSBS BTYPE=--) pc : __kmalloc+0x120/0x3f0 lr : __kmalloc+0xe8/0x3f0 sp : fffffe00213ef840 x29: fffffe00213ef840 x28: 0000000000000002 x27: fffffe0008fe6000 x26: fffffc00e8740000 x25: fffffe00090e9000 x24: fffffe0001523c44 x23: 0000000000000150 x22: 00000000000128c0 x21: 0000000000000000 x20: 9ac7c01eb06874e8 x19: fffffc00e0010400 x18: 0000000000000000 x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000 x14: 0000000000000000 x13: 0000f0ffffffffff x12: 0000000000000040 x11: fffffc0133b5c678 x10: fffffc0133b5c67a x9 : fffffe0008294814 x8 : 0000000000000001 x7 : fffffe01f68d0000 x6 : 8d4857517c5941da x5 : 00000000019ff6ec x4 : 0000000000000100 x3 : 0000000000000000 x2 : e87468b01ec0c79a x1 : 0000000003a724a9 x0 : 9ac7c01eb06873e8 Call trace: __kmalloc+0x120/0x3f0 xlog_cil_commit+0x144/0x9b0 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] __xfs_trans_commit+0xe4/0x3a0 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_trans_commit+0x20/0x30 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_create_tmpfile+0x1ec/0x270 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_generic_create+0x324/0x390 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] xfs_vn_tmpfile+0x24/0x30 [xfs afa05b7bcc3355e0f6d54fdf0bba6e6ddd5eafff] vfs_tmpfile+0xbc/0x160 path_openat+0x9c0/0xeb0 do_filp_open+0x8c/0x13c do_sys_openat2+0xbc/0x170 __arm64_sys_openat+0x70/0xbc invoke_syscall.constprop.0+0x58/0xf0 do_el0_svc+0x5c/0x160 el0_svc+0x30/0x15c el0t_64_sync_handler+0x1a8/0x1b0 el0t_64_sync+0x1a0/0x1a4 Code: f9405e66 8b040014 dac00e82 b9400b43 (f8646814) Not sure what's going on there, but I'll add it to the list of things to dig into. --D > > Cheers, > > Dave. > > --------------------------------------------------------------- > > Head commit: > > a44a027a8b2a Merge tag 'large-extent-counters-v9' of https://github.com/chandanr/linux into xfs-5.19-for-next > > ---------------------------------------------------------------- > Chandan Babu R (19): > xfs: Move extent count limits to xfs_format.h > xfs: Define max extent length based on on-disk format definition > xfs: Introduce xfs_iext_max_nextents() helper > xfs: Use xfs_extnum_t instead of basic data types > xfs: Introduce xfs_dfork_nextents() helper > xfs: Use basic types to define xfs_log_dinode's di_nextents and di_anextents > xfs: Promote xfs_extnum_t and xfs_aextnum_t to 64 and 32-bits respectively > xfs: Introduce XFS_SB_FEAT_INCOMPAT_NREXT64 and associated per-fs feature bit > xfs: Introduce XFS_FSOP_GEOM_FLAGS_NREXT64 > xfs: Introduce XFS_DIFLAG2_NREXT64 and associated helpers > xfs: Use uint64_t to count maximum blocks that can be used by BMBT > xfs: Introduce macros to represent new maximum extent counts for data/attr forks > xfs: Replace numbered inode recovery error messages with descriptive ones > xfs: Introduce per-inode 64-bit extent counters > xfs: Directory's data fork extent counter can never overflow > xfs: Conditionally upgrade existing inodes to use large extent counters > xfs: Decouple XFS_IBULK flags from XFS_IWALK flags > xfs: Enable bulkstat ioctl to support 64-bit per-inode extent counters > xfs: Add XFS_SB_FEAT_INCOMPAT_NREXT64 to the list of supported flags > > Christoph Hellwig (2): > xfs: change the type of ic_datap > xfs: remove xlog_verify_dest_ptr > > Darrick J. Wong (3): > xfs: pass explicit mount pointer to rtalloc query functions > xfs: recalculate free rt extents after log recovery > xfs: use a separate frextents counter for rt extent reservations > > Dave Chinner (36): > xfs: convert buffer flags to unsigned. > xfs: reorder iunlink remove operation in xfs_ifree > xfs: factor out the CIL transaction header building > xfs: only CIL pushes require a start record > xfs: embed the xlog_op_header in the unmount record > xfs: embed the xlog_op_header in the commit record > xfs: log tickets don't need log client id > xfs: move log iovec alignment to preparation function > xfs: reserve space and initialise xlog_op_header in item formatting > xfs: log ticket region debug is largely useless > xfs: pass lv chain length into xlog_write() > xfs: introduce xlog_write_full() > xfs: introduce xlog_write_partial() > xfs: xlog_write() no longer needs contwr state > xfs: xlog_write() doesn't need optype anymore > xfs: CIL context doesn't need to count iovecs > xfs: convert attr type flags to unsigned. > xfs: convert scrub type flags to unsigned. > xfs: convert bmap extent type flags to unsigned. > xfs: convert bmapi flags to unsigned. > xfs: convert AGF log flags to unsigned. > xfs: convert AGI log flags to unsigned. > xfs: convert btree buffer log flags to unsigned. > xfs: convert buffer log item flags to unsigned. > xfs: convert da btree operations flags to unsigned. > xfs: convert dquot flags to unsigned. > xfs: convert log item tracepoint flags to unsigned. > xfs: convert inode lock flags to unsigned. > xfs: convert ptag flags to unsigned. > xfs: convert quota options flags to unsigned. > xfs: convert shutdown reasons to unsigned. > xfs: convert log ticket and iclog flags to unsigned. > Merge branch 'guilt/5.19-miscellaneous' into xfs-5.19-for-next > Merge branch 'guilt/xfs-unsigned-flags-5.18' into xfs-5.19-for-next > Merge branch 'guilt/xlog-write-rework' into xfs-5.19-for-next > Merge tag 'large-extent-counters-v9' of https://github.com/chandanr/linux into xfs-5.19-for-next > > Jonathan Lassoff (2): > xfs: Simplify XFS logging methods. > xfs: Add XFS messages to printk index > > Kaixu Xia (1): > xfs: simplify local variable assignment in file write code > > Matthew Wilcox (Oracle) (1): > xfs: Use generic_file_open() > > Tiezhu Yang (1): > MAINTAINERS: update IOMAP FILESYSTEM LIBRARY and XFS FILESYSTEM > > MAINTAINERS | 3 - > fs/xfs/libxfs/xfs_alloc.c | 12 +- > fs/xfs/libxfs/xfs_alloc.h | 2 +- > fs/xfs/libxfs/xfs_attr.c | 3 + > fs/xfs/libxfs/xfs_bmap.c | 145 +++++++++----------- > fs/xfs/libxfs/xfs_bmap.h | 58 ++++---- > fs/xfs/libxfs/xfs_bmap_btree.c | 9 +- > fs/xfs/libxfs/xfs_btree.c | 10 +- > fs/xfs/libxfs/xfs_btree.h | 26 ++-- > fs/xfs/libxfs/xfs_da_btree.h | 17 +-- > fs/xfs/libxfs/xfs_da_format.h | 9 +- > fs/xfs/libxfs/xfs_dir2.c | 8 ++ > fs/xfs/libxfs/xfs_format.h | 180 ++++++++++++++++++------- > fs/xfs/libxfs/xfs_fs.h | 41 ++++-- > fs/xfs/libxfs/xfs_ialloc.c | 8 +- > fs/xfs/libxfs/xfs_ialloc.h | 2 +- > fs/xfs/libxfs/xfs_inode_buf.c | 83 +++++++++--- > fs/xfs/libxfs/xfs_inode_fork.c | 39 +++++- > fs/xfs/libxfs/xfs_inode_fork.h | 76 +++++++++-- > fs/xfs/libxfs/xfs_log_format.h | 34 ++++- > fs/xfs/libxfs/xfs_quota_defs.h | 49 ++++--- > fs/xfs/libxfs/xfs_rtbitmap.c | 9 +- > fs/xfs/libxfs/xfs_sb.c | 10 ++ > fs/xfs/libxfs/xfs_trans_resv.c | 11 +- > fs/xfs/libxfs/xfs_types.h | 11 +- > fs/xfs/scrub/bmap.c | 2 +- > fs/xfs/scrub/inode.c | 20 +-- > fs/xfs/scrub/rtbitmap.c | 9 +- > fs/xfs/xfs_bmap_item.c | 2 + > fs/xfs/xfs_bmap_util.c | 27 +++- > fs/xfs/xfs_buf.c | 6 +- > fs/xfs/xfs_buf.h | 42 +++--- > fs/xfs/xfs_buf_item.h | 24 ++-- > fs/xfs/xfs_dquot.c | 3 + > fs/xfs/xfs_error.h | 20 +-- > fs/xfs/xfs_file.c | 24 ++-- > fs/xfs/xfs_fsmap.c | 6 +- > fs/xfs/xfs_fsops.c | 7 +- > fs/xfs/xfs_icache.c | 9 +- > fs/xfs/xfs_inode.c | 104 ++++----------- > fs/xfs/xfs_inode.h | 29 ++-- > fs/xfs/xfs_inode_item.c | 23 +++- > fs/xfs/xfs_inode_item_recover.c | 141 ++++++++++++++------ > fs/xfs/xfs_ioctl.c | 3 + > fs/xfs/xfs_iomap.c | 33 +++-- > fs/xfs/xfs_itable.c | 15 ++- > fs/xfs/xfs_itable.h | 5 +- > fs/xfs/xfs_iwalk.h | 2 +- > fs/xfs/xfs_log.c | 766 +++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------- > fs/xfs/xfs_log.h | 57 +++----- > fs/xfs/xfs_log_cil.c | 169 ++++++++++++++++-------- > fs/xfs/xfs_log_priv.h | 55 ++------ > fs/xfs/xfs_message.c | 58 ++++---- > fs/xfs/xfs_message.h | 55 +++++--- > fs/xfs/xfs_mount.c | 91 +++++++------ > fs/xfs/xfs_mount.h | 32 +++-- > fs/xfs/xfs_reflink.c | 5 + > fs/xfs/xfs_rtalloc.c | 41 ++++++ > fs/xfs/xfs_rtalloc.h | 9 +- > fs/xfs/xfs_super.c | 18 ++- > fs/xfs/xfs_symlink.c | 5 - > fs/xfs/xfs_trace.h | 28 +--- > fs/xfs/xfs_trans.c | 49 +++++-- > fs/xfs/xfs_trans.h | 10 +- > 64 files changed, 1585 insertions(+), 1274 deletions(-) > > -- > Dave Chinner > david@xxxxxxxxxxxxx