Hi Darrick, FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 8b83369ddcb3fb9cab5c1088987ce477565bb630 commit: f4c32e87de7d66074d5612567c5eac7325024428 xfs: fix realtime bitmap/summary file truncation when growing rt volume date: 5 months ago config: mips-randconfig-r034-20210226 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project b889ef4214bc6dc8880fdd4badc0dcd9a3197753) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install mips cross compiling tool for clang build # apt-get install binutils-mips-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4c32e87de7d66074d5612567c5eac7325024428 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout f4c32e87de7d66074d5612567c5eac7325024428 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=mips If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <l...@intel.com> All warnings (new ones prefixed by >>): >> fs/xfs/xfs_rtalloc.c:898:1: warning: stack frame size of 1048 bytes in >> function 'xfs_growfs_rt' [-Wframe-larger-than=] xfs_growfs_rt( ^ 1 warning generated. vim +/xfs_growfs_rt +898 fs/xfs/xfs_rtalloc.c 65eed012d1f2d0 Omar Sandoval 2018-12-21 889 ^1da177e4c3f41 Linus Torvalds 2005-04-16 890 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 891 * Visible (exported) functions. ^1da177e4c3f41 Linus Torvalds 2005-04-16 892 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 893 ^1da177e4c3f41 Linus Torvalds 2005-04-16 894 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 895 * Grow the realtime area of the filesystem. ^1da177e4c3f41 Linus Torvalds 2005-04-16 896 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 897 int ^1da177e4c3f41 Linus Torvalds 2005-04-16 @898 xfs_growfs_rt( ^1da177e4c3f41 Linus Torvalds 2005-04-16 899 xfs_mount_t *mp, /* mount point for filesystem */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 900 xfs_growfs_rt_t *in) /* growfs rt input struct */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 901 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 902 xfs_rtblock_t bmbno; /* bitmap block number */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 903 xfs_buf_t *bp; /* temporary buffer */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 904 int error; /* error return value */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 905 xfs_mount_t *nmp; /* new (fake) mount structure */ d5cf09baced0ef Christoph Hellwig 2014-07-30 906 xfs_rfsblock_t nrblocks; /* new number of realtime blocks */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 907 xfs_extlen_t nrbmblocks; /* new number of rt bitmap blocks */ d5cf09baced0ef Christoph Hellwig 2014-07-30 908 xfs_rtblock_t nrextents; /* new number of realtime extents */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 909 uint8_t nrextslog; /* new log2 of sb_rextents */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 910 xfs_extlen_t nrsumblocks; /* new number of summary blocks */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 911 uint nrsumlevels; /* new rt summary levels */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 912 uint nrsumsize; /* new size of rt summary, bytes */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 913 xfs_sb_t *nsbp; /* new superblock */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 914 xfs_extlen_t rbmblocks; /* current number of rt bitmap blocks */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 915 xfs_extlen_t rsumblocks; /* current number of rt summary blks */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 916 xfs_sb_t *sbp; /* old superblock */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 917 xfs_fsblock_t sumbno; /* summary block number */ 65eed012d1f2d0 Omar Sandoval 2018-12-21 918 uint8_t *rsum_cache; /* old summary cache */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 919 ^1da177e4c3f41 Linus Torvalds 2005-04-16 920 sbp = &mp->m_sb; ^1da177e4c3f41 Linus Torvalds 2005-04-16 921 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 922 * Initial error checking. ^1da177e4c3f41 Linus Torvalds 2005-04-16 923 */ 743bb4650da9e2 sand...@sandeen.net 2008-11-25 924 if (!capable(CAP_SYS_ADMIN)) 2451337dd04390 Dave Chinner 2014-06-25 925 return -EPERM; 73024cf11522c0 Eric Sesterhenn 2006-06-28 926 if (mp->m_rtdev_targp == NULL || mp->m_rbmip == NULL || ^1da177e4c3f41 Linus Torvalds 2005-04-16 927 (nrblocks = in->newblocks) <= sbp->sb_rblocks || ^1da177e4c3f41 Linus Torvalds 2005-04-16 928 (sbp->sb_rblocks && (in->extsize != sbp->sb_rextsize))) 2451337dd04390 Dave Chinner 2014-06-25 929 return -EINVAL; 4cc929ee305c69 Nathan Scott 2007-05-14 930 if ((error = xfs_sb_validate_fsb_count(sbp, nrblocks))) 4cc929ee305c69 Nathan Scott 2007-05-14 931 return error; ^1da177e4c3f41 Linus Torvalds 2005-04-16 932 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 933 * Read in the last block of the device, make sure it exists. ^1da177e4c3f41 Linus Torvalds 2005-04-16 934 */ ba3726742c1712 Dave Chinner 2014-10-02 935 error = xfs_buf_read_uncached(mp->m_rtdev_targp, 4cc929ee305c69 Nathan Scott 2007-05-14 936 XFS_FSB_TO_BB(mp, nrblocks - 1), ba3726742c1712 Dave Chinner 2014-10-02 937 XFS_FSB_TO_BB(mp, 1), 0, &bp, NULL); ba3726742c1712 Dave Chinner 2014-10-02 938 if (error) eab4e63368b4cf Dave Chinner 2012-11-12 939 return error; ^1da177e4c3f41 Linus Torvalds 2005-04-16 940 xfs_buf_relse(bp); 1922c949c59f93 Dave Chinner 2010-09-22 941 ^1da177e4c3f41 Linus Torvalds 2005-04-16 942 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 943 * Calculate new parameters. These are the final values to be reached. ^1da177e4c3f41 Linus Torvalds 2005-04-16 944 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 945 nrextents = nrblocks; ^1da177e4c3f41 Linus Torvalds 2005-04-16 946 do_div(nrextents, in->extsize); 68c3271515f11f Nathan Scott 2006-09-28 947 nrbmblocks = howmany_64(nrextents, NBBY * sbp->sb_blocksize); ^1da177e4c3f41 Linus Torvalds 2005-04-16 948 nrextslog = xfs_highbit32(nrextents); ^1da177e4c3f41 Linus Torvalds 2005-04-16 949 nrsumlevels = nrextslog + 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 950 nrsumsize = (uint)sizeof(xfs_suminfo_t) * nrsumlevels * nrbmblocks; ^1da177e4c3f41 Linus Torvalds 2005-04-16 951 nrsumblocks = XFS_B_TO_FSB(mp, nrsumsize); ^1da177e4c3f41 Linus Torvalds 2005-04-16 952 nrsumsize = XFS_FSB_TO_B(mp, nrsumblocks); ^1da177e4c3f41 Linus Torvalds 2005-04-16 953 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 954 * New summary size can't be more than half the size of ^1da177e4c3f41 Linus Torvalds 2005-04-16 955 * the log. This prevents us from getting a log overflow, ^1da177e4c3f41 Linus Torvalds 2005-04-16 956 * since we'll log basically the whole summary file at once. ^1da177e4c3f41 Linus Torvalds 2005-04-16 957 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 958 if (nrsumblocks > (mp->m_sb.sb_logblocks >> 1)) 2451337dd04390 Dave Chinner 2014-06-25 959 return -EINVAL; ^1da177e4c3f41 Linus Torvalds 2005-04-16 960 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 961 * Get the old block counts for bitmap and summary inodes. ^1da177e4c3f41 Linus Torvalds 2005-04-16 962 * These can't change since other growfs callers are locked out. ^1da177e4c3f41 Linus Torvalds 2005-04-16 963 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 964 rbmblocks = XFS_B_TO_FSB(mp, mp->m_rbmip->i_d.di_size); ^1da177e4c3f41 Linus Torvalds 2005-04-16 965 rsumblocks = XFS_B_TO_FSB(mp, mp->m_rsumip->i_d.di_size); ^1da177e4c3f41 Linus Torvalds 2005-04-16 966 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 967 * Allocate space to the bitmap and summary files, as necessary. ^1da177e4c3f41 Linus Torvalds 2005-04-16 968 */ 1050c71e2925ab Christoph Hellwig 2011-02-13 969 error = xfs_growfs_rt_alloc(mp, rbmblocks, nrbmblocks, mp->m_rbmip); 1050c71e2925ab Christoph Hellwig 2011-02-13 970 if (error) ^1da177e4c3f41 Linus Torvalds 2005-04-16 971 return error; 1050c71e2925ab Christoph Hellwig 2011-02-13 972 error = xfs_growfs_rt_alloc(mp, rsumblocks, nrsumblocks, mp->m_rsumip); 1050c71e2925ab Christoph Hellwig 2011-02-13 973 if (error) ^1da177e4c3f41 Linus Torvalds 2005-04-16 974 return error; 65eed012d1f2d0 Omar Sandoval 2018-12-21 975 65eed012d1f2d0 Omar Sandoval 2018-12-21 976 rsum_cache = mp->m_rsum_cache; 65eed012d1f2d0 Omar Sandoval 2018-12-21 977 if (nrbmblocks != sbp->sb_rbmblocks) 65eed012d1f2d0 Omar Sandoval 2018-12-21 978 xfs_alloc_rsum_cache(mp, nrbmblocks); 65eed012d1f2d0 Omar Sandoval 2018-12-21 979 d432c80e68e3c2 Nathan Scott 2006-09-28 980 /* d432c80e68e3c2 Nathan Scott 2006-09-28 981 * Allocate a new (fake) mount/sb. d432c80e68e3c2 Nathan Scott 2006-09-28 982 */ 707e0ddaf67e89 Tetsuo Handa 2019-08-26 983 nmp = kmem_alloc(sizeof(*nmp), 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 984 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 985 * Loop over the bitmap blocks. ^1da177e4c3f41 Linus Torvalds 2005-04-16 986 * We will do everything one bitmap block at a time. ^1da177e4c3f41 Linus Torvalds 2005-04-16 987 * Skip the current block if it is exactly full. ^1da177e4c3f41 Linus Torvalds 2005-04-16 988 * This also deals with the case where there were no rtextents before. ^1da177e4c3f41 Linus Torvalds 2005-04-16 989 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 990 for (bmbno = sbp->sb_rbmblocks - ^1da177e4c3f41 Linus Torvalds 2005-04-16 991 ((sbp->sb_rextents & ((1 << mp->m_blkbit_log) - 1)) != 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 992 bmbno < nrbmblocks; ^1da177e4c3f41 Linus Torvalds 2005-04-16 993 bmbno++) { 0924b585fc49bf Dave Chinner 2008-11-28 994 xfs_trans_t *tp; 0924b585fc49bf Dave Chinner 2008-11-28 995 ^1da177e4c3f41 Linus Torvalds 2005-04-16 996 *nmp = *mp; ^1da177e4c3f41 Linus Torvalds 2005-04-16 997 nsbp = &nmp->m_sb; ^1da177e4c3f41 Linus Torvalds 2005-04-16 998 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 999 * Calculate new sb and mount fields for this round. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1000 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1001 nsbp->sb_rextsize = in->extsize; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1002 nsbp->sb_rbmblocks = bmbno + 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1003 nsbp->sb_rblocks = ^1da177e4c3f41 Linus Torvalds 2005-04-16 1004 XFS_RTMIN(nrblocks, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1005 nsbp->sb_rbmblocks * NBBY * ^1da177e4c3f41 Linus Torvalds 2005-04-16 1006 nsbp->sb_blocksize * nsbp->sb_rextsize); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1007 nsbp->sb_rextents = nsbp->sb_rblocks; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1008 do_div(nsbp->sb_rextents, nsbp->sb_rextsize); 79071eb0b2f142 David Chinner 2008-08-13 1009 ASSERT(nsbp->sb_rextents != 0); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1010 nsbp->sb_rextslog = xfs_highbit32(nsbp->sb_rextents); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1011 nrsumlevels = nmp->m_rsumlevels = nsbp->sb_rextslog + 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1012 nrsumsize = ^1da177e4c3f41 Linus Torvalds 2005-04-16 1013 (uint)sizeof(xfs_suminfo_t) * nrsumlevels * ^1da177e4c3f41 Linus Torvalds 2005-04-16 1014 nsbp->sb_rbmblocks; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1015 nrsumblocks = XFS_B_TO_FSB(mp, nrsumsize); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1016 nmp->m_rsumsize = nrsumsize = XFS_FSB_TO_B(mp, nrsumblocks); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1017 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1018 * Start a transaction, get the log reservation. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1019 */ 253f4911f297b8 Christoph Hellwig 2016-04-06 1020 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_growrtfree, 0, 0, 0, 253f4911f297b8 Christoph Hellwig 2016-04-06 1021 &tp); 3d3c8b5222b924 Jie Liu 2013-08-12 1022 if (error) 253f4911f297b8 Christoph Hellwig 2016-04-06 1023 break; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1024 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1025 * Lock out other callers by grabbing the bitmap inode lock. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1026 */ 1050c71e2925ab Christoph Hellwig 2011-02-13 1027 xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL); ddc3415aba1cb2 Christoph Hellwig 2011-09-19 1028 xfs_trans_ijoin(tp, mp->m_rbmip, XFS_ILOCK_EXCL); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1029 /* f4c32e87de7d66 Darrick J. Wong 2020-10-07 1030 * Update the bitmap inode's size ondisk and incore. We need f4c32e87de7d66 Darrick J. Wong 2020-10-07 1031 * to update the incore size so that inode inactivation won't f4c32e87de7d66 Darrick J. Wong 2020-10-07 1032 * punch what it thinks are "posteof" blocks. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1033 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1034 mp->m_rbmip->i_d.di_size = ^1da177e4c3f41 Linus Torvalds 2005-04-16 1035 nsbp->sb_rbmblocks * nsbp->sb_blocksize; f4c32e87de7d66 Darrick J. Wong 2020-10-07 1036 i_size_write(VFS_I(mp->m_rbmip), mp->m_rbmip->i_d.di_size); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1037 xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1038 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1039 * Get the summary inode into the transaction. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1040 */ 1050c71e2925ab Christoph Hellwig 2011-02-13 1041 xfs_ilock(mp->m_rsumip, XFS_ILOCK_EXCL); ddc3415aba1cb2 Christoph Hellwig 2011-09-19 1042 xfs_trans_ijoin(tp, mp->m_rsumip, XFS_ILOCK_EXCL); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1043 /* f4c32e87de7d66 Darrick J. Wong 2020-10-07 1044 * Update the summary inode's size. We need to update the f4c32e87de7d66 Darrick J. Wong 2020-10-07 1045 * incore size so that inode inactivation won't punch what it f4c32e87de7d66 Darrick J. Wong 2020-10-07 1046 * thinks are "posteof" blocks. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1047 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1048 mp->m_rsumip->i_d.di_size = nmp->m_rsumsize; f4c32e87de7d66 Darrick J. Wong 2020-10-07 1049 i_size_write(VFS_I(mp->m_rsumip), mp->m_rsumip->i_d.di_size); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1050 xfs_trans_log_inode(tp, mp->m_rsumip, XFS_ILOG_CORE); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1051 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1052 * Copy summary data from old to new sizes. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1053 * Do this when the real size (not block-aligned) changes. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1054 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1055 if (sbp->sb_rbmblocks != nsbp->sb_rbmblocks || ^1da177e4c3f41 Linus Torvalds 2005-04-16 1056 mp->m_rsumlevels != nmp->m_rsumlevels) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1057 error = xfs_rtcopy_summary(mp, nmp, tp); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1058 if (error) 0924b585fc49bf Dave Chinner 2008-11-28 1059 goto error_cancel; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1060 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1061 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1062 * Update superblock fields. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1063 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1064 if (nsbp->sb_rextsize != sbp->sb_rextsize) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1065 xfs_trans_mod_sb(tp, XFS_TRANS_SB_REXTSIZE, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1066 nsbp->sb_rextsize - sbp->sb_rextsize); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1067 if (nsbp->sb_rbmblocks != sbp->sb_rbmblocks) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1068 xfs_trans_mod_sb(tp, XFS_TRANS_SB_RBMBLOCKS, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1069 nsbp->sb_rbmblocks - sbp->sb_rbmblocks); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1070 if (nsbp->sb_rblocks != sbp->sb_rblocks) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1071 xfs_trans_mod_sb(tp, XFS_TRANS_SB_RBLOCKS, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1072 nsbp->sb_rblocks - sbp->sb_rblocks); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1073 if (nsbp->sb_rextents != sbp->sb_rextents) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1074 xfs_trans_mod_sb(tp, XFS_TRANS_SB_REXTENTS, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1075 nsbp->sb_rextents - sbp->sb_rextents); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1076 if (nsbp->sb_rextslog != sbp->sb_rextslog) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1077 xfs_trans_mod_sb(tp, XFS_TRANS_SB_REXTSLOG, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1078 nsbp->sb_rextslog - sbp->sb_rextslog); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1079 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1080 * Free new extent. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1081 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1082 bp = NULL; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1083 error = xfs_rtfree_range(nmp, tp, sbp->sb_rextents, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1084 nsbp->sb_rextents - sbp->sb_rextents, &bp, &sumbno); 0924b585fc49bf Dave Chinner 2008-11-28 1085 if (error) { 0924b585fc49bf Dave Chinner 2008-11-28 1086 error_cancel: 4906e21545814e Christoph Hellwig 2015-06-04 1087 xfs_trans_cancel(tp); d432c80e68e3c2 Nathan Scott 2006-09-28 1088 break; 0924b585fc49bf Dave Chinner 2008-11-28 1089 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1090 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1091 * Mark more blocks free in the superblock. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1092 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1093 xfs_trans_mod_sb(tp, XFS_TRANS_SB_FREXTENTS, ^1da177e4c3f41 Linus Torvalds 2005-04-16 1094 nsbp->sb_rextents - sbp->sb_rextents); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1095 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1096 * Update mp values into the real mp structure. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1097 */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1098 mp->m_rsumlevels = nrsumlevels; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1099 mp->m_rsumsize = nrsumsize; e5720eec0548c0 David Chinner 2008-04-10 1100 70393313dd0b26 Christoph Hellwig 2015-06-04 1101 error = xfs_trans_commit(tp); 0924b585fc49bf Dave Chinner 2008-11-28 1102 if (error) e5720eec0548c0 David Chinner 2008-04-10 1103 break; e5720eec0548c0 David Chinner 2008-04-10 1104 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1105 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1106 /* d432c80e68e3c2 Nathan Scott 2006-09-28 1107 * Free the fake mp structure. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1108 */ f0e2d93c29dc39 Denys Vlasenko 2008-05-19 1109 kmem_free(nmp); d432c80e68e3c2 Nathan Scott 2006-09-28 1110 65eed012d1f2d0 Omar Sandoval 2018-12-21 1111 /* 65eed012d1f2d0 Omar Sandoval 2018-12-21 1112 * If we had to allocate a new rsum_cache, we either need to free the 65eed012d1f2d0 Omar Sandoval 2018-12-21 1113 * old one (if we succeeded) or free the new one and restore the old one 65eed012d1f2d0 Omar Sandoval 2018-12-21 1114 * (if there was an error). 65eed012d1f2d0 Omar Sandoval 2018-12-21 1115 */ 65eed012d1f2d0 Omar Sandoval 2018-12-21 1116 if (rsum_cache != mp->m_rsum_cache) { 65eed012d1f2d0 Omar Sandoval 2018-12-21 1117 if (error) { 65eed012d1f2d0 Omar Sandoval 2018-12-21 1118 kmem_free(mp->m_rsum_cache); 65eed012d1f2d0 Omar Sandoval 2018-12-21 1119 mp->m_rsum_cache = rsum_cache; 65eed012d1f2d0 Omar Sandoval 2018-12-21 1120 } else { 65eed012d1f2d0 Omar Sandoval 2018-12-21 1121 kmem_free(rsum_cache); 65eed012d1f2d0 Omar Sandoval 2018-12-21 1122 } 65eed012d1f2d0 Omar Sandoval 2018-12-21 1123 } 65eed012d1f2d0 Omar Sandoval 2018-12-21 1124 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1125 return error; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1126 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1127 :::::: The code at line 898 was first introduced by commit :::::: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Linux-2.6.12-rc2 :::::: TO: Linus Torvalds <torva...@ppc970.osdl.org> :::::: CC: Linus Torvalds <torva...@ppc970.osdl.org> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
.config.gz
Description: application/gzip