linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Marco Lorenzo Crociani <marcoc@prismatelecomtesting.com>,
	Gu Jinxiang <gujx@cn.fujitsu.com>,
	linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 00/15] Btrfs-progs offline scrub
Date: Thu, 20 Jul 2017 17:51:53 +0800	[thread overview]
Message-ID: <ae4d6bc8-6940-b16b-6b8b-e4deb1259a4d@gmx.com> (raw)
In-Reply-To: <1915e871-8e63-0146-40f8-9e636f352091@prismatelecomtesting.com>



On 2017年07月20日 17:40, Marco Lorenzo Crociani wrote:
> On 20/07/2017 11:17, Qu Wenruo wrote:
>>
>>
>> On 2017年07月20日 17:10, Qu Wenruo wrote:
>>>
>>>
>>> On 2017年07月20日 16:55, Marco Lorenzo Crociani wrote:
>>>> On 20/07/2017 05:39, Qu Wenruo wrote:
>>>>>
>>>>>
>>>>> On 2017年07月20日 00:45, Marco Lorenzo Crociani wrote:
>>>>>> On 18/07/2017 08:33, Gu Jinxiang wrote:
>>>>>>> For any one who wants to try it, it can be get from my repo:
>>>>>>> https://github.com/gujx2017/btrfs-progs/tree/offline_scrub
>>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>> I'm getting this error during make:
>>>>>>
>>>>>>      [CC]     csum.o
>>>>>> csum.c: In function ‘btrfs_read_data_csums’:
>>>>>> csum.c:119:3: error: ‘for’ loop initial declarations are only 
>>>>>> allowed in C99 mode
>>>>>>     for (u32 i = 0; i != final_len / csum_size; i++)
>>>>>>     ^
>>>>>
>>>>> Oh, this is indeed a problem.
>>>>> Introduced in the version which bitmap for csum is introduced.
>>>>>
>>>>> Should be fixed to use c90 standard (at least gnu90).
>>>>>
>>>>>> csum.c:119:3: note: use option -std=c99 or -std=gnu99 to compile 
>>>>>> your code
>>>>>> make: *** [csum.o] Errore 1
>>>>>>
>>>>>>
>>>>>> git clone https://github.com/gujx2017/btrfs-progs.git
>>>>>> git checkout offline_scrub
>>>>>> ./autogen.sh
>>>>>> ./configure
>>>>>> make
>>>>>>
>>>>>> CentOS 7.3
>>>>>> kernel 4.12
>>>>>
>>>>> Seems to be related to gcc version.
>>>>> Newer gcc use higher std which doesn't have such problem, while gcc 
>>>>> 4.8 is still using lower standard and will print output such warning.
>>>>>
>>>>> I'll try to enhance the Makefile to use gnu90 standard to avoid 
>>>>> such problem.
>>>>>
>>>>> Thanks,
>>>>> Qu
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> No problem compiling official btrfs-progs v4.11.1
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>> -- 
>>>>> 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
>>>>
>>>>
>>>> Hi Qu,
>>>> now I got only a warning:
>>>>
>>>> cmds-subvolume.c: In function 'cmd_subvol_show':
>>>> cmds-subvolume.c:964:7: warning: 'rootid_arg' may be used 
>>>> uninitialized in this function [-Wmaybe-uninitialized]
>>>>     ret = get_subvol_info_by_rootid(fullpath, &get_ri, rootid_arg);
>>>

Find the patch.

author Anand Jain <anand.jain@oracle.com> Thu Jul 13 06:47:11 2017 +0800
committer David Sterba <dsterba@suse.com> Thu Jul 13 01:03:23 2017 +0200

btrfs-progs: subvol show: add support to search subvolume by rootid or uuid

>>> I don't remember the patchset modified that part.
>>> So maybe a false alert caused by old gcc version?
> 
> I confirm no warnings with official btrfs-progs v4.11.1
> 
> If can help on branch ext/suyue/lowmem_repair
> 
> I got:
>      [CC]     cmds-check.o
> cmds-check.c: In function 'repair_ternary_lowmem':
> cmds-check.c:4367:6: warning: 'ret' may be used uninitialized in this 
> function [-Wmaybe-uninitialized]
>    int ret;
>        ^

Thanks for reporting this.
I'll double check it soon.

> 
>>>
>>>>
>>>> I tried to run scrub on an umounted btrfs raid6 filesystem but 
>>>> instead of "ERROR: '/dev/sda1' is not a mounted btrfs device" I got:
>>>>
>>>> btrfs scrub start --offline /dev/sda1
>>>> couldn't open RDWR because of unsupported option features (3).
>>>
>>> Please post output of "btrfs-show-super /dev/sda1".
>>>
> 
> # btrfs-show-super /dev/sda1
> superblock: bytenr=65536, device=/dev/sda1
> ---------------------------------------------------------
> csum            0xdc944aa7 [match]
> bytenr            65536
> flags            0x1
>              ( WRITTEN )
> magic            _BHRfS_M [match]
> fsid            1845d590-4bf5-466f-953d-aee669fd579e
> label            provabtrfs
> generation        811
> root            1852255092736
> sys_array_size        449
> chunk_root_generation    810
> root_level        1
> chunk_root        20987904
> chunk_root_level    1
> log_root        0
> log_root_transid    0
> log_root_level        0
> total_bytes        48002664235008
> bytes_used        2855626117120
> sectorsize        4096
> nodesize        16384
> leafsize        16384
> stripesize        4096
> root_dir        6
> num_devices        12
> compat_flags        0x0
> compat_ro_flags        0x3

Just as expected.
You're using free space tree, which btrfs-progs can't modify it yet.

But it's unrelated to offline scrub as it doesn't modify tree.

I'll add extra open ctree flag to work this around.

BTW, if you still want to test offline scrub using the image, "btrfs 
check --clear-space-cache v2" can be used to clear the free space tree 
along with its superblock flag.
Then you can test offline scrub without problem.

Thanks,
Qu

> incompat_flags        0x3e9
>              ( MIXED_BACKREF |
>                COMPRESS_LZO |
>                BIG_METADATA |
>                EXTENDED_IREF |
>                RAID56 |
>                SKINNY_METADATA |
>                NO_HOLES )
> csum_type        0
> csum_size        4
> cache_generation    18446744073709551615
> uuid_tree_generation    811
> dev_item.uuid        009add32-9813-4d56-900d-9587b1fff792
> dev_item.fsid        1845d590-4bf5-466f-953d-aee669fd579e [match]
> dev_item.type        0
> dev_item.total_bytes    4000222019584
> dev_item.bytes_used    286326915072
> dev_item.io_align    4096
> dev_item.io_width    4096
> dev_item.sector_size    4096
> dev_item.devid        1
> dev_item.dev_group    0
> dev_item.seek_speed    0
> dev_item.bandwidth    0
> dev_item.generation    0
> 
> 
> 
>>> Seems like RO_FREE_SPACE_TREE_VALID option preventing us to mount it RW.
>>
>> OK, it is the new free space tree RO flag preventing us open it RW.
>>
>> Currently btrfs-progs can't modify free space tree (if I remember it 
>> correctly), so RW open is not allowed now.
>>
>> But the fact offline scrub doesn't care about the btrfs trees 
>> (metadata), but the chunk level on-disk data, it is OK to allow 
>> offline scrub to RW mount.
>>
>> This can be addressed by adding a new btrfs-progs open ctree flag to 
>> bypass RO compat flag check.
>>
>>>
>>> Thanks,
>>> Qu
>>>
>>>> ERROR: cannot open file system
>>>> Segmentation fault (core dumped)
>>
>> The segfault seems to be another problem.
>> I'll try to fix it soon.
>>
>> Thanks,
>> Qu
>>>>
>>>> [1182841.663283] btrfs[30198]: segfault at 46474e548 ip 
>>>> 00007f0eeeac838c sp 00007fff35a52c58 error 4 in 
>>>> libc-2.17.so[7f0eeea48000+1b7000]
>>>>
>>>> Regards,
>>>>
>>> -- 
>>> 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
>> -- 
>> 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
> 
> Thanks,
> 

  reply	other threads:[~2017-07-20  9:52 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-15  9:10 [PATCH v5 01/15] btrfs-progs: Introduce new btrfs_map_block function which returns more unified result Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 02/15] btrfs-progs: Allow __btrfs_map_block_v2 to remove unrelated stripes Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 03/15] btrfs-progs: csum: Introduce function to read out data csums Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 04/15] btrfs-progs: scrub: Introduce structures to support offline scrub for RAID56 Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 05/15] btrfs-progs: scrub: Introduce functions to scrub mirror based tree block Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 06/15] btrfs-progs: scrub: Introduce functions to scrub mirror based data blocks Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 07/15] btrfs-progs: scrub: Introduce function to scrub one mirror-based extent Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 08/15] btrfs-progs: scrub: Introduce function to scrub one data stripe Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 09/15] btrfs-progs: scrub: Introduce function to verify parities Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 10/15] btrfs-progs: extent-tree: Introduce function to check if there is any extent in given range Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 11/15] btrfs-progs: scrub: Introduce function to recover data parity Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 12/15] btrfs-progs: scrub: Introduce helper to write a full stripe Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 13/15] btrfs-progs: scrub: Introduce a function to scrub one " Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 14/15] btrfs-progs: scrub: Introduce function to check a whole block group Gu Jinxiang
2017-07-15  9:10 ` [PATCH v5 15/15] btrfs-progs: scrub: Introduce offline scrub function Gu Jinxiang
2017-07-15  9:20 ` [PATCH v5 01/15] btrfs-progs: Introduce new btrfs_map_block function which returns more unified result Qu Wenruo
2017-07-18  6:33 ` [PATCH 00/15] Btrfs-progs offline scrub Gu Jinxiang
2017-07-19 16:45   ` Marco Lorenzo Crociani
2017-07-20  3:39     ` Qu Wenruo
2017-07-20  8:55       ` Marco Lorenzo Crociani
2017-07-20  9:10         ` Qu Wenruo
2017-07-20  9:17           ` Qu Wenruo
2017-07-20  9:40             ` Marco Lorenzo Crociani
2017-07-20  9:51               ` Qu Wenruo [this message]
2017-08-22  9:45   ` Gu, Jinxiang

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=ae4d6bc8-6940-b16b-6b8b-e4deb1259a4d@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=gujx@cn.fujitsu.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=marcoc@prismatelecomtesting.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).