From: Dibyendu Majumdar <mobile@majumdar.org.uk>
To: Christopher Li <sparse@chrisli.org>
Cc: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>,
Linux-Sparse <linux-sparse@vger.kernel.org>,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [PATCH RFC] Let pseudo->users loop on duplicate version of list
Date: Wed, 12 Jul 2017 16:56:16 +0100 [thread overview]
Message-ID: <CACXZuxeGmWGFbMmJCKi+aZbbxx89upb=_Vzqe7Ta99mOGHuVrg@mail.gmail.com> (raw)
In-Reply-To: <CANeU7QkTAQ6XaAGrd1PmQ_4Jcv2vxD-cK_9+kKFbyX5b+Pg+Wg@mail.gmail.com>
Hi Chris,
On 12 July 2017 at 06:29, Christopher Li <sparse@chrisli.org> wrote:
> On Tue, Jul 11, 2017 at 2:04 PM, Dibyendu Majumdar
> <mobile@majumdar.org.uk> wrote:
>> I think that duplicating a list because that list is being modified is
>> quite a sensible thing to do. My only suggestion would be that perhaps
>> you could have a dup() step that is separate so that you can use the
>> normal iterator macro after duplicating.
>
> So are you suggesting some thing like this:
>
> struct ptr_list *dup_list = NULL:
> concat_ptr_list(orign_list, &dup_list);
> FOR_EACH_PTR(dup_list, ptr) {
> ...
> } END_FOR_EACH_PTR(ptr);
> free_ptr_list(dup_list);
>
> I think that should work. But it come with a price
> allocating and freeing the list (otherwise it is a memory leak).
Yes that is what I meant. This is a typical solution to this type of problem.
>
> Also run slightly slower. My current way will only duplicate
> the list struct one at a time. It never duplicate the full list.
> It has fixed memory usage, no allocating, no duplicate of
> the ->next and ->prev pointer.
>
Okay - but is your approach generic enough? What if there was a split
in the node that you copied? I don't have a full understanding but it
appears to be a very specific solution rather than a general one.
> So what macro do you have in mind? I think any thing modify
> the duplicate list does not make sense.
>
> On thing I can do is rename the __list into __orig, then rename
> __dup into __list. Then most of the list macro using __list should
> work. It also means I have to use END_FOR_EACH_PTR_DUP()
> as well.
>
I was just saying that you can use the standard /existing iterator
macros once you have duplicated the list.
Regards
Dibyendu
next prev parent reply other threads:[~2017-07-12 15:56 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-10 15:32 [PATCH RFC] Let pseudo->users loop on duplicate version of list Christopher Li
2017-07-11 20:53 ` Christopher Li
2017-07-11 21:04 ` Dibyendu Majumdar
2017-07-12 5:29 ` Christopher Li
2017-07-12 15:56 ` Dibyendu Majumdar [this message]
2017-07-12 17:03 ` Christopher Li
2017-07-12 18:05 ` Dibyendu Majumdar
2017-07-13 5:27 ` Christopher Li
2017-07-19 21:14 ` Luc Van Oostenryck
2017-07-19 21:42 ` Christopher Li
2017-07-19 22:51 ` Luc Van Oostenryck
2017-07-20 2:34 ` Christopher Li
2017-08-02 23:44 ` Luc Van Oostenryck
2017-08-03 0:50 ` Christopher Li
2017-08-03 10:18 ` Luc Van Oostenryck
2017-08-03 23:48 ` Christopher Li
2017-08-04 0:41 ` Luc Van Oostenryck
2017-08-04 2:22 ` Christopher Li
2017-08-04 10:38 ` Luc Van Oostenryck
2017-08-04 14:48 ` Christopher Li
2017-08-04 16:58 ` Luc Van Oostenryck
[not found] ` <20170804002230.5047-1-luc.vanoostenryck@gmail.com>
2017-08-04 14:54 ` Fwd: [PATCH] mark pseudo user as deleted instead of removing them Christopher Li
2017-08-04 15:29 ` Christopher Li
2017-08-04 15:58 ` Luc Van Oostenryck
2017-08-04 18:19 ` Christopher Li
2017-08-04 19:12 ` Luc Van Oostenryck
2017-08-04 19:24 ` Christopher Li
2017-08-04 20:09 ` [PATCH 0/4] fix list corruption with recursive remove_usage() Luc Van Oostenryck
2017-08-04 20:09 ` [PATCH 1/4] ptrlist: add a counter for the number of removed elemnets Luc Van Oostenryck
2017-08-04 20:09 ` [PATCH 2/4] ptrlist: adjust ptr_list_size for the new ->rm field Luc Van Oostenryck
2017-08-04 20:09 ` [PATCH 3/4] ptrlist: add MARK_CURRENT_DELETED Luc Van Oostenryck
2017-08-04 20:09 ` [PATCH 4/4] mark pseudo users as deleted instead of removing them Luc Van Oostenryck
2017-08-04 20:17 ` Christopher Li
2017-08-04 20:18 ` Christopher Li
2017-08-04 20:34 ` Luc Van Oostenryck
2017-08-04 20:48 ` Christopher Li
2017-08-04 21:03 ` Luc Van Oostenryck
2017-08-04 21:14 ` Christopher Li
2017-08-04 21:34 ` Luc Van Oostenryck
2017-08-04 16:54 ` [PATCH] mark pseudo user " Linus Torvalds
2017-08-04 18:33 ` Christopher Li
2017-08-04 20:08 ` Christopher Li
2017-08-04 20:37 ` Christopher Li
2017-07-13 12:23 ` [PATCH RFC] Let pseudo->users loop on duplicate version of list Christopher Li
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='CACXZuxeGmWGFbMmJCKi+aZbbxx89upb=_Vzqe7Ta99mOGHuVrg@mail.gmail.com' \
--to=mobile@majumdar.org.uk \
--cc=linux-sparse@vger.kernel.org \
--cc=luc.vanoostenryck@gmail.com \
--cc=sparse@chrisli.org \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).