From: Ivan Shapovalov <intelfx100@gmail.com>
To: Edward Shishkin <edward.shishkin@gmail.com>
Cc: reiserfs-devel@vger.kernel.org
Subject: Re: reiser4: discard support
Date: Sun, 04 May 2014 00:32:29 +0400 [thread overview]
Message-ID: <2562062.LWrRe7vaEB@intelfx-laptop> (raw)
In-Reply-To: <53654FE6.7030408@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3886 bytes --]
On Saturday 03 May 2014 at 22:21:58, Edward Shishkin wrote:
> On 05/03/2014 08:48 PM, Ivan Shapovalov wrote:
> > On Friday 02 May 2014 at 20:10:16, Edward Shishkin wrote:
> >> On 05/02/2014 04:32 PM, Ivan Shapovalov wrote:
> >>> On Friday 02 May 2014 at 16:07:21, Edward Shishkin wrote:
> >>>> On 05/02/2014 03:36 PM, Ivan Shapovalov wrote:
> >>>>> On Friday 02 May 2014 at 13:48:28, Edward Shishkin wrote:
> >>>>> [...]
> >>>>
> >>>> We can perfectly populate different "discard trees" in parallel on
> >>>> different CPUs.
> >>>> As to sorting the list: I don't know how to perform it in parallel :)
> >>>> Default assumptions, that everything is serialized, usually lead to
> >>>> various
> >>>> bad-scalable solutions...
> >>>
> >>> Ah, now I understand what do you mean. If that's about doing less work
> >>> under the tmgr mutex,
> >>
> >> No. This is about minimizing real time.
> >> We don't know about mutexes. We want to decide, what is preferable:
> >> populating trees, or sorting the list. There is a chance that the first
> >> will be faster in systems with many CPUs, so I suggest to use trees.
> >> That's all!
> >
> > OK.. well, I've started with lists anyway. The data structure is (of
> > course) under an abstraction layer, so we can change it.
> >
> >>> then yes, trees are better than lists.
> >>>
> >>> BTW, I've seen that reiser4 releases atom lock before allocating another
> >>> node for a blocknr_set, and that leads to a "do { } while (ret ==
> >>> -E_REPEAT)" loop around the blocknr_set_add_extent() calls. Is this the
> >>> preferred way of attaching a dynamic data structure to an atom?
> >>
> >> TBH, I have never looked at the deallocation paths in reiser4: everything
> >> worked fine there.. BTW, why not to use atom's delete_set to discard
> >> things? Could you please take a look?
> >
> > Blocks used for the journal (wander.c) are deallocated without BA_DEFER
> > set
> > and thus they never hit delete_set. However, we want to discard these.
>
> This happens in error paths. Don't be so scrupulous ;)
I don't think so:
- wander.c:485
dealloc_tx_list() <- reiser4_write_logs()
- wander.c:505
dealloc_wmap_actor() <- dealloc_wmap() <- reiser4_write_logs()
> Also users will use copy-on-write transaction model for their SSDs(*),
> and in this mode journals are tiny: they contain only system blocks.
> In short, there is nothing to discard..
>
> (*) http://marc.info/?l=reiserfs-devel&m=139449965000686&w=2
>
> >>>>> [...]
> >>>>
> >>>> what explanation do you mean?
> >>>>
> >>>> Edward.
> >>>
> >>> A general explanation of how does it work :)
> >>
> >> I think this is because of historical reasons.
> >> Such good explanation costs a lot of time and efforts.
> >> Namesys was a small company, we couldn't afford to have a technical
> >> writer.
> >> Hans insisted on good comments in the source code..
> >
> > But there aren't much comments there. ;)
> >
> > I'm now coding the last part - bitmap querying - and I've got a question:
> > how do we pass reiser4_block_nr parameters?
> > Many places use pointers, but I do not really understand why (to optimize
> > for stack frame size on 32-bit archs?)
>
> I think, yes: 12 years ago 64-bit archs looked like exotic..
>
> > and there is a place
> >
> > (reiser4_dealloc_blocks_bitmap()) where this convention is apparently
> > broken.
> I suspect that even the author of the bitmap code doesn't know, why it
> is broken ;)
>
> Edward.
>
> > And this is tedious, because public interfaces seem to pass start+len, but
> > in some places it's more convenient to use start+end...
Ok, so I'll follow the convention.
And oh, blocks != sectors... It looks like I really need to make a backup of:
- the last good reiser4.ko
- my /home
--
Ivan Shapovalov / intelfx /
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]
next prev parent reply other threads:[~2014-05-03 20:32 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-30 7:43 reiser4: discard support Ivan Shapovalov
2014-04-30 14:11 ` Edward Shishkin
[not found] ` <1B07908E-B768-407D-ADFA-B3C539FABB49@gmail.com>
[not found] ` <53613807.7090605@gmail.com>
2014-05-01 23:51 ` Ivan Shapovalov
[not found] ` <CAJZSrNK4=o9vocDfSM=4W5ZgtqZ6RVpmU66sGCu6HFsdN47OHw@mail.gmail.com>
2014-05-02 11:06 ` Ivan Shapovalov
2014-05-02 11:48 ` Edward Shishkin
2014-05-02 12:44 ` Edward Shishkin
2014-05-02 13:47 ` Ivan Shapovalov
2014-05-02 13:36 ` Ivan Shapovalov
2014-05-02 14:07 ` Edward Shishkin
2014-05-02 14:32 ` Ivan Shapovalov
2014-05-02 18:10 ` Edward Shishkin
2014-05-03 18:48 ` Ivan Shapovalov
2014-05-03 20:21 ` Edward Shishkin
2014-05-03 20:32 ` Ivan Shapovalov [this message]
2014-05-06 8:58 ` Edward Shishkin
2014-05-07 7:35 ` Ivan Shapovalov
2014-05-07 21:04 ` Edward Shishkin
-- strict thread matches above, loose matches on Subject: below --
2014-04-30 17:55 Edward Shishkin
2014-04-30 18:53 ` Edward Shishkin
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=2562062.LWrRe7vaEB@intelfx-laptop \
--to=intelfx100@gmail.com \
--cc=edward.shishkin@gmail.com \
--cc=reiserfs-devel@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.