2013-09-07 16:16:20

by Azat Khuzhin

[permalink] [raw]
Subject: [PATCH] Btrfs: cleanup redundant code in __btrfs_close_devices()

Signed-off-by: Azat Khuzhin <[email protected]>
---
fs/btrfs/volumes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 1d1b595..124228e 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -644,7 +644,7 @@ static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
/* Safe because we are under uuid_mutex */
if (device->name) {
name = rcu_string_strdup(device->name->str, GFP_NOFS);
- BUG_ON(device->name && !name); /* -ENOMEM */
+ BUG_ON(!name); /* -ENOMEM */
rcu_assign_pointer(new_device->name, name);
}
new_device->bdev = NULL;
--
1.7.10.4


2013-09-10 11:39:43

by Azat Khuzhin

[permalink] [raw]
Subject: Re: [PATCH] Btrfs: cleanup redundant code in __btrfs_close_devices()

On Mon, Sep 9, 2013 at 7:28 AM, Wang Shilong <[email protected]> wrote:
> On 09/08/2013 12:15 AM, Azat Khuzhin wrote:
>>
>> Signed-off-by: Azat Khuzhin <[email protected]>
>> ---
>> fs/btrfs/volumes.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>> index 1d1b595..124228e 100644
>> --- a/fs/btrfs/volumes.c
>> +++ b/fs/btrfs/volumes.c
>> @@ -644,7 +644,7 @@ static int __btrfs_close_devices(struct
>> btrfs_fs_devices *fs_devices)
>> /* Safe because we are under uuid_mutex */
>> if (device->name) {
>> name = rcu_string_strdup(device->name->str,
>> GFP_NOFS);
>> - BUG_ON(device->name && !name); /* -ENOMEM */
>> + BUG_ON(!name); /* -ENOMEM *
>
> Nice catch! out of memory should not trigger BUG_ON()..
> Maybe we can handle it gracefully.

Maybe return -ENOMEM ?

>
> Thanks,
> Wang
>
>> rcu_assign_pointer(new_device->name, name);
>> }
>> new_device->bdev = NULL;
>
>



--
Respectfully
Azat Khuzhin

2013-09-10 13:15:24

by Wang Shilong

[permalink] [raw]
Subject: Re: [PATCH] Btrfs: cleanup redundant code in __btrfs_close_devices()

> On Mon, Sep 9, 2013 at 7:28 AM, Wang Shilong <[email protected]> wrote:
>> On 09/08/2013 12:15 AM, Azat Khuzhin wrote:
>>>
>>> Signed-off-by: Azat Khuzhin <[email protected]>
>>> ---
>>> fs/btrfs/volumes.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>>> index 1d1b595..124228e 100644
>>> --- a/fs/btrfs/volumes.c
>>> +++ b/fs/btrfs/volumes.c
>>> @@ -644,7 +644,7 @@ static int __btrfs_close_devices(struct
>>> btrfs_fs_devices *fs_devices)
>>> /* Safe because we are under uuid_mutex */
>>> if (device->name) {
>>> name = rcu_string_strdup(device->name->str,
>>> GFP_NOFS);
>>> - BUG_ON(device->name && !name); /* -ENOMEM */
>>> + BUG_ON(!name); /* -ENOMEM *
>>
>> Nice catch! out of memory should not trigger BUG_ON()..
>> Maybe we can handle it gracefully.
>
> Maybe return -ENOMEM ?

Yeah, BUG_On is really unfriendly. And here ENOMEM triggers
BUG_ON() is a lazy approach.

I think we can return -ENOMEM rather than BUG_ON(), the caller can handle this.

Thanks,
Wang
>
>>
>> Thanks,
>> Wang
>>
>>> rcu_assign_pointer(new_device->name, name);
>>> }
>>> new_device->bdev = NULL;
>>
>>
>
>
>
> --
> Respectfully
> Azat Khuzhin
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2013-09-10 20:40:52

by Azat Khuzhin

[permalink] [raw]
Subject: Re: [PATCH] Btrfs: cleanup redundant code in __btrfs_close_devices()

On Tue, Sep 10, 2013 at 5:15 PM, Wang Shilong <[email protected]> wrote:
>> On Mon, Sep 9, 2013 at 7:28 AM, Wang Shilong <[email protected]> wrote:
>>> On 09/08/2013 12:15 AM, Azat Khuzhin wrote:
>>>>
>>>> Signed-off-by: Azat Khuzhin <[email protected]>
>>>> ---
>>>> fs/btrfs/volumes.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>>>> index 1d1b595..124228e 100644
>>>> --- a/fs/btrfs/volumes.c
>>>> +++ b/fs/btrfs/volumes.c
>>>> @@ -644,7 +644,7 @@ static int __btrfs_close_devices(struct
>>>> btrfs_fs_devices *fs_devices)
>>>> /* Safe because we are under uuid_mutex */
>>>> if (device->name) {
>>>> name = rcu_string_strdup(device->name->str,
>>>> GFP_NOFS);
>>>> - BUG_ON(device->name && !name); /* -ENOMEM */
>>>> + BUG_ON(!name); /* -ENOMEM *
>>>
>>> Nice catch! out of memory should not trigger BUG_ON()..
>>> Maybe we can handle it gracefully.
>>
>> Maybe return -ENOMEM ?
>
> Yeah, BUG_On is really unfriendly. And here ENOMEM triggers
> BUG_ON() is a lazy approach.
>
> I think we can return -ENOMEM rather than BUG_ON(), the caller can handle this.

I will write a patch, when this one will be merged, to avoid conflicts,
and also because the issue that this patch solves is different from BUG_ON().

>
> Thanks,
> Wang
>>
>>>
>>> Thanks,
>>> Wang
>>>
>>>> rcu_assign_pointer(new_device->name, name);
>>>> }
>>>> new_device->bdev = NULL;
>>>
>>>
>>
>>
>>
>> --
>> Respectfully
>> Azat Khuzhin
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>



--
Respectfully
Azat Khuzhin