From: Miao Xie <miaox@cn.fujitsu.com>
To: Azat Khuzhin <a3at.mail@gmail.com>
Cc: linux-btrfs@vger.kernel.org, chris.mason@fusionio.com,
open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] btrfs: use list_for_each_entry_safe() when delete items
Date: Tue, 30 Jul 2013 11:40:30 +0800 [thread overview]
Message-ID: <51F735AE.2050902@cn.fujitsu.com> (raw)
In-Reply-To: <CAG5DWoi_BQvHYcPySZBLQpB3wbYeqvYj_CE1RvEBSB8xibtrDw@mail.gmail.com>
On mon, 29 Jul 2013 11:48:32 +0400, Azat Khuzhin wrote:
> On Sat, Jul 27, 2013 at 2:12 PM, Azat Khuzhin <a3at.mail@gmail.com> wrote:
>> Replace list_for_each_entry() by list_for_each_entry_safe() in
>> __btrfs_close_devices()
>>
>> There is another place that delete items lock_stripe_add(), but there we
>> don't need safe version, because after deleting we exit from loop.
>>
>> Signed-off-by: Azat Khuzhin <a3at.mail@gmail.com>
>> ---
>> fs/btrfs/volumes.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>> index 78b8717..1d1b595 100644
>> --- a/fs/btrfs/volumes.c
>> +++ b/fs/btrfs/volumes.c
>> @@ -616,13 +616,13 @@ static void free_device(struct rcu_head *head)
>>
>> static int __btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
>> {
>> - struct btrfs_device *device;
>> + struct btrfs_device *device, *next;
>>
>> if (--fs_devices->opened > 0)
>> return 0;
>>
>> mutex_lock(&fs_devices->device_list_mutex);
>> - list_for_each_entry(device, &fs_devices->devices, dev_list) {
>> + list_for_each_entry_safe(device, next, &fs_devices->devices, dev_list) {
>> struct btrfs_device *new_device;
>> struct rcu_string *name;
>
> There is "kfree(device);" at the end of loop, maybe there must "goto
> again;" after it?
> (instead of this patch)
Your fix is right, we needn't search from the head once again.
The other fix way is:
call_rcu(&device->rcu, free_device);
+ device = new_device;
}
but from the viewpoint of the readability, this way is not so good.
Reviewed-by: Miao Xie <miaox@cn.fujitsu.com>
>
>>
>> --
>> 1.7.10.4
>>
>
>
>
next prev parent reply other threads:[~2013-07-30 3:39 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-27 10:12 [PATCH] btrfs: use list_for_each_entry_safe() when delete items Azat Khuzhin
2013-07-29 7:48 ` Azat Khuzhin
2013-07-30 3:40 ` Miao Xie [this message]
2013-08-31 6:11 ` Azat Khuzhin
-- strict thread matches above, loose matches on Subject: below --
2013-09-01 10:19 Azat Khuzhin
2013-07-27 5:15 Azat Khuzhin
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=51F735AE.2050902@cn.fujitsu.com \
--to=miaox@cn.fujitsu.com \
--cc=a3at.mail@gmail.com \
--cc=chris.mason@fusionio.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.