All of lore.kernel.org
 help / color / mirror / Atom feed
From: Artem Bityutskiy <dedekind1@gmail.com>
To: Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Adrian Hunter <adrian.hunter@nokia.com>
Cc: "Hans J. Koch" <hjk@linutronix.de>,
	linux-mtd <linux-mtd@lists.infradead.org>
Subject: Re: ubifs: sync() causes writes even if nothing is changed
Date: Thu, 21 Oct 2010 11:32:11 +0300	[thread overview]
Message-ID: <1287649931.2932.3.camel@localhost> (raw)
In-Reply-To: <4CBFF865.9010706@linutronix.de>

On Thu, 2010-10-21 at 10:23 +0200, Sebastian Andrzej Siewior wrote:
> Artem Bityutskiy wrote:
> >> From a quick glance at the ubifs code, this might come out of the
> >> garbage collector that is triggered on every sync() and writes
> >> something even if nothing has changed.
> >>
> >> Is that really needed?
> > 
> > I briefly looked, and UBIFS is doing a lot of I/O in that case, which is
> > unnecessary and should not be done, I'll need to investigate this.
> 
>  From what I've seen from the code there are two parts:
> - writing "unwritten" data (the write back part I guess). Nothing is done
>    here as long as no data is queued
> - writing the journal. The first step seems to be to write a node "begin
>    write" and the last one is "end write".
> 
> Since hjk sees only two erases I would guess that they are initiated by 
> the "journal begin" & "end" requests.

Yeah, the UBIFS must be writing the commit start and commit end nodes,
and then erasing the previous log LEB (all this is done in log.c). As
soon as I have time I'll look at this, I really do not have time right
now. And there is Matthiew's problem which is actually quite big, but
for some reasons affects only him :-)

May be it is just matter of looking at all journal heads and if they are
empty, do nothing and return from ubifs_commit().

Adrian, would you help with this, may be?

-- 
Best Regards,
Artem Bityutskiy (Артём Битюцкий)

  reply	other threads:[~2010-10-21  8:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-13 16:30 ubifs: sync() causes writes even if nothing is changed Hans J. Koch
2010-10-15  6:13 ` Artem Bityutskiy
2010-10-20 13:26 ` Artem Bityutskiy
2010-10-21  8:23   ` Sebastian Andrzej Siewior
2010-10-21  8:32     ` Artem Bityutskiy [this message]
2010-10-21 17:04       ` Matthieu CASTET
2010-10-21 18:43         ` Artem Bityutskiy
2011-01-16 17:48 ` Artem Bityutskiy
2011-01-17  8:19   ` Adrian Hunter
2011-01-17  9:04     ` Artem Bityutskiy
2011-01-17 21:52     ` Artem Bityutskiy
2011-01-17 21:53     ` [PATCH v2 1/3] UBIFS: re-arrange variables in ubifs_info Artem Bityutskiy
2011-01-17 21:54       ` [PATCH v2 2/3] UBIFS: introduce mounting flag Artem Bityutskiy
2011-01-18  7:30     ` [PATCH v2 3/3] UBIFS: do not start the commit if there is nothing to commit Artem Bityutskiy
2011-01-18  7:36       ` Artem Bityutskiy
2011-01-18 12:29         ` John Ogness
2011-01-21 11:13           ` Artem Bityutskiy
2011-01-21 11:28             ` John Ogness
2011-01-25  8:20               ` Artem Bityutskiy

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=1287649931.2932.3.camel@localhost \
    --to=dedekind1@gmail.com \
    --cc=adrian.hunter@nokia.com \
    --cc=bigeasy@linutronix.de \
    --cc=hjk@linutronix.de \
    --cc=linux-mtd@lists.infradead.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.