From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934439AbcIFMyO (ORCPT ); Tue, 6 Sep 2016 08:54:14 -0400 Received: from mx0b-00082601.pphosted.com ([67.231.153.30]:38516 "EHLO mx0a-00082601.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933444AbcIFMyL (ORCPT ); Tue, 6 Sep 2016 08:54:11 -0400 Subject: Re: [PATCH] btrfs: let btrfs_delete_unused_bgs() to clean relocated bgs To: Naohiro Aota , "linux-btrfs@vger.kernel.org" References: <1472802392-10851-1-git-send-email-naohiro.aota@hgst.com> <1473049955.14093.37.camel@hgst.com> CC: "linux-kernel@vger.kernel.org" , "dsterba@suse.com" , "clm@fb.com" From: Josef Bacik Message-ID: <698d961a-23a5-bb75-b220-8d9cd5658873@fb.com> Date: Tue, 6 Sep 2016 08:52:57 -0400 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 MIME-Version: 1.0 In-Reply-To: <1473049955.14093.37.camel@hgst.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [2620:10d:c091:180::968f] X-ClientProxiedBy: BN6PR19CA0046.namprd19.prod.outlook.com (10.173.148.160) To DM5PR15MB1324.namprd15.prod.outlook.com (10.173.210.14) X-MS-Office365-Filtering-Correlation-Id: 50fab778-4c88-495f-7d9b-08d3d654bccb X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1324;2:zEzYS4yyg/MjPOzNRmsW4CNJh458MbeiRWaBku7SxdohhRF0NHwpGh1E+dIcjag+RnVUUsCV+oH0L3ajkwBOUK5IT9GgC/y6elc2C6kxToRUIBuYM4mzRP20jhl+5q++IK3gColbvgAfNvLvJpgI1RJ4Pha9EQyL++3yy1Yq5sQk6JvKZEi8wMpnP6kn//t7;3:MUwXCcyCZ4JEnS+KJDdogwQ4pU2fNlneXwtsHWmehieMLuK+H6eXAVjcTJeV/B1oVzktV7HmY/d+mknXS+P0SoDRBKFPLZWc43XSV8I1ZvvDkVT0eQnlbo4onyQPSiFk X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM5PR15MB1324; X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1324;25:UtNDWORUlTPrHXm14G7yvNI+tZNx0uX/1VM5TH1zmhIz7w4yRHKn9jamNzmOdszw7xcqGQue73OrHyUSLQMW2yk8H6aM5dgaqiFsbHn/6f8Di6tJUy3yPrweGFtnGgHnDh478BwuqfTHSkvG8KKYrIV88kXdExEia+rR7KW/iZDvmUy8kMAgCIZV0nFGqCBhCdIaGqEauOjgZgxgD1AM66ClAvbPX2r8X/fOsZfA1ffAw5Te/qL+nUqDKBNvpmVTvnnzTXYPmFdDQKEylaHUl9plotAlFg44yf+74XFcFK4l5LPUUz0BBCgpiyKi59Z3dXgAoVp3cJMI+UuAIYF+NeCp0BExTwE/eNEDLXFilOBwR1Xa6bB2ifpzDhTL41eAvNkbrDrMo95JVwlLGXT6fhE1YO+wckyddHZopp/vLegMY+4+ToH/fcQu8tLwIRFJcvv5lKfCiDvBcusZkMe9UjgUQQFA3sUh8LtnGZE9wym2/TDL4gny3rLE8gjNCB7NSVpyyuUcE45TlKJgmbhwCBRlf+h3hf0S1PQMCqdieArkKJETAsyQSz7BoCpolbQ/VpWE1eNH4nggwjC9TQufeE+x8HSq+zspRpDWcB9KQDlJLpkV8iDcwoOmidBH0YQN2NyzuWdMBitfFuBl3IjwZtTDpA6CnzT/Yk9d4XvRqUqU29wN+RC3AxUl/+kQoA6wGZg9Mj05Ew/JqD0UYFAHww==;31:Mr27RWTN6DXMG3AUy+3P+QbxL7Kg3qcEMY1kwsMHkXXj1O7VnK8ORGuHaNS2Ls8PJQuIaYGkmTrIo48BaEieO6sPNVSRLeafkW0Ism5LdspdshyrLq9GQp9Z1+3WLMS21sHFi4ofsI+3fhjhs+25xj7+HD9hgNVCU+KXS6mHx90dtkIFq0mgVqyYceFiQH7en3D1bm04urF/v7XYD6LJ3l0r4inpPdXrVGAey9aLDao= X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1324;20:uxbtPSxQTFD5hGcjfohS81JeNek/zZUfFPukJoITvmLUx3/A+qZoC7Guoehz9tEaGTfCNqWhRYPeqex4c/aCLjB8nstYoi2MnUErwTa2Y6ATBV7fSCCBQl32kkbjwXoICN/sbXSeoVjioBwC8XKqfixxgeqyB3RkvZ8BdWLDiIg=;4:Oq/UJI4wZrn2TkToC/+aStlUtCC6zORVahJ1nKeVZd3ZD/6XBrgJR6Fxf5+Ov8FUOp7zgP6AKWbkJMMteoLWQ7LvQCgYbV6sF8koXx2yEYdMuZpPvDFaSJOGcbdX5izcU7K8yENK8hzZSRM3BEonCLf9SM7gONjeMi70p7mkBbiqNcKVJLvXHHvqItTbmB+7ps5tvvcwMipVlaRxvmrIdACHN5ZH/Fp415QjqJyC4mJxItUzNNINWAFU6os2WVgcWohNYXjFSzhkKPZuMpZFuNJMQs4HCo6rvBljfVaZaBO3xl+YNHbvy7mOp5UTr7Qa367IQvMsISWg4mRoeBXyAPEaqmTQUAxXFT2Uvg7e0TppG487XcImd50ufHk+j70HGKlQkHtCvKTgrzW7/SWg7LlYm1HGyh+gTvKBLQL01JDUKj/ul8oPuMHVW5D/hYO2 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(67672495146484); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:DM5PR15MB1324;BCL:0;PCL:0;RULEID:;SRVR:DM5PR15MB1324; X-Forefront-PRVS: 0057EE387C X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6069001)(7916002)(199003)(377424004)(377454003)(24454002)(189002)(64126003)(23676002)(6116002)(31686004)(19580395003)(31696002)(92566002)(68736007)(86362001)(586003)(2870700001)(101416001)(4326007)(2906002)(19580405001)(50466002)(551934003)(7736002)(77096005)(7846002)(36756003)(50986999)(54356999)(76176999)(42186005)(81166006)(81156014)(8676002)(33646002)(2950100001)(65826007)(5660300001)(97736004)(2501003)(5001770100001)(4001350100001)(105586002)(305945005)(106356001)(65956001)(83506001)(65806001)(47776003)(189998001)(3826002);DIR:OUT;SFP:1102;SCL:1;SRVR:DM5PR15MB1324;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjE1TUIxMzI0OzIzOk5rMi9oUnl0Y1MvVEJaRnJKdlBWUzZvZDJY?= =?utf-8?B?d1pLRGx3cEc0aWh1VWU1a0xiZjZQUGhvU1lNNml1Y1NhWDgvSHI1TmpTV1Y1?= =?utf-8?B?M0lSOG4zRmtjVUJOSFVYTXpnMFV4QnlybnRjRzh1TGVzT0J2TUZQYlNlV040?= =?utf-8?B?czlzNXdxVFM3TzlyZHN3ZGZRTnNVZkpqeWY0SHIyMkkySjcwUGh3TUl0dDQ5?= =?utf-8?B?Q3MzRC8vcDA4dzZHNDRVeVV4Szd4VDFvZDNOOWVZbXFRUE4rN0c1KzcrNDVT?= =?utf-8?B?ckdJVURJRDJabXI0UE1BUHIxbXoxTXFKcU15MUxGWDd2N0tMQlNPcGpTUlkx?= =?utf-8?B?Szg0aUFUb01FYjZockxIeGFBQkFScUhhM1E4Mkc1ZVZuZWhMaVJqczl0UUR1?= =?utf-8?B?MFJ4ZUFWUDFQTUFmRzJZcUQ4T3UyODc3L0M3L2RVQU80L1RnZml5V25EQTBO?= =?utf-8?B?bTBmU2lDTXZRSkdOZkczbnBZRkVtMEZZclZHbU9LTFFZRlMyYURkZXpiUmta?= =?utf-8?B?Q21MdTF4bXREbTdQaGVnL29pNkI0dzA2eVBMOGtSVTN4eDFSUkZ4ZU51TktH?= =?utf-8?B?bnlKUTZoV29SaFJWRWxOU25HRUEvMFlzcWMxN2lRQkhDdkFnM0VOaS9nSGdH?= =?utf-8?B?bVduQ1JEWmtmaTM4N2NOcm12aHFTdllWcGZGd2xjb0pqMDFYbit0aDJzdGh3?= =?utf-8?B?UUcxSFd5bm5OUi9nZkcvYkt2VVZXSVR0VGZ4d3lJRGdHU1o2ZkppM1RhNjV3?= =?utf-8?B?bFRXcVgxaHhaakZNSWpuRFZ0MmRlNEdFekdvSk5nUS9SQXZSZTZ0WkZFcHRK?= =?utf-8?B?d0N6TXVzUjRmQ1hMR3YvZi90MXJuN1o0QXV6N0hIQ2t3T0F5ODIwSEpFRHhS?= =?utf-8?B?V3dPcUR4Tm9nMkZ1RmV4ZUNRclNzQi9nS1VSMmJ4dTdoZjN4dWhSd2ZRNEFE?= =?utf-8?B?RGdzNkFrQjJzM0MzTTZuU0h0ZkFsSmR3NWk1MFVOS0lxeUZsQXp3eHlZMmJ5?= =?utf-8?B?NDBub3Z5SnpGNjg3N2l5ZlRTR3F6OXNjWnVXUmNqWWEyZVpMNUJsUmI5dGh5?= =?utf-8?B?eE5ncFVNQlhtT3Blb2laNS8xNlFjN1RHT3ZyTTA0VTJrdnlBYkFnMmxWM0NK?= =?utf-8?B?dFJkOEk1UWpHeTFiVEJkYTJjdFhJOWJjbWJQa2JiMG5ZQ1RtT0Z2ZDgzWHVD?= =?utf-8?B?b3NDYlVyWEorVlNIVWJSZm5jZUFtMTJuRERiZmRXZ2MzZXFtQjJFelZiWXBy?= =?utf-8?B?WHJEZ1RPQzNtMUs1Mld6Z2V3blFaNHN6cnNLVWFTOE1zenYrK1FKdVVaTHVm?= =?utf-8?B?TG1mZTBhd1FTUGd2d3YzUk12U3BjajJ4R2tvcTMzSUJ6cXh5VTNoUjdqTGFD?= =?utf-8?B?RVYxcS9taXcrMzl0ZWJhejFGdXZNMzl2UTVOMTFjK0dETmZYdkszZnZvT01j?= =?utf-8?B?QjdBVEF5bVdtUis3RjhGdDRXSklUNDBZSlowcmtuQkR6NUpnampUSmlKZE80?= =?utf-8?B?anVYdU5scTZIRTZXRzZsb2hobFhObzh4NDRCWVZINmR5T093L0gyNlRUUkYr?= =?utf-8?B?OUt4aWlkNTAyY0p1MlRSWVNhVm9TZWhzdUo0Q1JaQUJIYTlmRFlyVjlCYmZ6?= =?utf-8?B?ZUxkMzJ0VGNEc2hRTE1Fa0FvS3NIaVJiTmxaWDdTdnQ0SFBEbUJPZXBFQ3Vl?= =?utf-8?B?a2pnZVhRSW54bFdiSFdNQmd0djBVN1NUTnZITEw4cW4vZko0RldaOGh6bFVQ?= =?utf-8?B?T3dRRUNJUVNUMk1tOWsyY2UrNkhHZ2ovSC9nMTdSYmNFUGFDV0EvTFdjeml0?= =?utf-8?B?b0ZabTJWeFJYajFCZ2tQVnhhbGduamp3N0p4K3pqVThyM3c9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1324;6:kqnybIvmDagjutJzd50bObdEABbC8OMvSq1oxlllPIGZt+eX6M9Hv0uSewK2DArkxHGvk2veQESNwB7sjJslYKLblXX1ydwe+BBrPdNtRzW7M8ylnZB46JnbEjsysvmZTgC7iHHf+fLC7KBDFkCvS3URzC5pGp2CBbF+wQ+kWTZXqY06xTgGWrA/wDlu3aIXBG7Xiq4GzVqmKNGIZCSTOl0IZAiUtLMB6gXhj7g9I4Z2D5UBBU/gSl0133G1BEfvJ4Egn6pf/EjJ8z9Tr/Q457WJ5knqNVl9PvF4Qq7UGBA=;5:CWis84WFaemBLXYeOcljdGQKXMviF0kdS7I55U9EYiZ4PRdchkuXecEnsTwVkqW7z0DmsMbfCw0HEdTuCrQOv2A81wXtKypKyrKKxzbW8B3o2ZBT6eH7PDK+++m+VpKZoQx5ol2UKOf5xFnn9+O/6w==;24:8NhkdY3scJ4q3uFnQXRrv+kIczsIOaixC0HChqHK+5bBotXoCjNsMfcawAKT2D0LgPJ69NHwHSXAOD3bzcQcRKNDNJ1VQaXAQrUqgdnmbf4=;7:v18B1AqDpWXy1PpOMe7jNc0dB5+152MmYMViyicVjhbsL23ExCVMlwUJ1gobiOiI+7v6BjcDAoOKHEaD9seW69LmZ37UHqMfjfwVCGtE3d1zjpYdcr3qe2KRfHEQLPBl7lTmR+HWYJOw4WZ0Wkv6LWf6qGzk2xnPw7JIY2/4b0JCEdkR+r8kk/fk0vgjl3wmDFg1Pcdspwht6jxtwLamXlzxOFNwWqU+nvw7b740z8wpk5lPkiced30WatNxS61W SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR15MB1324;20:ZjlXo/KCXkRkuxsgW2ZQNu5jPYKDh2N9gq0l09GGZAB1Biaes3FnktmSHbgI9u9CV1JDPw0H9pNDjxUTZwFqBKa3jnxIodUN7ho5clp3EjUE+JTSmaQlL7IGLYG7KBiFHnDqpB29zWJV8/eb0oEBA9l7zlVrtOfFQkE8XZGOYus= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2016 12:53:01.5745 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR15MB1324 X-OriginatorOrg: fb.com X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-09-06_04:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/05/2016 12:32 AM, Naohiro Aota wrote: > 2016-09-02 (金) の 09:35 -0400 に Josef Bacik さんは書きました: >> On 09/02/2016 03:46 AM, Naohiro Aota wrote: >>> >>> Currently, btrfs_relocate_chunk() is removing relocated BG by >>> itself. But >>> the work can be done by btrfs_delete_unused_bgs() (and it's better >>> since it >>> trim the BG). Let's dedupe the code. >>> >>> While btrfs_delete_unused_bgs() is already hitting the relocated >>> BG, it >>> skip the BG since the BG has "ro" flag set (to keep balancing BG >>> intact). >>> On the other hand, btrfs cannot drop "ro" flag here to prevent >>> additional >>> writes. So this patch make use of "removed" flag. >>> btrfs_delete_unused_bgs() now detect the flag to distinguish >>> whether a >>> read-only BG is relocating or not. >>> >> >> This seems racey to me. We remove the last part of the block group, >> it ends up >> on the unused_bgs_list, we process this list, see that removed isn't >> set and we >> skip it, then later we set removed, but it's too late. I think the >> right way is >> to actually do a transaction, set ->removed, manually add it to the >> unused_bgs_list if it's not already, then end the transaction. This >> way we are >> guaranteed to have the bg on the list when it is ready to be >> removed. This is >> my analysis after looking at it for 10 seconds after being awake for >> like 30 >> minutes so if I'm missing something let me know. Thanks, > > I don't think a race will happen. Since we are holding > delete_unused_bgs_mutex here, btrfs_delte_unused_bgs() checks ->removed > flag after we unlock the mutex i.e. we setup the flag properly. For a > case btrfs_delete_usused_bgs() checks the BG before we hold > delte_unused_bgs_mutex, then that BG is removed by it (if it's empty) > and btrfs_relocate_chunk() should never see it. > Ok that's what I was missing, thanks Reviewed-by: Josef Bacik Josef