From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753932AbdKFPIZ (ORCPT ); Mon, 6 Nov 2017 10:08:25 -0500 Received: from mout.web.de ([212.227.17.12]:57049 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752261AbdKFPIX (ORCPT ); Mon, 6 Nov 2017 10:08:23 -0500 Subject: Re: [PATCH] btrfs/volumes: Improve unlocking of a mutex in __btrfs_balance() To: linux-btrfs@vger.kernel.org, David Sterba References: <20171106142450.GF28789@twin.jikos.cz> Cc: dsterba@suse.cz, Chris Mason , Josef Bacik , linux-fsdevel@vger.kernel.org, kernel-janitors@vger.kernel.org, LKML From: SF Markus Elfring Message-ID: <26ba6f26-7132-282b-7b90-3b691a704e4c@users.sourceforge.net> Date: Mon, 6 Nov 2017 16:08:08 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171106142450.GF28789@twin.jikos.cz> Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:IiJxycbsQoFtBr9tSzWWeQf5aVSUL2ngHw8tGhv51MolxPTcei4 52S/rH4fnP/mH5uX+VlT94F9JiLe+PfAIZ9G03QTqyYsJS7DfmRtqDPtknm49899s12AYoH T6GRWEiaD2l4AWIpyGotu7LmoyW4NqCDQLe4kYfaamMhNGRpPogGPhhLoeLZAslQCqRQD8K JgkFV6twtSJvWTrc1N/Dw== X-UI-Out-Filterresults: notjunk:1;V01:K0:QhmFL0no1d8=:FEEd/d4ov+yETFiEctaSXN GByltJ97Cn50I33dnY2wSTuzR/iwafHdpI2B2e5Nv/8jK53Y0ADY4DrpvcuHnvZH9ximk5qmF fo50a2O9qqAU3XiZOnQYaIvC8XZ/9bmOqT8cW/fXfAp01RWMsjVQtL74ENh6zopakdqgHEWXJ SwgPbVsm7HyX3w6TelvmKUPX4tVAiwuqtzhJaT/EzGcjW7mF8NEO5HXJqz2YKLhrJHq1I39eU xisYMv+NrgF50lQftJWXqbvaw403J7rj11rs873bLxYQueL2YGkSqTq1miNUtvF/jl1hWXDgg /t52AElbGA8+Gp/dU0yMvCNtVGGAUxbEQOCwE0DNP9N1pue5270DvXRQUdgxOeaGjJVqOs0Jj MrCC4otLvWqMyGw+RDOdcLS24WUHS0Aom12PIIVgQkG2DC1ZnCCHyWvCfxy14K9grNVoGcQwA aDP5mbPH+t/EpguqxKzmwiZSLVGKRegNAaXTx7anrxbBW/jIFYG6dDnenFT8qR6LFu1ANI8NT Dj+5YWvLt7A65RfYVgVUJESp1hD2UZMGAq9HrHJHu9X38KH+hQnrwfmZ4HcvnMXL0++IaqdCd SaOXv8JjX39+KN6+E8KXd7r5+yFSqxFne+YzmhSbJLrdKuOPLHDFrg0/gdkQPGDgsO9dMCakz ex54mmcJ2C3wCSlTWFeExEp4688KFe1or2kgYXiq7euVRvwOvLJBOX3UYnZ1h80wOXXgAjMXV F6DC34u5XwYNI4t7cexie1Y1AHInxKC7CDtotE5Q4xxRjty/m8jUtxqIuBUNS1laM9/7GBqxP IUIySvZlYQUPQJtLk42zn5HNZOHsfSM0eqS2QGMq0RD7kj5q+M= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org >> @@ -3682,7 +3678,7 @@ static int __btrfs_balance(struct btrfs_fs_info *fs_info) >> counting = false; >> goto again; >> } >> -error: >> +free_path: >> btrfs_free_path(path); >> if (enospc_errors) { >> btrfs_info(fs_info, "%d enospc errors during balance", >> @@ -3692,6 +3688,10 @@ static int __btrfs_balance(struct btrfs_fs_info *fs_info) >> } >> >> return ret; >> + >> +unlock: >> + mutex_unlock(&fs_info->delete_unused_bgs_mutex); >> + goto free_path; >> } > > This is also an anti-pattern, I got an other software development opinion for this use case. > the label followed by a goto jumping back to the exit/cleanup block, > right at the end of a function. I find that this way can be useful for efficient exception handling. > I've sent some patches in the past to clean that up Interesting … > and don't want to reintroduce it. Would you like to reconsider this view if the object code size could be reduced a bit for the affected function implementation? Regards, Markus