Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'xfs-6.3-fixes-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux

Pull yet more xfs bug fixes from Darrick Wong:
"The first bugfix addresses a longstanding problem where we use the
wrong file mapping cursors when trying to compute the speculative
preallocation quantity. This has been causing sporadic crashes when
alwayscow mode is engaged.

The other two fixes correct minor problems in more recent changes.

- Fix the new allocator tracepoints because git am mismerged the
changes such that the trace_XXX got rebased to be in function YYY
instead of XXX

- Ensure that the perag AGFL_RESET state is consistent with whatever
we've just read off the disk

- Fix a bug where we used the wrong iext cursor during a write begin"

* tag 'xfs-6.3-fixes-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
xfs: fix mismerged tracepoints
xfs: clear incore AGFL_RESET state if it's not needed
xfs: pass the correct cursor to xfs_iomap_prealloc_size

+10 -5
+6 -4
fs/xfs/libxfs/xfs_alloc.c
··· 3045 3045 pag->pagf_refcount_level = be32_to_cpu(agf->agf_refcount_level); 3046 3046 if (xfs_agfl_needs_reset(pag->pag_mount, agf)) 3047 3047 set_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); 3048 + else 3049 + clear_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); 3048 3050 3049 3051 /* 3050 3052 * Update the in-core allocbt counter. Filter out the rmapbt ··· 3413 3411 args->agno = NULLAGNUMBER; 3414 3412 args->agbno = NULLAGBLOCK; 3415 3413 3416 - trace_xfs_alloc_vextent_first_ag(args); 3414 + trace_xfs_alloc_vextent_start_ag(args); 3417 3415 3418 3416 error = xfs_alloc_vextent_check_args(args, target, &minimum_agno); 3419 3417 if (error) { ··· 3466 3464 args->agno = NULLAGNUMBER; 3467 3465 args->agbno = NULLAGBLOCK; 3468 3466 3469 - trace_xfs_alloc_vextent_start_ag(args); 3467 + trace_xfs_alloc_vextent_first_ag(args); 3470 3468 3471 3469 error = xfs_alloc_vextent_check_args(args, target, &minimum_agno); 3472 3470 if (error) { ··· 3500 3498 args->agno = XFS_FSB_TO_AGNO(mp, target); 3501 3499 args->agbno = XFS_FSB_TO_AGBNO(mp, target); 3502 3500 3503 - trace_xfs_alloc_vextent_near_bno(args); 3501 + trace_xfs_alloc_vextent_exact_bno(args); 3504 3502 3505 3503 error = xfs_alloc_vextent_check_args(args, target, &minimum_agno); 3506 3504 if (error) { ··· 3538 3536 args->agno = XFS_FSB_TO_AGNO(mp, target); 3539 3537 args->agbno = XFS_FSB_TO_AGBNO(mp, target); 3540 3538 3541 - trace_xfs_alloc_vextent_exact_bno(args); 3539 + trace_xfs_alloc_vextent_near_bno(args); 3542 3540 3543 3541 error = xfs_alloc_vextent_check_args(args, target, &minimum_agno); 3544 3542 if (error) {
+4 -1
fs/xfs/xfs_iomap.c
··· 1090 1090 */ 1091 1091 if (xfs_has_allocsize(mp)) 1092 1092 prealloc_blocks = mp->m_allocsize_blocks; 1093 - else 1093 + else if (allocfork == XFS_DATA_FORK) 1094 1094 prealloc_blocks = xfs_iomap_prealloc_size(ip, allocfork, 1095 1095 offset, count, &icur); 1096 + else 1097 + prealloc_blocks = xfs_iomap_prealloc_size(ip, allocfork, 1098 + offset, count, &ccur); 1096 1099 if (prealloc_blocks) { 1097 1100 xfs_extlen_t align; 1098 1101 xfs_off_t end_offset;