All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anand Jain <anand.jain@oracle.com>
To: dsterba@suse.cz, Qu Wenruo <quwenruo.btrfs@gmx.com>,
	linux-btrfs@vger.kernel.org
Subject: Re: [PATCH v2] btrfs: fix endianness compatibility during the SB RW
Date: Wed, 14 Feb 2018 22:53:19 +0800	[thread overview]
Message-ID: <5caed65c-79b1-5e12-78a0-47cffb220ca0@oracle.com> (raw)
In-Reply-To: <20180213175510.GB3003@twin.jikos.cz>



On 02/14/2018 01:55 AM, David Sterba wrote:
> On Tue, Feb 13, 2018 at 06:27:13PM +0800, Anand Jain wrote:
>> On 02/13/2018 05:01 PM, Qu Wenruo wrote:
>>> On 2018年02月13日 11:00, Anand Jain wrote:
>>>> Fixes the endianness bug in the fs_info::super_copy by using its
>>>> btrfs_set_super...() function to set values in the SB, as these
>>>> functions manage the endianness compatibility nicely.
>>>>
>>>> Signed-off-by: Anand Jain <anand.jain@oracle.com>
>>>
>>> Also went through all btrfs_super_block SETGET functions, greping using
>>> \><member name>, seems that there are still some left here:
>>>
>>> fs/btrfs/sysfs.c:
>>> In both btrfs_sectorsize_show() and btrfs_clone_alignment_show():
>>> 	return snprintf(buf, PAGE_SIZE, "%u\n",
>>> 			fs_info->super_copy->sectorsize);
>>>
>>> In btrfs_nodesize_show():
>>> 	return snprintf(buf, PAGE_SIZE, "%u\n", fs_info->super_copy->nodesize);

  Thinking again on the printf they are fine without the endianness
  functions, because it is printing the values from the memory to
  buf/stdout, which was previously read from the disk (which
  possibly written by the opposite endianness system). Here, there
  is no endianness changes that will be required for it to be written
  out using printf.

>>    Oh. Thanks. Will fix. Maybe it's a good idea to add sysfs fixes
>>    into a new patch.

> I'd prefer a single patch as it fixes the same problem for one
> structure, the context of use is not that important to justify 2
> patches.

  Agree.

> I went through the possible uses of superblock again and did not find
> anything else than the update_super_roots and sysfs read handlers. There
> are some direct uses of super block members, like label, sys_array, uuid
> that are passed unconverted and must be accessed via the set/get
> helpers.

  AFAIK byte arrays btrfs_super_block::(label, sys_chunk_array, fsid)
  are not affected by endianness, as memory access for the array starts
  from the zero in both endianness. And the lowest granularity affected
  by the endianness is a byte.

> In some places the superblock is put to a temporary variable so simple
> grep may miss these.
> 
>>> And what about cc this to stable kernel?
>>> IIRC it's a very critical problem for btrfs.
> 
> If the filesystem is always used on a same endianity host, this will not
> be a problem. Moving between opposite endianity hosts will report bogus
> numbers in sysfs and the backup root would not be restored correctly.
> 
> As this is not common, I'd rate thats as a bugfix for stable, but "only"
> a serious one.

  agree.

>>> Maybe cc: stable@vger.kernel.org # v3.2+?
>>
>>    Thanks for the suggestion. Will do. Any idea what if the patch which
>>    applied on mainline ends up conflict on LTS, so write a separate patch
>>    to stable?
> 
> If the patch does not apply to some older stable branch, all involved
> people get a mail from stable team and have an opportunity to send an
> updated version of the patch.
> 
> Regarding the long-term branches, I would consider 4.4 and up. Anything
> older is a plus but fixing merge conflicts is more likely there so I
> think the respective maintainers would either fix it by themselves or
> ask for help.

  ok.

  Thanks, Anand

> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

  reply	other threads:[~2018-02-14 14:52 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-12 15:37 [PATCH] btrfs: use set functions to update latest refs to the SB Anand Jain
2018-02-12 16:34 ` David Sterba
2018-02-13  2:56   ` Anand Jain
2018-02-13  3:00 ` [PATCH v2] btrfs: fix endianness compatibility during the SB RW Anand Jain
2018-02-13  7:04   ` Nikolay Borisov
2018-02-13  9:01   ` Qu Wenruo
2018-02-13 10:27     ` Anand Jain
2018-02-13 10:39       ` Qu Wenruo
2018-02-13 17:55       ` David Sterba
2018-02-14 14:53         ` Anand Jain [this message]
2018-02-15 16:49           ` David Sterba
2018-02-20 17:16   ` Liu Bo

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=5caed65c-79b1-5e12-78a0-47cffb220ca0@oracle.com \
    --to=anand.jain@oracle.com \
    --cc=dsterba@suse.cz \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.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.