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.6-fixes-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux

Pull xfs fixes from Chandan Babu:

- Fix calculation of offset of AG's last block and its length

- Update incore AG block count when shrinking an AG

- Process free extents to busy list in FIFO order

- Make XFS report its i_version as the STATX_CHANGE_COOKIE

* tag 'xfs-6.6-fixes-5' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
xfs: reinstate the old i_version counter as STATX_CHANGE_COOKIE
xfs: Remove duplicate include
xfs: correct calculation for agend and blockcount
xfs: process free extents to busy list in FIFO order
xfs: adjust the incore perag block_count when shrinking

+16 -5
+6
fs/xfs/libxfs/xfs_ag.c
··· 1001 1001 error = -ENOSPC; 1002 1002 goto resv_init_out; 1003 1003 } 1004 + 1005 + /* Update perag geometry */ 1006 + pag->block_count -= delta; 1007 + __xfs_agino_range(pag->pag_mount, pag->block_count, &pag->agino_min, 1008 + &pag->agino_max); 1009 + 1004 1010 xfs_ialloc_log_agi(*tpp, agibp, XFS_AGI_LENGTH); 1005 1011 xfs_alloc_log_agf(*tpp, agfbp, XFS_AGF_LENGTH); 1006 1012 return 0;
-1
fs/xfs/scrub/xfile.c
··· 10 10 #include "xfs_log_format.h" 11 11 #include "xfs_trans_resv.h" 12 12 #include "xfs_mount.h" 13 - #include "xfs_format.h" 14 13 #include "scrub/xfile.h" 15 14 #include "scrub/xfarray.h" 16 15 #include "scrub/scrub.h"
+2 -1
fs/xfs/xfs_extent_busy.c
··· 62 62 rb_link_node(&new->rb_node, parent, rbp); 63 63 rb_insert_color(&new->rb_node, &pag->pagb_tree); 64 64 65 - list_add(&new->list, busy_list); 65 + /* always process discard lists in fifo order */ 66 + list_add_tail(&new->list, busy_list); 66 67 spin_unlock(&pag->pagb_lock); 67 68 } 68 69
+5
fs/xfs/xfs_iops.c
··· 584 584 } 585 585 } 586 586 587 + if ((request_mask & STATX_CHANGE_COOKIE) && IS_I_VERSION(inode)) { 588 + stat->change_cookie = inode_query_iversion(inode); 589 + stat->result_mask |= STATX_CHANGE_COOKIE; 590 + } 591 + 587 592 /* 588 593 * Note: If you add another clause to set an attribute flag, please 589 594 * update attributes_mask below.
+3 -3
fs/xfs/xfs_notify_failure.c
··· 126 126 struct xfs_rmap_irec ri_low = { }; 127 127 struct xfs_rmap_irec ri_high; 128 128 struct xfs_agf *agf; 129 - xfs_agblock_t agend; 130 129 struct xfs_perag *pag; 130 + xfs_agblock_t range_agend; 131 131 132 132 pag = xfs_perag_get(mp, agno); 133 133 error = xfs_alloc_read_agf(pag, tp, 0, &agf_bp); ··· 148 148 ri_high.rm_startblock = XFS_FSB_TO_AGBNO(mp, end_fsbno); 149 149 150 150 agf = agf_bp->b_addr; 151 - agend = min(be32_to_cpu(agf->agf_length), 151 + range_agend = min(be32_to_cpu(agf->agf_length) - 1, 152 152 ri_high.rm_startblock); 153 153 notify.startblock = ri_low.rm_startblock; 154 - notify.blockcount = agend - ri_low.rm_startblock; 154 + notify.blockcount = range_agend + 1 - ri_low.rm_startblock; 155 155 156 156 error = xfs_rmap_query_range(cur, &ri_low, &ri_high, 157 157 xfs_dax_failure_fn, &notify);