2014-05-16 22:44 GMT+08:00 Anand Jain <anand.j...@oracle.com>:
>
>
> Wang,
>
>  when we unmount && mount (instead of remount) and followed
>  with device del <seed> it ends up with null pointer deref at
>  btrfs_shrink_dev. Thats because the btrfs_root is not set for
>  seed disk as we mounted the writable sprout disk. I am writing
>  a separate fix for that as its a new bug.

You means this one which was addressed by Liu few days ago?
https://patchwork.kernel.org/patch/4150471/


>
> Thanks, Anand
>
>
>
> On 16/05/14 22:14, Anand Jain wrote:
>>
>>
>> Wang,
>>
>>   There seems to be a problem - after we delete the seed
>>   disk, the total_devices didn't decrement back to 1.
>>   reproducer as in the below test case. (I used btrfs-devlist
>>   (posted) to check fs_devices).
>>
>>   > # mkfs.btrfs -f /dev/sdb
>>   > # btrfstune -S 1 /dev/sdb
>>   > # mount /dev/sdb /mnt
>>   > # btrfs device add -f /dev/sdc /mnt --->fs_devices->total_devices = 1
>>   mount -o rw,remount /mnt
>>   btrfs dev del /dev/sdb /mnt --> fs_devices->total_devices is still 2
>>
>> Thanks, Anand
>>
>>
>> On 13/05/14 17:05, Wang Shilong wrote:
>>>
>>> Seeding device support allows us to create a new filesystem
>>> based on existed filesystem.
>>>
>>> However newly created filesystem's @total_devices should include seed
>>> devices. This patch fix the following problem:
>>>
>>>   # mkfs.btrfs -f /dev/sdb
>>>   # btrfstune -S 1 /dev/sdb
>>>   # mount /dev/sdb /mnt
>>>   # btrfs device add -f /dev/sdc /mnt --->fs_devices->total_devices = 1
>>>   # umount /mnt
>>>   # mount /dev/sdc /mnt               --->fs_devices->total_devices = 2
>>>
>>> This is because we record right @total_devices in superblock, but
>>> @fs_devices->total_devices is reset to be 0 in btrfs_prepare_sprout().
>>>
>>> Fix this problem by not resetting @fs_devices->total_devices.
>>>
>>> Signed-off-by: Wang Shilong <wangsl.f...@cn.fujitsu.com>
>>> ---
>>>   fs/btrfs/volumes.c | 1 -
>>>   1 file changed, 1 deletion(-)
>>>
>>> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
>>> index 6fd7fe6..19b2d32 100644
>>> --- a/fs/btrfs/volumes.c
>>> +++ b/fs/btrfs/volumes.c
>>> @@ -1883,7 +1883,6 @@ static int btrfs_prepare_sprout(struct
>>> btrfs_root *root)
>>>       fs_devices->seeding = 0;
>>>       fs_devices->num_devices = 0;
>>>       fs_devices->open_devices = 0;
>>> -    fs_devices->total_devices = 0;
>>>       fs_devices->seed = seed_devices;
>>>
>>>       generate_random_uuid(fs_devices->fsid);
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>> the body of a message to majord...@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 majord...@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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to