All of lore.kernel.org
 help / color / mirror / Atom feed
From: Artem Bityutskiy <dedekind1@gmail.com>
To: Ben Gardiner <bengardiner@nanometrics.ca>
Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	"Matthew L. Creech" <mlcreech@gmail.com>
Subject: Re: [PATCH 2/3] UBIFS: intialize the LPT earlier
Date: Wed, 01 Jun 2011 13:06:50 +0300	[thread overview]
Message-ID: <1306922810.4405.91.camel@localhost> (raw)
In-Reply-To: <e0fb2d40ab7314049654d85b86a4c27e9a1801ef.1306780983.git.bengardiner@nanometrics.ca>

Hi,

thanks for the patch, however

On Mon, 2011-05-30 at 14:56 -0400, Ben Gardiner wrote: 
> +	err = ubifs_lpt_init(c, 1, !c->ro_mount);
> +	if (err)
> +		goto out_lpt;

You cannot call ubifs_lpt_init()

> +
>  	if ((c->mst_node->flags & cpu_to_le32(UBIFS_MST_DIRTY)) != 0) {
>  		ubifs_msg("recovery needed");
>  		c->need_recovery = 1;
>  		if (!c->ro_mount) {
>  			err = ubifs_recover_inl_heads(c, c->sbuf);

Before ubifs_recover_inl_heads() is called in case of dirty FS.

I've massaged your patch and pushed the following analogous patch to the
ubifs tree, please check/test:



>From 678ef9ad3daa453723f04f84f9db6a22994e7343 Mon Sep 17 00:00:00 2001
From: Ben Gardiner <bengardiner@nanometrics.ca>
Date: Mon, 30 May 2011 14:56:15 -0400
Subject: [PATCH] UBIFS: intialize LPT earlier

The current 'mount_ubifs()' implementation does not initialize the LPT until the
the master node is marked dirty. Move the LPT initialization to before marking
the master node dirty. This is a preparation for the next patch which will move
the free-space-fixup check to before marking the master node dirty, because we
have to fix-up the free space before doing any writes.

Artem: massaged the patch and commit message.

Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
---
 fs/ubifs/super.c |   29 ++++++++++++++++-------------
 1 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c
index 1e40db7..6d357fd 100644
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@ -1282,17 +1282,24 @@ static int mount_ubifs(struct ubifs_info *c)
 	if (err)
 		goto out_master;
 
-	init_constants_master(c);
-
 	if ((c->mst_node->flags & cpu_to_le32(UBIFS_MST_DIRTY)) != 0) {
 		ubifs_msg("recovery needed");
 		c->need_recovery = 1;
-		if (!c->ro_mount) {
-			err = ubifs_recover_inl_heads(c, c->sbuf);
-			if (err)
-				goto out_master;
-		}
-	} else if (!c->ro_mount) {
+	}
+
+	init_constants_master(c);
+
+	if (c->need_recovery && !c->ro_mount) {
+		err = ubifs_recover_inl_heads(c, c->sbuf);
+		if (err)
+			goto out_master;
+	}
+
+	err = ubifs_lpt_init(c, 1, !c->ro_mount);
+	if (err)
+		goto out_master;
+
+	if (!c->ro_mount) {
 		/*
 		 * Set the "dirty" flag so that if we reboot uncleanly we
 		 * will notice this immediately on the next mount.
@@ -1300,13 +1307,9 @@ static int mount_ubifs(struct ubifs_info *c)
 		c->mst_node->flags |= cpu_to_le32(UBIFS_MST_DIRTY);
 		err = ubifs_write_master(c);
 		if (err)
-			goto out_master;
+			goto out_lpt;
 	}
 
-	err = ubifs_lpt_init(c, 1, !c->ro_mount);
-	if (err)
-		goto out_lpt;
-
 	err = dbg_check_idx_size(c, c->bi.old_idx_sz);
 	if (err)
 		goto out_lpt;
-- 
1.7.2.3



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

  reply	other threads:[~2011-06-01 10:11 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-30 18:56 [PATCH 0/3] fix-up free space earlier in mount_ubifs() Ben Gardiner
2011-05-30 18:56 ` [PATCH 1/3] UBIFS: assert no fixup when writing a node Ben Gardiner
2011-06-01 10:03   ` Artem Bityutskiy
2011-05-30 18:56 ` [PATCH 2/3] UBIFS: intialize the LPT earlier Ben Gardiner
2011-06-01 10:06   ` Artem Bityutskiy [this message]
2011-05-30 18:56 ` [PATCH 3/3] UBIFS: fix-up free space earlier Ben Gardiner
2011-06-01 10:16   ` Artem Bityutskiy
2011-06-01 14:53     ` [PATCH] UBIFS: fixup merged 'UBIFS: fix-up free space earlier' Ben Gardiner
2011-06-01 15:03       ` Artem Bityutskiy
2011-06-01 15:14       ` Artem Bityutskiy
2011-06-01 15:28         ` Ben Gardiner
2011-05-31 14:43 ` [PATCH 0/3] fix-up free space earlier in mount_ubifs() Matthew L. Creech
2011-05-31 14:43   ` Matthew L. Creech
2011-05-31 14:52   ` Ben Gardiner
2011-05-31 14:52     ` Ben Gardiner
2011-05-31 15:22     ` Matthew L. Creech
2011-05-31 15:22       ` Matthew L. Creech
2011-06-01 10:20       ` Artem Bityutskiy
2011-05-31 15:37   ` Ben Gardiner
2011-05-31 15:37     ` Ben Gardiner
2011-06-01 10:19 ` 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=1306922810.4405.91.camel@localhost \
    --to=dedekind1@gmail.com \
    --cc=bengardiner@nanometrics.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=mlcreech@gmail.com \
    /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.