From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FAKE_REPLY_C,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B55C4C4338F for ; Mon, 9 Aug 2021 11:32:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9B44E61019 for ; Mon, 9 Aug 2021 11:32:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235079AbhHILdS (ORCPT ); Mon, 9 Aug 2021 07:33:18 -0400 Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:54476 "EHLO mx0b-00069f02.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234991AbhHILdS (ORCPT ); Mon, 9 Aug 2021 07:33:18 -0400 Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 179BQwIc018592; Mon, 9 Aug 2021 11:32:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2021-07-09; bh=MRKcTS8Q6D+1Tq/M6rl2d5MAiZvNej3d0NazFxWLpoU=; b=bXgUKvaEWe7IMTu+iuzDxO4dBiiwxx2hfElbayoIg9EJCx8/FwG9SdI30g7zdJkbGCwf 5lyfMsgZZWRrj6oRFcff702GQUnYiee5gd0C1FNQg7CnjR5eJPwj1SI4aWhI1C9L7cIb O4VnDXhpv0wkI12wJ90XuahW7vPud86a6aE2B6eoG0Hs75q0VEmKKJWRh+sMBFuZwQnE J+Y1Cn67Ifq5roiI3Ehm4vJfYF9AcF3QHs+l4C2oU4W036QPAKHrWcHVms2jjvYUbBrI oCz2xeIuIEDQlzzevZjxjuoCO3fkUTMlxlLik7JqQ1d9bEe7zj+ZuSMYO5O0l8XmmE9a 2g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=date : from : to : cc : subject : message-id : content-type : in-reply-to : mime-version; s=corp-2020-01-29; bh=MRKcTS8Q6D+1Tq/M6rl2d5MAiZvNej3d0NazFxWLpoU=; b=IxhjAOrP4fuJnuZOTSDyHrq/OSadsdCUedGzDRWiUrada/nwJM5DMoeCsdOMTcSMFdnp +w4ZNNL51BnjGjQlwpINRlsTb6O+v6M64PygWTVCV5WRyjCGLKt2bk2ieHZ8gSRowTvs Bf+FxNgOnWJCF0bUHATsP64xDCRA7Jw2iIKfdOaY7ah9I1bcM+24GqZJHW+zZ4ZtXPUE MHLtDVJO0SLd8NazRvANcnZ3S2ZPh0kGHKBPHSfFIvvVnFLEKTJpsHGYh1khXNGiG5pk /w6hO+f65sblxE5z2OaJF5EI1ABmDx1UeNwNLFqI0ZgLGNyrZZvTdmnkFAkrAkBHPLtG nA== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3ab17dr9w9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 09 Aug 2021 11:32:52 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.0.42/8.16.0.42) with SMTP id 179BU6eB021277; Mon, 9 Aug 2021 11:32:51 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2176.outbound.protection.outlook.com [104.47.56.176]) by userp3030.oracle.com with ESMTP id 3a9f9uw50a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 09 Aug 2021 11:32:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MEoBYomJtVpqMWJWycO94g5AOo5nUunoxV+xc1htix2Gu9OMDqKNeP7V3KfXyVL3EUmWztjXHYF4VoT4ZtLS4eYqYCdkzRZ2DhGZ2DsB9Mwzuy8JKjbJScyz0WoGSH4zH++u1uS+t39hEarXibCs/TYSSHl/qK1VjxIkl4G5yuNlFIO2Uv5ozUmx6nw9XW39my0OeXOPLvwgPxnop4ocAnVGmzfHBghYOp0AMcxxJ/DsuA9s05XijSru+LTc+Uu152UNKUjSKGmOr5mFf8bkRBoU3A0CEy+1Q4OXMEEY/tpOrA6od9wzKTTjFur/BAhx/wiWSg9TZ8sRw4O12kiTVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MRKcTS8Q6D+1Tq/M6rl2d5MAiZvNej3d0NazFxWLpoU=; b=QIpyviytUUBS7pw8rkrDZXJaB+b741XzDF4T8ltB1GqkIlKKJbsr6xduuAsO8rMx5qUxRYHoWJkOmiynjYbIE6NHVetBhwnt8J7fQBbBV/Woj+ch5tjMES/wkittifjpmtMulytqb4Ur37GBAkOAP5MYqH2KdQW2JnMw57hRi1bYWPZeKTdyFmAS/hseVyH0yP+Q1qpqJdv2+2mskyTc6dzxogXyqX30tPfcLdyTCsRPcDHFlPbKKfRcl93rj+EdGcbAiC7nzSkAMeSW6zoqypSRbwZxzhMK4E3UIQosN0pLnD0xJIFrp2W4Xxz5hdERsiLYPH44RsHbhJyWXZW5oQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MRKcTS8Q6D+1Tq/M6rl2d5MAiZvNej3d0NazFxWLpoU=; b=fdMyGHLyDUexXpbHqqx5OAPkMJEme1ihFXEuOkX78rAtl5MXBWwMh45zK1XguKw4cVAnyX2AwNXFLUUYpg1MhtDdEqP/rzziWBjCsZ344QbzBz3HzBViXD/tfKGWqdRaPfqn+xdOP6hdfgzYqAurFAbzEGnYfvsynz7FK0JmCrM= Authentication-Results: lists.01.org; dkim=none (message not signed) header.d=none;lists.01.org; dmarc=none action=none header.from=oracle.com; Received: from MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) by CO1PR10MB4449.namprd10.prod.outlook.com (2603:10b6:303:9d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4394.17; Mon, 9 Aug 2021 11:32:48 +0000 Received: from MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268]) by MWHPR1001MB2365.namprd10.prod.outlook.com ([fe80::5820:e42b:73d7:4268%7]) with mapi id 15.20.4394.023; Mon, 9 Aug 2021 11:32:48 +0000 Date: Mon, 9 Aug 2021 14:32:27 +0300 From: Dan Carpenter To: kbuild@lists.01.org, Qu Wenruo , linux-btrfs@vger.kernel.org Cc: lkp@intel.com, kbuild-all@lists.01.org Subject: Re: [PATCH v5 09/11] btrfs: defrag: use defrag_one_cluster() to implement btrfs_defrag_file() Message-ID: <202108070109.1tqb3qPy-lkp@intel.com> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210806081242.257996-10-wqu@suse.com> User-Agent: Mutt/1.9.4 (2018-02-28) X-ClientProxiedBy: JNAP275CA0049.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::12) To MWHPR1001MB2365.namprd10.prod.outlook.com (2603:10b6:301:2d::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from kadam (102.222.70.252) by JNAP275CA0049.ZAFP275.PROD.OUTLOOK.COM (2603:1086:0:4e::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.17 via Frontend Transport; Mon, 9 Aug 2021 11:32:43 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 778698f6-778a-4649-0883-08d95b296a33 X-MS-TrafficTypeDiagnostic: CO1PR10MB4449: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: khdzW5K60ZX+LVSn0zg/2R4pKmjejnBDSzHaZs1DDuZY/3jSfQptgekhoFquo2G91XCqOA40NHnj4/GnTriRIrrD7AE5e25fACZ5xVHb1SifAhTu+t7XTzPem/+jl04sltLknhcIQ/Mv0icSpp1fcLhg8vS2IRpnCl3fTRcf5eiumEtDhtvbsdiAZLt5A/QTIiE4moOuDi+PFa96S6WRJtkpyVFm1p+wqgMpNY1APoGTemtMg/kGSOhy0aaNSNBd7hK4GZVUh4MOUbQIvUtEMtsuWVqqaoCvh4eWlAVHtuZzIWepF3ZlM0zXYe25nZ7o4ZiEv45hH4Np2iK5NmQhvGCJkzOjsoS4jkPdfjoShdFpXAGTd/Te+tfIq69Vxv7bBuYAfRy0ZR+0L67rgLfWw/gNrZmm0amJugbdnSDHW24Q5eBIDv9mKTPRbMF3WTFsGztqb3KR6Hpd5TzFyZ6C3LgkmTQ+ICENszcpFuOpD4AknQbb3Zh2lORUpdpGDoEpgAkBBpodq80HnIFkghpFGoOGpTC+7H7b31zkhcmpCneXSlUsdpPd9yWPXtcGbSEZg6EFLc0YiNCAbUMJFG7NMJji5hYRQG9eafPuIAEQ3G0k6r68mOnjOY9AgcGDE7XXjwnUJwXcuL5LR/expWWWn+Uvr+6eaPoA4ctXmO7+PQkLj3wcWCP8t7zW1pWE3Zw5mqnIP1ff/ePKpASVAfDOwAHdxHNAkmhFt3hRhsK7stra1ge68VHCgBWVlPeWD+u3ZX/UxWL+VxV4T+ssa3dtP/OGoHyrYP3zTUIohJuNDxtaY7VxmjTt9uSWwLmLwTHB X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2365.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(4001150100001)(44832011)(6666004)(6486002)(5660300002)(36756003)(52116002)(38350700002)(4326008)(38100700002)(86362001)(956004)(66556008)(66476007)(316002)(66946007)(26005)(2906002)(9686003)(1076003)(8676002)(8936002)(6496006)(83380400001)(508600001)(966005)(186003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vefbsM085mGuJtfDFO5CHC0uB9BlLF2dXLSJiW+YTwp4m0PQTw/3DaiaAqKu?= =?us-ascii?Q?B86+jpUrwtahU9mYeSQyMY+VtPvEk2cXSeELlq/F4325j1EHon3jvHlRGDQx?= =?us-ascii?Q?cczn9eWqFGT4x/247BKSfuF4brJItXmn8uFuJ3mF2NwhADSVR0DmegTzi5GC?= =?us-ascii?Q?IKAqAeoixj8OKkJMCg0rQMWECcZKf687SvlfsjPNWTtRd5qjovshsPvmC4o7?= =?us-ascii?Q?16Ocz/D9gGXEpl20niGg/ReN6ZMZ9SZkdYVKL2Hg9nDAjkxvCKbWpm5yuIyI?= =?us-ascii?Q?ADkZ5uSHJDzhcbYyiJgCh85whUn9Y86XWQZVU512jrv/YYKwIGzfJh/7mfZy?= =?us-ascii?Q?dR9Z8B6taLstAliYQ37YA7Thww/KsReBs39LI8/S+P0WaqddnfKTZM8wKN8h?= =?us-ascii?Q?LsW2kzEsDwKcmnSJbLvlpmyMOqcj8MRRGlhzF+UNdUUxZw0mCplZjdlIW1EQ?= =?us-ascii?Q?NOECR/ZjEhlKLnNqhPCpOJfgHx8vAOT2cq/uvOj6npJvJQDB5D4x6PQPG2aQ?= =?us-ascii?Q?LMet0sFHwgEK8yGA4Qvgw5x32I+DEdJlVkswnp6QlkmX5lzRa1YFjvvWNahu?= =?us-ascii?Q?FFm9e75G3W8d1XYSbB30YpZFtABuAq1H3jh5dQWHDdNProKaAFHiQEFLDjDw?= =?us-ascii?Q?dgUHnaqQZJ5Zxf42Vfl6vRwy1vostcY/0O5p0ZojpHLEF7twf3gAY3xPd26c?= =?us-ascii?Q?nP2AJoDqWClSjJ9MwmG1EatiSb1Vz2D8eZiHNx5TLu98HdiErQ1EuyfI8Hlz?= =?us-ascii?Q?4PkOl4AdTnSkzQ31rA67/LsoSUb5vTI6CfZgocbjI3V3ZId6WzK1C+5PYhuZ?= =?us-ascii?Q?KhCjijLrvLvh+xCPIKzWYv80KbN96jeyJd0aQ9XqQgDcQGhSQwW569OnrsWr?= =?us-ascii?Q?zB74KQVpZ6gi8FTyzyPTwL12eHEg5OxZNCkzEXfWJjjsbRUGzHNbcIz66QQp?= =?us-ascii?Q?PnkPgW2Znt2A41rlopSrChjG1kcoX0M62L9WjdKsjF16nG/e+q/XuP6SQAqn?= =?us-ascii?Q?ee/3JLkep6BEwQS5GIfgIBrnz6Rac7TNuGJhDAW1heUp36AyJYrD1fAM+Xau?= =?us-ascii?Q?dC3c3Gt2XILBKt8+QjmqU0xknrAuh9oDlJiTDN0gySHbqvn+j9g6DdDM+YE6?= =?us-ascii?Q?gxWrFwZ7XxoRP8Z14d9U1kR0F8PfNhWUK3W4B1RKMYSzdBTU664YfDCez1G9?= =?us-ascii?Q?v66lDrEjRyvWfaG/Qsme59thf4twJnho/tGH2LSysAucI9Xez3RNk3+cW5cq?= =?us-ascii?Q?eXL31zAzgWBAA8OQ/4Lp5oRw4fqR5AvpdZ5JOl8zU6ysCFIG5XBM4+E32HEK?= =?us-ascii?Q?cU0194rSTdwbzunNIGNWtBwP?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 778698f6-778a-4649-0883-08d95b296a33 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2365.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2021 11:32:48.5410 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h0x0oh0hBdSqHMB13bKqjTE2yKT1rVdf1Ffh2QtUbShLY1ftEvpI8Xa/zPGp0l+SUIDCKZ5kVuD5hynvVgLDF6u34sUR7ttARM+yH10EuiU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4449 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=10070 signatures=668682 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2107140000 definitions=main-2108090088 X-Proofpoint-GUID: KJgRobXEi3qzQh8vACIFyoKnqJtzExD_ X-Proofpoint-ORIG-GUID: KJgRobXEi3qzQh8vACIFyoKnqJtzExD_ Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org Hi Qu, 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 config: h8300-randconfig-m031-20210804 (attached as .config) compiler: h8300-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: fs/btrfs/ioctl.c:1869 btrfs_defrag_file() error: uninitialized symbol 'ret'. vim +/ret +1869 fs/btrfs/ioctl.c 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; Can we hit this break statement on the first iteration through the loop? 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 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2346842543175846328==" MIME-Version: 1.0 From: kernel test robot Subject: Re: [PATCH v5 09/11] btrfs: defrag: use defrag_one_cluster() to implement btrfs_defrag_file() Date: Sat, 07 Aug 2021 02:01:11 +0800 Message-ID: <202108070109.1tqb3qPy-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============2346842543175846328== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org In-Reply-To: <20210806081242.257996-10-wqu@suse.com> References: <20210806081242.257996-10-wqu@suse.com> TO: Qu Wenruo TO: linux-btrfs(a)vger.kernel.org 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-20210805] [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-rew= ork-to-support-sector-perfect-defrag/20210806-161501 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for= -next :::::: branch date: 10 hours ago :::::: commit date: 10 hours ago config: h8300-randconfig-m031-20210804 (attached as .config) compiler: h8300-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: fs/btrfs/ioctl.c:1869 btrfs_defrag_file() error: uninitialized symbol 'ret'. Old smatch warnings: fs/btrfs/ioctl.c:816 create_snapshot() warn: '&pending_snapshot->list' not = removed from list fs/btrfs/ioctl.c:1216 defrag_prepare_one_page() warn: should 'index << 12' = be a 64 bit type? fs/btrfs/ioctl.c:1649 defrag_one_range() warn: should 'start_index << 12' b= e a 64 bit type? fs/btrfs/ioctl.c:1677 defrag_one_range() warn: should 'start_index << 12' b= e a 64 bit type? vim +/ret +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: In= ode to be defragged fe90d1614439a8 Qu Wenruo 2021-08-06 1751 * @ra: Read= ahead state. If NULL, one will be allocated@runtime. fe90d1614439a8 Qu Wenruo 2021-08-06 1752 * @range: De= frag 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_defra= g: Max number of sectors to be defragged, if 0, the whole inode fe90d1614439a8 Qu Wenruo 2021-08-06 1755 * will be d= efragged. 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 b= trfs_ioctl_defrag_range_args *range, 4cb5300bc839b8 Chris Mason 2011-05-24 1759 u64 newe= r_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 =3D btrfs_sb(inode->i_sb); d0b928ff1ed56a Qu Wenruo 2021-08-06 1762 unsigned long s= ectors_defragged =3D 0; 151a31b25e5c94 Li Zefan 2011-09-02 1763 u64 isize =3D 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_compres= s =3D range->flags & BTRFS_DEFRAG_RANGE_COMPRESS; fe90d1614439a8 Qu Wenruo 2021-08-06 1767 bool ra_allocat= ed =3D false; d0b928ff1ed56a Qu Wenruo 2021-08-06 1768 int compress_ty= pe =3D BTRFS_COMPRESS_ZLIB; d0b928ff1ed56a Qu Wenruo 2021-08-06 1769 int ret; d0b928ff1ed56a Qu Wenruo 2021-08-06 1770 u32 extent_thre= sh =3D range->extent_thresh; 4cb5300bc839b8 Chris Mason 2011-05-24 1771 = 0abd5b17249ea5 Liu Bo 2013-04-16 1772 if (isize =3D= =3D 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->star= t >=3D 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->com= press_type >=3D BTRFS_NR_COMPRESS_TYPES) 1a419d85a76853 Li Zefan 2010-10-25 1780 return -EINVA= L; 1a419d85a76853 Li Zefan 2010-10-25 1781 if (range->com= press_type) 1a419d85a76853 Li Zefan 2010-10-25 1782 compress_type= =3D 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_thre= sh =3D=3D 0) ee22184b53c823 Byongho Lee 2015-12-15 1786 extent_thresh = =3D SZ_256K; 940100a4a7b78b Chris Mason 2010-03-10 1787 = d0b928ff1ed56a Qu Wenruo 2021-08-06 1788 if (range->star= t + range->len > range->start) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1789 /* Got a speci= fic range */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1790 last_byte =3D = min(isize, range->start + range->len) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1791 } else { d0b928ff1ed56a Qu Wenruo 2021-08-06 1792 /* Defrag unti= l file end */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1793 last_byte =3D = 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 n= ot 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 err= or 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 = =3D true; 63e727ecd238be David Sterba 2017-06-22 1803 ra =3D 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 ra= nge */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1809 cur =3D round_d= own(range->start, fs_info->sectorsize); d0b928ff1ed56a Qu Wenruo 2021-08-06 1810 last_byte =3D r= ound_up(last_byte, fs_info->sectorsize) - 1; 4cb5300bc839b8 Chris Mason 2011-05-24 1811 = d0b928ff1ed56a Qu Wenruo 2021-08-06 1812 while (cur < la= st_byte) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1813 u64 cluster_en= d; 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@page boundary when possible */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1819 cluster_end = =3D (((cur >> PAGE_SHIFT) + d0b928ff1ed56a Qu Wenruo 2021-08-06 1820 (SZ_25= 6K >> PAGE_SHIFT)) << PAGE_SHIFT) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1821 cluster_end = =3D min(cluster_end, last_byte); 940100a4a7b78b Chris Mason 2010-03-10 1822 = 64708539cd23b3 Josef Bacik 2021-02-10 1823 btrfs_inode_lo= ck(inode, 0); eede2bf34f4fa8 Omar Sandoval 2016-11-03 1824 if (IS_SWAPFIL= E(inode)) { eede2bf34f4fa8 Omar Sandoval 2016-11-03 1825 ret =3D -ETXT= BSY; 64708539cd23b3 Josef Bacik 2021-02-10 1826 btrfs_inode_u= nlock(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_u= nlock(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_compres= s) d0b928ff1ed56a Qu Wenruo 2021-08-06 1834 BTRFS_I(inode= )->defrag_compress =3D compress_type; d0b928ff1ed56a Qu Wenruo 2021-08-06 1835 ret =3D 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_def= ragged, max_to_defrag); d0b928ff1ed56a Qu Wenruo 2021-08-06 1839 btrfs_inode_un= lock(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 =3D cluste= r_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_allocate= d) d0b928ff1ed56a Qu Wenruo 2021-08-06 1846 kfree(ra); d0b928ff1ed56a Qu Wenruo 2021-08-06 1847 if (sectors_def= ragged) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1848 /* d0b928ff1ed56a Qu Wenruo 2021-08-06 1849 * We have def= ragged some sectors, for compression case d0b928ff1ed56a Qu Wenruo 2021-08-06 1850 * they need t= o be written back immediately. d0b928ff1ed56a Qu Wenruo 2021-08-06 1851 */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1852 if (range->fla= gs & 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_flus= h(inode->i_mapping); dec8ef90552f7b Filipe Manana 2014-03-01 1857 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1858 if (range->com= press_type =3D=3D 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 =3D=3D 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 =3D sector= s_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_lo= ck(inode, 0); eec63c65dcbeb1 David Sterba 2017-07-17 1866 BTRFS_I(inode)= ->defrag_compress =3D BTRFS_COMPRESS_NONE; 64708539cd23b3 Josef Bacik 2021-02-10 1867 btrfs_inode_un= lock(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/kbuild-all(a)lists.01.org --===============2346842543175846328== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 AgA= --===============2346842543175846328==-- From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============5238669161848936196==" MIME-Version: 1.0 From: Dan Carpenter To: kbuild-all@lists.01.org Subject: Re: [PATCH v5 09/11] btrfs: defrag: use defrag_one_cluster() to implement btrfs_defrag_file() Date: Mon, 09 Aug 2021 14:32:27 +0300 Message-ID: <202108070109.1tqb3qPy-lkp@intel.com> In-Reply-To: <20210806081242.257996-10-wqu@suse.com> List-Id: --===============5238669161848936196== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Qu, url: https://github.com/0day-ci/linux/commits/Qu-Wenruo/btrfs-defrag-rew= ork-to-support-sector-perfect-defrag/20210806-161501 base: https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for= -next config: h8300-randconfig-m031-20210804 (attached as .config) compiler: h8300-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: fs/btrfs/ioctl.c:1869 btrfs_defrag_file() error: uninitialized symbol 'ret'. vim +/ret +1869 fs/btrfs/ioctl.c 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 b= trfs_ioctl_defrag_range_args *range, 4cb5300bc839b8 Chris Mason 2011-05-24 1759 u64 newe= r_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 =3D btrfs_sb(inode->i_sb); d0b928ff1ed56a Qu Wenruo 2021-08-06 1762 unsigned long s= ectors_defragged =3D 0; 151a31b25e5c94 Li Zefan 2011-09-02 1763 u64 isize =3D 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_compres= s =3D range->flags & BTRFS_DEFRAG_RANGE_COMPRESS; fe90d1614439a8 Qu Wenruo 2021-08-06 1767 bool ra_allocat= ed =3D false; d0b928ff1ed56a Qu Wenruo 2021-08-06 1768 int compress_ty= pe =3D BTRFS_COMPRESS_ZLIB; d0b928ff1ed56a Qu Wenruo 2021-08-06 1769 int ret; d0b928ff1ed56a Qu Wenruo 2021-08-06 1770 u32 extent_thre= sh =3D range->extent_thresh; 4cb5300bc839b8 Chris Mason 2011-05-24 1771 = 0abd5b17249ea5 Liu Bo 2013-04-16 1772 if (isize =3D= =3D 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->star= t >=3D 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->com= press_type >=3D BTRFS_NR_COMPRESS_TYPES) 1a419d85a76853 Li Zefan 2010-10-25 1780 return -EINVA= L; 1a419d85a76853 Li Zefan 2010-10-25 1781 if (range->com= press_type) 1a419d85a76853 Li Zefan 2010-10-25 1782 compress_type= =3D 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_thre= sh =3D=3D 0) ee22184b53c823 Byongho Lee 2015-12-15 1786 extent_thresh = =3D SZ_256K; 940100a4a7b78b Chris Mason 2010-03-10 1787 = d0b928ff1ed56a Qu Wenruo 2021-08-06 1788 if (range->star= t + range->len > range->start) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1789 /* Got a speci= fic range */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1790 last_byte =3D = min(isize, range->start + range->len) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1791 } else { d0b928ff1ed56a Qu Wenruo 2021-08-06 1792 /* Defrag unti= l file end */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1793 last_byte =3D = 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 n= ot 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 err= or 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 = =3D true; 63e727ecd238be David Sterba 2017-06-22 1803 ra =3D 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 ra= nge */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1809 cur =3D round_d= own(range->start, fs_info->sectorsize); d0b928ff1ed56a Qu Wenruo 2021-08-06 1810 last_byte =3D r= ound_up(last_byte, fs_info->sectorsize) - 1; 4cb5300bc839b8 Chris Mason 2011-05-24 1811 = d0b928ff1ed56a Qu Wenruo 2021-08-06 1812 while (cur < la= st_byte) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1813 u64 cluster_en= d; 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@page boundary when possible */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1819 cluster_end = =3D (((cur >> PAGE_SHIFT) + d0b928ff1ed56a Qu Wenruo 2021-08-06 1820 (SZ_25= 6K >> PAGE_SHIFT)) << PAGE_SHIFT) - 1; d0b928ff1ed56a Qu Wenruo 2021-08-06 1821 cluster_end = =3D min(cluster_end, last_byte); 940100a4a7b78b Chris Mason 2010-03-10 1822 = 64708539cd23b3 Josef Bacik 2021-02-10 1823 btrfs_inode_lo= ck(inode, 0); eede2bf34f4fa8 Omar Sandoval 2016-11-03 1824 if (IS_SWAPFIL= E(inode)) { eede2bf34f4fa8 Omar Sandoval 2016-11-03 1825 ret =3D -ETXT= BSY; 64708539cd23b3 Josef Bacik 2021-02-10 1826 btrfs_inode_u= nlock(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_u= nlock(inode, 0); 4cb5300bc839b8 Chris Mason 2011-05-24 1831 break; Can we hit this break statement on the first iteration through the loop? 3eaa2885276fd6 Chris Mason 2008-07-24 1832 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1833 if (do_compres= s) d0b928ff1ed56a Qu Wenruo 2021-08-06 1834 BTRFS_I(inode= )->defrag_compress =3D compress_type; d0b928ff1ed56a Qu Wenruo 2021-08-06 1835 ret =3D 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_def= ragged, max_to_defrag); d0b928ff1ed56a Qu Wenruo 2021-08-06 1839 btrfs_inode_un= lock(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 =3D cluste= r_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_allocate= d) d0b928ff1ed56a Qu Wenruo 2021-08-06 1846 kfree(ra); d0b928ff1ed56a Qu Wenruo 2021-08-06 1847 if (sectors_def= ragged) { d0b928ff1ed56a Qu Wenruo 2021-08-06 1848 /* d0b928ff1ed56a Qu Wenruo 2021-08-06 1849 * We have def= ragged some sectors, for compression case d0b928ff1ed56a Qu Wenruo 2021-08-06 1850 * they need t= o be written back immediately. d0b928ff1ed56a Qu Wenruo 2021-08-06 1851 */ d0b928ff1ed56a Qu Wenruo 2021-08-06 1852 if (range->fla= gs & 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_flus= h(inode->i_mapping); dec8ef90552f7b Filipe Manana 2014-03-01 1857 } d0b928ff1ed56a Qu Wenruo 2021-08-06 1858 if (range->com= press_type =3D=3D 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 =3D=3D 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 =3D sector= s_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_lo= ck(inode, 0); eec63c65dcbeb1 David Sterba 2017-07-17 1866 BTRFS_I(inode)= ->defrag_compress =3D BTRFS_COMPRESS_NONE; 64708539cd23b3 Josef Bacik 2021-02-10 1867 btrfs_inode_un= lock(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 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============5238669161848936196==--