From: kbuild test robot <lkp@intel.com>
To: David Sterba <dsterba@suse.com>
Cc: kbuild-all@lists.01.org, linux-btrfs@vger.kernel.org,
David Sterba <dsterba@suse.com>,
stable@vger.kernel.org
Subject: Re: [PATCH] btrfs: log message when rw remount is attempted with unclean tree-log
Date: Thu, 6 Feb 2020 15:49:03 +0800 [thread overview]
Message-ID: <202002061525.fxDTEuhi%lkp@intel.com> (raw)
In-Reply-To: <20200205161228.24378-1-dsterba@suse.com>
[-- Attachment #1: Type: text/plain, Size: 6839 bytes --]
Hi David,
I love your patch! Yet something to improve:
[auto build test ERROR on kdave/for-next]
[also build test ERROR on v5.5 next-20200206]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/David-Sterba/btrfs-log-message-when-rw-remount-is-attempted-with-unclean-tree-log/20200206-115926
base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
config: x86_64-randconfig-s2-20200206 (attached as .config)
compiler: gcc-5 (Ubuntu 5.5.0-12ubuntu1) 5.5.0 20171010
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from fs/btrfs/delayed-inode.h:17:0,
from fs/btrfs/super.c:30:
fs/btrfs/super.c: In function 'btrfs_remount':
>> fs/btrfs/super.c:1837:15: error: 'f_info' undeclared (first use in this function)
btrfs_warn(f_info,
^
fs/btrfs/ctree.h:3035:15: note: in definition of macro 'btrfs_warn'
btrfs_printk(fs_info, KERN_WARNING fmt, ##args)
^
fs/btrfs/super.c:1837:15: note: each undeclared identifier is reported only once for each function it appears in
btrfs_warn(f_info,
^
fs/btrfs/ctree.h:3035:15: note: in definition of macro 'btrfs_warn'
btrfs_printk(fs_info, KERN_WARNING fmt, ##args)
^
vim +/f_info +1837 fs/btrfs/super.c
1747
1748 static int btrfs_remount(struct super_block *sb, int *flags, char *data)
1749 {
1750 struct btrfs_fs_info *fs_info = btrfs_sb(sb);
1751 struct btrfs_root *root = fs_info->tree_root;
1752 unsigned old_flags = sb->s_flags;
1753 unsigned long old_opts = fs_info->mount_opt;
1754 unsigned long old_compress_type = fs_info->compress_type;
1755 u64 old_max_inline = fs_info->max_inline;
1756 u32 old_thread_pool_size = fs_info->thread_pool_size;
1757 u32 old_metadata_ratio = fs_info->metadata_ratio;
1758 int ret;
1759
1760 sync_filesystem(sb);
1761 btrfs_remount_prepare(fs_info);
1762
1763 if (data) {
1764 void *new_sec_opts = NULL;
1765
1766 ret = security_sb_eat_lsm_opts(data, &new_sec_opts);
1767 if (!ret)
1768 ret = security_sb_remount(sb, new_sec_opts);
1769 security_free_mnt_opts(&new_sec_opts);
1770 if (ret)
1771 goto restore;
1772 }
1773
1774 ret = btrfs_parse_options(fs_info, data, *flags);
1775 if (ret)
1776 goto restore;
1777
1778 btrfs_remount_begin(fs_info, old_opts, *flags);
1779 btrfs_resize_thread_pool(fs_info,
1780 fs_info->thread_pool_size, old_thread_pool_size);
1781
1782 if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb))
1783 goto out;
1784
1785 if (*flags & SB_RDONLY) {
1786 /*
1787 * this also happens on 'umount -rf' or on shutdown, when
1788 * the filesystem is busy.
1789 */
1790 cancel_work_sync(&fs_info->async_reclaim_work);
1791
1792 btrfs_discard_cleanup(fs_info);
1793
1794 /* wait for the uuid_scan task to finish */
1795 down(&fs_info->uuid_tree_rescan_sem);
1796 /* avoid complains from lockdep et al. */
1797 up(&fs_info->uuid_tree_rescan_sem);
1798
1799 sb->s_flags |= SB_RDONLY;
1800
1801 /*
1802 * Setting SB_RDONLY will put the cleaner thread to
1803 * sleep at the next loop if it's already active.
1804 * If it's already asleep, we'll leave unused block
1805 * groups on disk until we're mounted read-write again
1806 * unless we clean them up here.
1807 */
1808 btrfs_delete_unused_bgs(fs_info);
1809
1810 btrfs_dev_replace_suspend_for_unmount(fs_info);
1811 btrfs_scrub_cancel(fs_info);
1812 btrfs_pause_balance(fs_info);
1813
1814 ret = btrfs_commit_super(fs_info);
1815 if (ret)
1816 goto restore;
1817 } else {
1818 if (test_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state)) {
1819 btrfs_err(fs_info,
1820 "Remounting read-write after error is not allowed");
1821 ret = -EINVAL;
1822 goto restore;
1823 }
1824 if (fs_info->fs_devices->rw_devices == 0) {
1825 ret = -EACCES;
1826 goto restore;
1827 }
1828
1829 if (!btrfs_check_rw_degradable(fs_info, NULL)) {
1830 btrfs_warn(fs_info,
1831 "too many missing devices, writable remount is not allowed");
1832 ret = -EACCES;
1833 goto restore;
1834 }
1835
1836 if (btrfs_super_log_root(fs_info->super_copy) != 0) {
> 1837 btrfs_warn(f_info,
1838 "mount required to replay tree-log, cannot remount read-write");
1839 ret = -EINVAL;
1840 goto restore;
1841 }
1842
1843 ret = btrfs_cleanup_fs_roots(fs_info);
1844 if (ret)
1845 goto restore;
1846
1847 /* recover relocation */
1848 mutex_lock(&fs_info->cleaner_mutex);
1849 ret = btrfs_recover_relocation(root);
1850 mutex_unlock(&fs_info->cleaner_mutex);
1851 if (ret)
1852 goto restore;
1853
1854 ret = btrfs_resume_balance_async(fs_info);
1855 if (ret)
1856 goto restore;
1857
1858 ret = btrfs_resume_dev_replace_async(fs_info);
1859 if (ret) {
1860 btrfs_warn(fs_info, "failed to resume dev_replace");
1861 goto restore;
1862 }
1863
1864 btrfs_qgroup_rescan_resume(fs_info);
1865
1866 if (!fs_info->uuid_root) {
1867 btrfs_info(fs_info, "creating UUID tree");
1868 ret = btrfs_create_uuid_tree(fs_info);
1869 if (ret) {
1870 btrfs_warn(fs_info,
1871 "failed to create the UUID tree %d",
1872 ret);
1873 goto restore;
1874 }
1875 }
1876 sb->s_flags &= ~SB_RDONLY;
1877
1878 set_bit(BTRFS_FS_OPEN, &fs_info->flags);
1879 }
1880 out:
1881 wake_up_process(fs_info->transaction_kthread);
1882 btrfs_remount_cleanup(fs_info, old_opts);
1883 return 0;
1884
1885 restore:
1886 /* We've hit an error - don't reset SB_RDONLY */
1887 if (sb_rdonly(sb))
1888 old_flags |= SB_RDONLY;
1889 sb->s_flags = old_flags;
1890 fs_info->mount_opt = old_opts;
1891 fs_info->compress_type = old_compress_type;
1892 fs_info->max_inline = old_max_inline;
1893 btrfs_resize_thread_pool(fs_info,
1894 old_thread_pool_size, fs_info->thread_pool_size);
1895 fs_info->metadata_ratio = old_metadata_ratio;
1896 btrfs_remount_cleanup(fs_info, old_opts);
1897 return ret;
1898 }
1899
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 36497 bytes --]
prev parent reply other threads:[~2020-02-06 7:49 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 16:12 [PATCH] btrfs: log message when rw remount is attempted with unclean tree-log David Sterba
2020-02-06 3:51 ` Anand Jain
2020-02-06 6:16 ` kbuild test robot
2020-02-06 7:49 ` kbuild test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202002061525.fxDTEuhi%lkp@intel.com \
--to=lkp@intel.com \
--cc=dsterba@suse.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-btrfs@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox