From: Steven Whitehouse <swhiteho@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [GFS2 PATCH] GFS2: check and correct zero i_goal
Date: Thu, 11 Sep 2014 12:13:21 +0100 [thread overview]
Message-ID: <541183D1.2020901@redhat.com> (raw)
In-Reply-To: <1410433261-43792-1-git-send-email-adas@redhat.com>
Hi,
On 11/09/14 12:01, Abhi Das wrote:
> A GFS1->GFS2 converted filesystem can have the ip->i_goal field
> set to zero for inodes. This incorrect value results in -EBADSLT
> when the user attempts to allocate blocks to such inodes. This
> patch assigns the goal block to be the block address of the inode
> itself, which serves as a reasonable starting point for the
> allocation logic to find the next available block.
>
> Resolves: rhbz#1130684
> Signed-off-by: Abhi Das <adas@redhat.com>
> ---
> fs/gfs2/glops.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c
> index 2ffc67d..799427b 100644
> --- a/fs/gfs2/glops.c
> +++ b/fs/gfs2/glops.c
> @@ -349,6 +349,9 @@ static int gfs2_dinode_in(struct gfs2_inode *ip, const void *buf)
> ip->i_inode.i_ctime.tv_nsec = be32_to_cpu(str->di_ctime_nsec);
>
> ip->i_goal = be64_to_cpu(str->di_goal_meta);
> + if (!ip->i_goal) /* From a previous gfs2_convert, perhaps */
> + ip->i_goal = ip->i_no_addr;
> +
> ip->i_generation = be64_to_cpu(str->di_generation);
>
> ip->i_diskflags = be32_to_cpu(str->di_flags);
I don't think that is the right place to make the change, since if the
fs is read only then the in-kernel copy will be different to the on-disk
copy of the inode. Better to catch the problem at block allocation time
and use i_no_addr if i_goal is invalid then (and that doesn't just mean
0 - it might be pointing at another "impossible" block)
Steve.
prev parent reply other threads:[~2014-09-11 11:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-11 11:01 [Cluster-devel] [GFS2 PATCH] GFS2: check and correct zero i_goal Abhi Das
2014-09-11 11:13 ` Steven Whitehouse [this message]
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=541183D1.2020901@redhat.com \
--to=swhiteho@redhat.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.