CC: [email protected] CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Qu Wenruo <[email protected]> TO: [email protected]
Hi Qu, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on kdave/for-next] [also build test WARNING on v5.14-rc4 next-20210806] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Qu-Wenruo/btrfs-defrag-rework-to-support-sector-perfect-defrag/20210806-161501 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next :::::: branch date: 26 hours ago :::::: commit date: 26 hours ago config: x86_64-randconfig-c001-20210805 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 42b9c2a17a0b63cccf3ac197a82f91b28e53e643) 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 x86_64 cross compiling tool for clang build # apt-get install binutils-x86-64-linux-gnu # https://github.com/0day-ci/linux/commit/d0b928ff1ed56a1ab892be6614fe646d4162c6d3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Qu-Wenruo/btrfs-defrag-rework-to-support-sector-perfect-defrag/20210806-161501 git checkout d0b928ff1ed56a1ab892be6614fe646d4162c6d3 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:350:7: note: Assuming 'sdma0' is equal to field 'buffer_funcs_ring' if ((adev->mman.buffer_funcs_ring == sdma0) || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:350:46: note: Left side of '||' is true if ((adev->mman.buffer_funcs_ring == sdma0) || ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:44: note: The value 2 is assigned to 'i' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:354:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:355:40: note: The right operand of '+' is a garbage value due to array index out of bounds rb_cntl = RREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i]); ^ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu.h:1162:47: note: expanded from macro 'RREG32' #define RREG32(reg) amdgpu_device_rreg(adev, (reg), 0) ^~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:395:38: warning: The right operand of '+' is a garbage value due to array index out of bounds [clang-analyzer-core.UndefinedBinaryOperatorResult] f32_cntl = RREG32(mmSDMA0_F32_CNTL + sdma_offsets[i]); ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:936:9: note: Calling 'sdma_v2_4_hw_init' return sdma_v2_4_hw_init(adev); ^~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:909:6: note: Calling 'sdma_v2_4_start' r = sdma_v2_4_start(adev); ^~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:527:2: note: Calling 'sdma_v2_4_enable' sdma_v2_4_enable(adev, false); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:389:7: note: 'enable' is false if (!enable) { ^~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:389:2: note: Taking true branch if (!enable) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:396:7: note: 'enable' is false if (enable) ^~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:396:3: note: Taking false branch if (enable) ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:396:7: note: 'enable' is false if (enable) ^~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:396:3: note: Taking false branch if (enable) ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:44: note: The value 2 is assigned to 'i' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:14: note: Assuming 'i' is < field 'num_instances' for (i = 0; i < adev->sdma.num_instances; i++) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:394:2: note: Loop condition is true. Entering loop body for (i = 0; i < adev->sdma.num_instances; i++) { ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:395:38: note: The right operand of '+' is a garbage value due to array index out of bounds f32_cntl = RREG32(mmSDMA0_F32_CNTL + sdma_offsets[i]); ^ drivers/gpu/drm/amd/amdgpu/../amdgpu/amdgpu.h:1162:47: note: expanded from macro 'RREG32' #define RREG32(reg) amdgpu_device_rreg(adev, (reg), 0) ^~~ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:1000:3: warning: Value stored to 'tmp' is never read [clang-analyzer-deadcode.DeadStores] tmp = RREG32(mmSRBM_SOFT_RESET); ^ drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c:1000:3: note: Value stored to 'tmp' is never read Suppressed 11 warnings (11 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 13 warnings generated. >> fs/btrfs/ioctl.c:1869:2: warning: Undefined or garbage value returned to >> caller [clang-analyzer-core.uninitialized.UndefReturn] return ret; ^ fs/btrfs/ioctl.c:5133:2: note: Control jumps to 'case 1342215170:' at line 5160 switch (cmd) { ^ fs/btrfs/ioctl.c:5161:10: note: Calling 'btrfs_ioctl_defrag' return btrfs_ioctl_defrag(file, NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:3365:6: note: Assuming 'ret' is 0 if (ret) ^~~ fs/btrfs/ioctl.c:3365:2: note: Taking false branch if (ret) ^ fs/btrfs/ioctl.c:3368:2: note: Taking false branch if (btrfs_root_readonly(root)) { ^ fs/btrfs/ioctl.c:3374:6: note: Assuming the condition is false if (root->fs_info->sectorsize < PAGE_SIZE) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:3374:2: note: Taking false branch if (root->fs_info->sectorsize < PAGE_SIZE) { ^ fs/btrfs/ioctl.c:3379:2: note: Control jumps to 'case 32768:' at line 3387 switch (inode->i_mode & S_IFMT) { ^ fs/btrfs/ioctl.c:3393:7: note: Assuming the condition is false if (!capable(CAP_SYS_ADMIN) && ^~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:3393:31: note: Left side of '&&' is false if (!capable(CAP_SYS_ADMIN) && ^ fs/btrfs/ioctl.c:3400:7: note: Assuming 'range' is non-null if (!range) { ^~~~~~ fs/btrfs/ioctl.c:3400:3: note: Taking false branch if (!range) { ^ fs/btrfs/ioctl.c:3405:7: note: 'argp' is null if (argp) { ^~~~ fs/btrfs/ioctl.c:3405:3: note: Taking false branch if (argp) { ^ fs/btrfs/ioctl.c:3421:9: note: Calling 'btrfs_defrag_file' ret = btrfs_defrag_file(file_inode(file), &file->f_ra, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:1769:2: note: 'ret' declared without an initial value int ret; ^~~~~~~ fs/btrfs/ioctl.c:1772:6: note: Assuming 'isize' is not equal to 0 if (isize == 0) ^~~~~~~~~~ fs/btrfs/ioctl.c:1772:2: note: Taking false branch if (isize == 0) ^ fs/btrfs/ioctl.c:1775:6: note: Assuming 'isize' is > field 'start' if (range->start >= isize) ^~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:1775:2: note: Taking false branch if (range->start >= isize) ^ fs/btrfs/ioctl.c:1778:6: note: Assuming 'do_compress' is false if (do_compress) { ^~~~~~~~~~~ fs/btrfs/ioctl.c:1778:2: note: Taking false branch if (do_compress) { ^ fs/btrfs/ioctl.c:1785:6: note: Assuming 'extent_thresh' is not equal to 0 if (extent_thresh == 0) ^~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:1785:2: note: Taking false branch if (extent_thresh == 0) ^ fs/btrfs/ioctl.c:1788:6: note: Assuming the condition is false if (range->start + range->len > range->start) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:1788:2: note: Taking false branch if (range->start + range->len > range->start) { ^ fs/btrfs/ioctl.c:1801:7: note: 'ra' is non-null if (!ra) { ^~ fs/btrfs/ioctl.c:1801:2: note: Taking false branch if (!ra) { ^ fs/btrfs/ioctl.c:1812:9: note: Assuming 'cur' is >= 'last_byte' while (cur < last_byte) { ^~~~~~~~~~~~~~~ fs/btrfs/ioctl.c:1812:2: note: Loop condition is false. Execution continues on line 1845 while (cur < last_byte) { ^ fs/btrfs/ioctl.c:1845:6: note: 'ra_allocated' is false if (ra_allocated) ^~~~~~~~~~~~ fs/btrfs/ioctl.c:1845:2: note: Taking false branch if (ra_allocated) ^ fs/btrfs/ioctl.c:1847:6: note: 'sectors_defragged' is 0 if (sectors_defragged) { vim +1869 fs/btrfs/ioctl.c bd3c39b7ee16de Qu Wenruo 2021-08-06 1746 fe90d1614439a8 Qu Wenruo 2021-08-06 1747 /* fe90d1614439a8 Qu Wenruo 2021-08-06 1748 * Btrfs entrace for defrag. fe90d1614439a8 Qu Wenruo 2021-08-06 1749 * fe90d1614439a8 Qu Wenruo 2021-08-06 1750 * @inode: Inode to be defragged fe90d1614439a8 Qu Wenruo 2021-08-06 1751 * @ra: Readahead state. If NULL, one will be allocated at runtime. fe90d1614439a8 Qu Wenruo 2021-08-06 1752 * @range: Defrag options including range and flags. fe90d1614439a8 Qu Wenruo 2021-08-06 1753 * @newer_than: Minimal transid to defrag fe90d1614439a8 Qu Wenruo 2021-08-06 1754 * @max_to_defrag: Max number of sectors to be defragged, if 0, the whole inode fe90d1614439a8 Qu Wenruo 2021-08-06 1755 * will be defragged. fe90d1614439a8 Qu Wenruo 2021-08-06 1756 */ fe90d1614439a8 Qu Wenruo 2021-08-06 1757 int btrfs_defrag_file(struct inode *inode, struct file_ra_state *ra, 4cb5300bc839b8 Chris Mason 2011-05-24 1758 struct btrfs_ioctl_defrag_range_args *range, 4cb5300bc839b8 Chris Mason 2011-05-24 1759 u64 newer_than, unsigned long max_to_defrag) 4cb5300bc839b8 Chris Mason 2011-05-24 1760 { 0b246afa62b0cf Jeff Mahoney 2016-06-22 1761 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); d0b928ff1ed56a Qu Wenruo 2021-08-06 1762 unsigned long sectors_defragged = 0; 151a31b25e5c94 Li Zefan 2011-09-02 1763 u64 isize = i_size_read(inode); d0b928ff1ed56a Qu Wenruo 2021-08-06 1764 u64 cur; d0b928ff1ed56a Qu Wenruo 2021-08-06 1765 u64 last_byte; 1e2ef46d89ee41 David Sterba 2017-07-17 1766 bool do_compress = range->flags & BTRFS_DEFRAG_RANGE_COMPRESS; fe90d1614439a8 Qu Wenruo 2021-08-06 1767 bool ra_allocated = false; d0b928ff1ed56a Qu Wenruo 2021-08-06 1768 int compress_type = BTRFS_COMPRESS_ZLIB; d0b928ff1ed56a Qu Wenruo 2021-08-06 1769 int ret; d0b928ff1ed56a Qu Wenruo 2021-08-06 1770 u32 extent_thresh = range->extent_thresh; 4cb5300bc839b8 Chris Mason 2011-05-24 1771 0abd5b17249ea5 Liu Bo 2013-04-16 1772 if (isize == 0) 0abd5b17249ea5 Liu Bo 2013-04-16 1773 return 0; 0abd5b17249ea5 Liu Bo 2013-04-16 1774 0abd5b17249ea5 Liu Bo 2013-04-16 1775 if (range->start >= isize) 0abd5b17249ea5 Liu Bo 2013-04-16 1776 return -EINVAL; 1a419d85a76853 Li Zefan 2010-10-25 1777 1e2ef46d89ee41 David Sterba 2017-07-17 1778 if (do_compress) { ce96b7ffd11e26 Chengguang Xu 2019-10-10 1779 if (range->compress_type >= BTRFS_NR_COMPRESS_TYPES) 1a419d85a76853 Li Zefan 2010-10-25 1780 return -EINVAL; 1a419d85a76853 Li Zefan 2010-10-25 1781 if (range->compress_type) 1a419d85a76853 Li Zefan 2010-10-25 1782 compress_type = range->compress_type; 1a419d85a76853 Li Zefan 2010-10-25 1783 } f46b5a66b3316e Christoph Hellwig 2008-06-11 1784 0abd5b17249ea5 Liu Bo 2013-04-16 1785 if (extent_thresh == 0) ee22184b53c823 Byongho Lee 2015-12-15 1786 extent_thresh = SZ_256K; 940100a4a7b78b Chris Mason 2010-03-10 1787 d0b928ff1ed56a Qu Wenruo 2021-08-06 1788 if (range->start + range->len > range->start) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1789 /* Got a specific range */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1790 last_byte = min(isize, range->start + range->len) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1791 } else { d0b928ff1ed56a Qu Wenruo 2021-08-06 1792 /* Defrag until file end */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1793 last_byte = isize - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1794 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1795 4cb5300bc839b8 Chris Mason 2011-05-24 1796 /* fe90d1614439a8 Qu Wenruo 2021-08-06 1797 * If we were not given a ra, allocate a readahead context. As 0a52d108089f33 David Sterba 2017-06-22 1798 * readahead is just an optimization, defrag will work without it so 0a52d108089f33 David Sterba 2017-06-22 1799 * we don't error out. 4cb5300bc839b8 Chris Mason 2011-05-24 1800 */ fe90d1614439a8 Qu Wenruo 2021-08-06 1801 if (!ra) { fe90d1614439a8 Qu Wenruo 2021-08-06 1802 ra_allocated = true; 63e727ecd238be David Sterba 2017-06-22 1803 ra = kzalloc(sizeof(*ra), GFP_KERNEL); 0a52d108089f33 David Sterba 2017-06-22 1804 if (ra) 4cb5300bc839b8 Chris Mason 2011-05-24 1805 file_ra_state_init(ra, inode->i_mapping); 4cb5300bc839b8 Chris Mason 2011-05-24 1806 } 4cb5300bc839b8 Chris Mason 2011-05-24 1807 d0b928ff1ed56a Qu Wenruo 2021-08-06 1808 /* Align the range */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1809 cur = round_down(range->start, fs_info->sectorsize); d0b928ff1ed56a Qu Wenruo 2021-08-06 1810 last_byte = round_up(last_byte, fs_info->sectorsize) - 1; 4cb5300bc839b8 Chris Mason 2011-05-24 1811 d0b928ff1ed56a Qu Wenruo 2021-08-06 1812 while (cur < last_byte) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1813 u64 cluster_end; 1e701a3292e25a Chris Mason 2010-03-11 1814 d0b928ff1ed56a Qu Wenruo 2021-08-06 1815 /* The cluster size 256K should always be page aligned */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1816 BUILD_BUG_ON(!IS_ALIGNED(CLUSTER_SIZE, PAGE_SIZE)); 008873eafbc77d Li Zefan 2011-09-02 1817 d0b928ff1ed56a Qu Wenruo 2021-08-06 1818 /* We want the cluster ends at page boundary when possible */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1819 cluster_end = (((cur >> PAGE_SHIFT) + d0b928ff1ed56a Qu Wenruo 2021-08-06 1820 (SZ_256K >> PAGE_SHIFT)) << PAGE_SHIFT) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1821 cluster_end = min(cluster_end, last_byte); 940100a4a7b78b Chris Mason 2010-03-10 1822 64708539cd23b3 Josef Bacik 2021-02-10 1823 btrfs_inode_lock(inode, 0); eede2bf34f4fa8 Omar Sandoval 2016-11-03 1824 if (IS_SWAPFILE(inode)) { eede2bf34f4fa8 Omar Sandoval 2016-11-03 1825 ret = -ETXTBSY; 64708539cd23b3 Josef Bacik 2021-02-10 1826 btrfs_inode_unlock(inode, 0); d0b928ff1ed56a Qu Wenruo 2021-08-06 1827 break; ecb8bea87d05fd Liu Bo 2012-03-29 1828 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1829 if (!(inode->i_sb->s_flags & SB_ACTIVE)) { 64708539cd23b3 Josef Bacik 2021-02-10 1830 btrfs_inode_unlock(inode, 0); 4cb5300bc839b8 Chris Mason 2011-05-24 1831 break; 3eaa2885276fd6 Chris Mason 2008-07-24 1832 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1833 if (do_compress) d0b928ff1ed56a Qu Wenruo 2021-08-06 1834 BTRFS_I(inode)->defrag_compress = compress_type; d0b928ff1ed56a Qu Wenruo 2021-08-06 1835 ret = defrag_one_cluster(BTRFS_I(inode), ra, cur, d0b928ff1ed56a Qu Wenruo 2021-08-06 1836 cluster_end + 1 - cur, extent_thresh, d0b928ff1ed56a Qu Wenruo 2021-08-06 1837 newer_than, do_compress, d0b928ff1ed56a Qu Wenruo 2021-08-06 1838 §ors_defragged, max_to_defrag); d0b928ff1ed56a Qu Wenruo 2021-08-06 1839 btrfs_inode_unlock(inode, 0); d0b928ff1ed56a Qu Wenruo 2021-08-06 1840 if (ret < 0) d0b928ff1ed56a Qu Wenruo 2021-08-06 1841 break; d0b928ff1ed56a Qu Wenruo 2021-08-06 1842 cur = cluster_end + 1; 4cb5300bc839b8 Chris Mason 2011-05-24 1843 } f46b5a66b3316e Christoph Hellwig 2008-06-11 1844 d0b928ff1ed56a Qu Wenruo 2021-08-06 1845 if (ra_allocated) d0b928ff1ed56a Qu Wenruo 2021-08-06 1846 kfree(ra); d0b928ff1ed56a Qu Wenruo 2021-08-06 1847 if (sectors_defragged) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1848 /* d0b928ff1ed56a Qu Wenruo 2021-08-06 1849 * We have defragged some sectors, for compression case d0b928ff1ed56a Qu Wenruo 2021-08-06 1850 * they need to be written back immediately. d0b928ff1ed56a Qu Wenruo 2021-08-06 1851 */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1852 if (range->flags & BTRFS_DEFRAG_RANGE_START_IO) { 1e701a3292e25a Chris Mason 2010-03-11 1853 filemap_flush(inode->i_mapping); dec8ef90552f7b Filipe Manana 2014-03-01 1854 if (test_bit(BTRFS_INODE_HAS_ASYNC_EXTENT, dec8ef90552f7b Filipe Manana 2014-03-01 1855 &BTRFS_I(inode)->runtime_flags)) 1e701a3292e25a Chris Mason 2010-03-11 1856 filemap_flush(inode->i_mapping); dec8ef90552f7b Filipe Manana 2014-03-01 1857 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1858 if (range->compress_type == BTRFS_COMPRESS_LZO) 0b246afa62b0cf Jeff Mahoney 2016-06-22 1859 btrfs_set_fs_incompat(fs_info, COMPRESS_LZO); d0b928ff1ed56a Qu Wenruo 2021-08-06 1860 else if (range->compress_type == BTRFS_COMPRESS_ZSTD) 5c1aab1dd5445e Nick Terrell 2017-08-09 1861 btrfs_set_fs_incompat(fs_info, COMPRESS_ZSTD); d0b928ff1ed56a Qu Wenruo 2021-08-06 1862 ret = sectors_defragged; 1a419d85a76853 Li Zefan 2010-10-25 1863 } 1e2ef46d89ee41 David Sterba 2017-07-17 1864 if (do_compress) { 64708539cd23b3 Josef Bacik 2021-02-10 1865 btrfs_inode_lock(inode, 0); eec63c65dcbeb1 David Sterba 2017-07-17 1866 BTRFS_I(inode)->defrag_compress = BTRFS_COMPRESS_NONE; 64708539cd23b3 Josef Bacik 2021-02-10 1867 btrfs_inode_unlock(inode, 0); 633085c79c84c3 Filipe David Borba Manana 2013-08-16 1868 } 940100a4a7b78b Chris Mason 2010-03-10 @1869 return ret; f46b5a66b3316e Christoph Hellwig 2008-06-11 1870 } f46b5a66b3316e Christoph Hellwig 2008-06-11 1871 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
