linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* bug adding device to seed device, btrfs fi show fails
@ 2014-05-11  1:51 Chris Murphy
  2014-05-11  3:38 ` Chris Murphy
  2014-05-12  2:00 ` Anand Jain
  0 siblings, 2 replies; 7+ messages in thread
From: Chris Murphy @ 2014-05-11  1:51 UTC (permalink / raw)
  To: Btrfs BTRFS

kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
btrfs-progs 3.14

/dev/sdb2 = existing btrfs fs
/dev/sdc3 = unformatted partition


# btrfstune -S1 /dev/sdb2
# mount /dev/sdb2 /mnt
mount: /dev/sdb2 is write-protected, mounting read-only
# btrfs device add /dev/sdc3 /mnt
Performing full device TRIM (75.90GiB) ...
# btrfs fi show
Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
	Total devices 1 FS bytes used 7.55GiB
	devid    1 size 79.31GiB used 11.04GiB path /dev/sda3

btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.

Nothing listed in dmesg.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-05-11  1:51 bug adding device to seed device, btrfs fi show fails Chris Murphy
@ 2014-05-11  3:38 ` Chris Murphy
  2014-05-12  2:00 ` Anand Jain
  1 sibling, 0 replies; 7+ messages in thread
From: Chris Murphy @ 2014-05-11  3:38 UTC (permalink / raw)
  To: Btrfs BTRFS


On May 10, 2014, at 7:51 PM, Chris Murphy <lists@colorremedies.com> wrote:

> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
> btrfs-progs 3.14
> 
> /dev/sdb2 = existing btrfs fs
> /dev/sdc3 = unformatted partition
> 
> 
> # btrfstune -S1 /dev/sdb2
> # mount /dev/sdb2 /mnt
> mount: /dev/sdb2 is write-protected, mounting read-only
> # btrfs device add /dev/sdc3 /mnt
> Performing full device TRIM (75.90GiB) ...
> # btrfs fi show
> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
> 	Total devices 1 FS bytes used 7.55GiB
> 	devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
> 
> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.

The problem only happens when added device sdc3 is mounted at /mnt. Otherwise btrfs fi show works. The following is strace when added device sdc3 is mounted, while mount shows the seed device mounted:

# cat /proc/self/mountinfo
84 58 0:44 / /mnt rw,relatime shared:35 - btrfs /dev/sdb2 rw,seclabel,space_cache


# strace btrfs fi show
execve("/usr/sbin/btrfs", ["btrfs", "fi", "show"], [/* 24 vars */]) = 0
brk(0)                                  = 0x2669000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2c3000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=84288, ...}) = 0
mmap(NULL, 84288, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fae8d2ae000
close(3)                                = 0
open("/lib64/libuuid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=19944, ...}) = 0
mmap(NULL, 2113920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8ce9c000
mprotect(0x7fae8cea0000, 2093056, PROT_NONE) = 0
mmap(0x7fae8d09f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fae8d09f000
close(3)                                = 0
open("/lib64/libblkid.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`\205\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=260640, ...}) = 0
mmap(NULL, 2353896, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8cc5d000
mprotect(0x7fae8cc97000, 2097152, PROT_NONE) = 0
mmap(0x7fae8ce97000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7fae8ce97000
mmap(0x7fae8ce9b000, 2792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fae8ce9b000
close(3)                                = 0
open("/lib64/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20V\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1171192, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2ad000
mmap(NULL, 3178856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8c954000
mprotect(0x7fae8ca5c000, 2093056, PROT_NONE) = 0
mmap(0x7fae8cc5b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x107000) = 0x7fae8cc5b000
close(3)                                = 0
open("/lib64/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\"\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=89992, ...}) = 0
mmap(NULL, 2183688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8c73e000
mprotect(0x7fae8c753000, 2093056, PROT_NONE) = 0
mmap(0x7fae8c952000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fae8c952000
close(3)                                = 0
open("/lib64/liblzo2.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0&\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=134440, ...}) = 0
mmap(NULL, 2228456, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8c51d000
mprotect(0x7fae8c53d000, 2093056, PROT_NONE) = 0
mmap(0x7fae8c73c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1f000) = 0x7fae8c73c000
close(3)                                = 0
open("/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200`\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=145568, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2ac000
mmap(NULL, 2213072, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8c300000
mprotect(0x7fae8c317000, 2097152, PROT_NONE) = 0
mmap(0x7fae8c517000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fae8c517000
mmap(0x7fae8c519000, 13520, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fae8c519000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\1\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2125464, ...}) = 0
mmap(NULL, 3956544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fae8bf3a000
mprotect(0x7fae8c0f6000, 2097152, PROT_NONE) = 0
mmap(0x7fae8c2f6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bc000) = 0x7fae8c2f6000
mmap(0x7fae8c2fc000, 16192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fae8c2fc000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2ab000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2a9000
arch_prctl(ARCH_SET_FS, 0x7fae8d2a9880) = 0
mprotect(0x7fae8c2f6000, 16384, PROT_READ) = 0
mprotect(0x7fae8c517000, 4096, PROT_READ) = 0
mprotect(0x7fae8c73c000, 4096, PROT_READ) = 0
mprotect(0x7fae8c952000, 4096, PROT_READ) = 0
mprotect(0x7fae8cc5b000, 4096, PROT_READ) = 0
mprotect(0x7fae8d09f000, 4096, PROT_READ) = 0
mprotect(0x7fae8ce97000, 12288, PROT_READ) = 0
mprotect(0x666000, 12288, PROT_READ)    = 0
mprotect(0x7fae8d2c4000, 4096, PROT_READ) = 0
munmap(0x7fae8d2ae000, 84288)           = 0
set_tid_address(0x7fae8d2a9b50)         = 1111
set_robust_list(0x7fae8d2a9b60, 24)     = 0
rt_sigaction(SIGRTMIN, {0x7fae8c305b60, [], SA_RESTORER|SA_SIGINFO, 0x7fae8c30f970}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x7fae8c305bf0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x7fae8c30f970}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
brk(0)                                  = 0x2669000
brk(0x268a000)                          = 0x268a000
brk(0)                                  = 0x268a000
open("/proc/self/mounts", O_RDONLY|O_CLOEXEC) = 3
futex(0x7fae8c2fd368, FUTEX_WAKE_PRIVATE, 2147483647) = 0
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2c2000
read(3, "rootfs / rootfs rw,seclabel 0 0\n"..., 1024) = 1024
read(3, "cpuacct 0 0\ncgroup /sys/fs/cgrou"..., 1024) = 1024
stat("/", {st_mode=S_IFDIR|0755, st_size=132, ...}) = 0
stat("/", {st_mode=S_IFDIR|0755, st_size=132, ...}) = 0
openat(AT_FDCWD, "/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
ioctl(4, BTRFS_IOC_FS_INFO, 0x7fff21622990) = 0
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722a0) = -1 ENODEV (No such device)
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722a0) = 0
close(4)                                = 0
open("/", O_RDONLY|O_NOATIME)           = 4
ioctl(4, BTRFS_IOC_GET_FSLABEL, 0x7fff21622800) = 0
close(4)                                = 0
open("/", O_RDONLY)                     = 4
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a260) = 0
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a280) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2c1000
write(1, "Label: 'rawhide'  uuid: d372e5d1"..., 61Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
) = 61
write(1, "\tTotal devices 1 FS bytes used 7"..., 39	Total devices 1 FS bytes used 7.55GiB
) = 39
open("/dev/sda3", O_RDONLY)             = 5
close(5)                                = 0
write(1, "\tdevid    1 size 79.31GiB used 1"..., 55	devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
) = 55
write(1, "\n", 1
)                       = 1
close(4)                                = 0
read(3, " rw,relatime 0 0\ntmpfs /tmp tmpf"..., 1024) = 574
stat("/home", {st_mode=S_IFDIR|0755, st_size=10, ...}) = 0
stat("/home", {st_mode=S_IFDIR|0755, st_size=10, ...}) = 0
openat(AT_FDCWD, "/home", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
ioctl(4, BTRFS_IOC_FS_INFO, 0x7fff21622990) = 0
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = -1 ENODEV (No such device)
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = 0
close(4)                                = 0
open("/home", O_RDONLY|O_NOATIME)       = 4
ioctl(4, BTRFS_IOC_GET_FSLABEL, 0x7fff21622800) = 0
close(4)                                = 0
open("/home", O_RDONLY)                 = 4
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a280) = 0
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a2a0) = 0
close(4)                                = 0
stat("/var", {st_mode=S_IFDIR|0755, st_size=184, ...}) = 0
stat("/var", {st_mode=S_IFDIR|0755, st_size=184, ...}) = 0
openat(AT_FDCWD, "/var", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
ioctl(4, BTRFS_IOC_FS_INFO, 0x7fff21622990) = 0
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = -1 ENODEV (No such device)
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = 0
close(4)                                = 0
open("/var", O_RDONLY|O_NOATIME)        = 4
ioctl(4, BTRFS_IOC_GET_FSLABEL, 0x7fff21622800) = 0
close(4)                                = 0
open("/var", O_RDONLY)                  = 4
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a280) = 0
ioctl(4, BTRFS_IOC_SPACE_INFO, 0x266a2a0) = 0
close(4)                                = 0
stat("/mnt", {st_mode=S_IFDIR|0755, st_size=30, ...}) = 0
stat("/mnt", {st_mode=S_IFDIR|0755, st_size=30, ...}) = 0
openat(AT_FDCWD, "/mnt", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4
ioctl(4, BTRFS_IOC_FS_INFO, 0x7fff21622990) = 0
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = -1 ENODEV (No such device)
ioctl(4, BTRFS_IOC_DEV_INFO, 0x26722c0) = 0
write(2, "btrfs: utils.c:1769: get_fs_info"..., 87btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
) = 87
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fae8d2c0000
rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0
tgkill(1111, 1111, SIGABRT)             = 0
--- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=1111, si_uid=0} ---
+++ killed by SIGABRT (core dumped) +++
Aborted (core dumped)

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-05-11  1:51 bug adding device to seed device, btrfs fi show fails Chris Murphy
  2014-05-11  3:38 ` Chris Murphy
@ 2014-05-12  2:00 ` Anand Jain
  2014-05-13  9:12   ` Wang Shilong
  1 sibling, 1 reply; 7+ messages in thread
From: Anand Jain @ 2014-05-12  2:00 UTC (permalink / raw)
  To: Chris Murphy, Btrfs BTRFS


This patch posted a long time back should fix it.
   http://permalink.gmane.org/gmane.comp.file-systems.btrfs/33276

Could you test it ?

Thanks, Anand


On 05/11/2014 09:51 AM, Chris Murphy wrote:
> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
> btrfs-progs 3.14
>
> /dev/sdb2 = existing btrfs fs
> /dev/sdc3 = unformatted partition
>
>
> # btrfstune -S1 /dev/sdb2
> # mount /dev/sdb2 /mnt
> mount: /dev/sdb2 is write-protected, mounting read-only
> # btrfs device add /dev/sdc3 /mnt
> Performing full device TRIM (75.90GiB) ...
> # btrfs fi show
> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
> 	Total devices 1 FS bytes used 7.55GiB
> 	devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
>
> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
>
> Nothing listed in dmesg.--
> 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
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-05-12  2:00 ` Anand Jain
@ 2014-05-13  9:12   ` Wang Shilong
  2014-08-14  4:05     ` Chris Murphy
  0 siblings, 1 reply; 7+ messages in thread
From: Wang Shilong @ 2014-05-13  9:12 UTC (permalink / raw)
  To: Anand Jain; +Cc: Chris Murphy, Btrfs BTRFS

Hi Anand,

On 05/12/2014 10:00 AM, Anand Jain wrote:
>
> This patch posted a long time back should fix it.
>   http://permalink.gmane.org/gmane.comp.file-systems.btrfs/33276
I sent a patch to address another problem, plus your patch should can
fix the problem.

https://patchwork.kernel.org/patch/4163791/

Thanks,
Wang
>
> Could you test it ?
>
> Thanks, Anand
>
>
> On 05/11/2014 09:51 AM, Chris Murphy wrote:
>> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
>> btrfs-progs 3.14
>>
>> /dev/sdb2 = existing btrfs fs
>> /dev/sdc3 = unformatted partition
>>
>>
>> # btrfstune -S1 /dev/sdb2
>> # mount /dev/sdb2 /mnt
>> mount: /dev/sdb2 is write-protected, mounting read-only
>> # btrfs device add /dev/sdc3 /mnt
>> Performing full device TRIM (75.90GiB) ...
>> # btrfs fi show
>> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
>>     Total devices 1 FS bytes used 7.55GiB
>>     devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
>>
>> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= 
>> fi_args->num_devices)' failed.
>>
>> Nothing listed in dmesg.--
>> 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
>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-05-13  9:12   ` Wang Shilong
@ 2014-08-14  4:05     ` Chris Murphy
  2014-08-14  4:37       ` Anand Jain
  2014-08-14  4:42       ` Chris Murphy
  0 siblings, 2 replies; 7+ messages in thread
From: Chris Murphy @ 2014-08-14  4:05 UTC (permalink / raw)
  To: Btrfs BTRFS; +Cc: Anand Jain, Miao Xie, Wang Shilong


>> On 05/11/2014 09:51 AM, Chris Murphy wrote:
>>> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
>>> btrfs-progs 3.14
>>> 
>>> /dev/sdb2 = existing btrfs fs
>>> /dev/sdc3 = unformatted partition
>>> 
>>> 
>>> # btrfstune -S1 /dev/sdb2
>>> # mount /dev/sdb2 /mnt
>>> mount: /dev/sdb2 is write-protected, mounting read-only
>>> # btrfs device add /dev/sdc3 /mnt
>>> Performing full device TRIM (75.90GiB) ...
>>> # btrfs fi show
>>> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
>>>    Total devices 1 FS bytes used 7.55GiB
>>>    devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
>>> 
>>> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.

Old bug. I thought this patch would fix it, and see it is in integration branch. So I built a kernel and also btrfs-progs to test, but both 'fi show' and 'replace start' fail. However, 'device delete' works.

[PATCH 01/10] Btrfs: Fix the problem that the replace destroys the seed filesystem
https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg35774.html


This is what I just did. /dev/sdb is an existing btrfs volume not mounted, /dev/sdc is blank (a new VDI so it's definitely full of zeros.)

# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sdb               8:16   0   80G  0 disk 
sdc               8:32   0   80G  0 disk 
# btrfs fi show
Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
	Total devices 1 FS bytes used 2.47GiB
	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb

Btrfs v3.14.2-167-ge514381
# btrfstune -S1 /dev/sdb
# mount /dev/sdb /mnt
mount: /dev/sdb is write-protected, mounting read-only
# btrfs device add /dev/sdc /mnt
# btrfs fi show
btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
Aborted (core dumped)
# umount /mnt
# mount /dev/sdc /mnt
# btrfs replace start -f 0 2 /mnt
btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
Aborted (core dumped)
# btrfs device delete /dev/sdc /mnt
ERROR: error removing the device '/dev/sdc' - unable to remove the only writeable device
# btrfs device delete /dev/sdb /mnt

The last command does complete and both /dev/sdb and /dev/sdc appear to work.

For above, this is what I get in dmesg:
[   60.089303]  sdb: unknown partition table
[   69.945922] BTRFS info (device sdb): disk space caching is enabled
[   69.969784] SELinux: initialized (dev sdb, type btrfs), uses xattr
[   84.141416]  sdc: unknown partition table
[   84.180189]  sdc: unknown partition table
[   84.268800] BTRFS info (device sdb): relocating block group 12905873408 flags 2
[   84.338819] BTRFS info (device sdb): relocating block group 0 flags 2
[   84.393097] BTRFS info (device sdb): disk added /dev/sdc
[   84.396880]  sdc: unknown partition table
[  341.031180] BTRFS info (device sdc): disk space caching is enabled
[  341.050933] BTRFS: checking UUID tree
[  341.053573] SELinux: initialized (dev sdc, type btrfs), uses xattr
[  403.316005] BTRFS info (device sdc): relocating block group 10758389760 flags 1
[  403.422962] BTRFS info (device sdc): found 35 extents
[  403.561964] BTRFS info (device sdc): found 35 extents
[  403.597289] BTRFS info (device sdc): relocating block group 9684647936 flags 1
[  403.634505] BTRFS info (device sdc): relocating block group 8610906112 flags 1
[  406.168389] BTRFS info (device sdc): found 2907 extents
[  407.379575] BTRFS info (device sdc): found 2907 extents
[  407.415344] BTRFS info (device sdc): relocating block group 7537164288 flags 1
[  409.497717] BTRFS info (device sdc): found 613 extents
[  412.010498] BTRFS info (device sdc): found 613 extents
[  412.040723] BTRFS info (device sdc): relocating block group 6463422464 flags 1
[  414.782188] BTRFS info (device sdc): found 1613 extents
[  417.343576] BTRFS info (device sdc): found 1613 extents
[  417.379543] BTRFS info (device sdc): relocating block group 5389680640 flags 1
[  419.068584] BTRFS info (device sdc): found 1060 extents
[  420.789650] BTRFS info (device sdc): found 1060 extents
[  420.823006] BTRFS info (device sdc): relocating block group 4315938816 flags 1
[  423.647962] BTRFS info (device sdc): found 3354 extents
[  425.073006] BTRFS info (device sdc): found 3354 extents
[  425.108412] BTRFS info (device sdc): relocating block group 3242196992 flags 1
[  427.212816] BTRFS info (device sdc): found 2493 extents
[  428.217004] BTRFS info (device sdc): found 2493 extents
[  428.246424] BTRFS info (device sdc): relocating block group 2168455168 flags 1
[  437.060542] BTRFS info (device sdc): found 22108 extents
[  440.286964] BTRFS info (device sdc): found 22108 extents
[  440.442528] BTRFS info (device sdc): relocating block group 1094713344 flags 1
[  449.026968] BTRFS info (device sdc): found 3914 extents
[  453.901003] BTRFS info (device sdc): found 3914 extents
[  453.952946] BTRFS info (device sdc): relocating block group 20971520 flags 4
[  454.848005] BTRFS info (device sdc): found 1352 extents
[  454.903087] BTRFS info (device sdc): relocating block group 12582912 flags 1
[  454.997235] BTRFS info (device sdc): found 46 extents
[  455.169779] BTRFS info (device sdc): found 46 extents
[  455.210596] BTRFS info (device sdc): relocating block group 4194304 flags 4
[  455.261987] BTRFS info (device sdc): disk deleted /dev/sdb
[  455.267911]  sdb: unknown partition table

Looks like device delete did work; and now fi show also works.

# btrfs fi show
Label: none  uuid: 9a072c79-db71-4bfb-914c-9ebf06215c3e
	Total devices 1 FS bytes used 2.47GiB
	devid    2 size 80.00GiB used 4.03GiB path /dev/sdc

Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
	Total devices 1 FS bytes used 2.47GiB
	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb


The following patch is not in integration. Anand Jain asked me to try it in May for this problem, but I forgot.

http://permalink.gmane.org/gmane.comp.file-systems.btrfs/33276

Should I try it?



Chris Murphy


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-08-14  4:05     ` Chris Murphy
@ 2014-08-14  4:37       ` Anand Jain
  2014-08-14  4:42       ` Chris Murphy
  1 sibling, 0 replies; 7+ messages in thread
From: Anand Jain @ 2014-08-14  4:37 UTC (permalink / raw)
  To: Chris Murphy, Btrfs BTRFS; +Cc: Miao Xie, Wang Shilong


Chris,

For the seed replace issues. you have to try this patch set.
Thanks.
  https://patchwork.kernel.org/patch/4716371/

Next, for the failing 'btrfs fi show' issue the following diff
is the latest. The last attempt was ..
  [PATCH] btrfs: ioctl BTRFS_IOC_FS_INFO and BTRFS_IOC_DEV_INFO 
miss-matched with slots

However as Wang mentioned we would need to show both seed and
sprout together, to make sense to the user.

So I have the following fix. which will soon be sent out
when tests are completed.


kernel:
-------------
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index da73ab3..05dd88b 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -2725,7 +2725,7 @@ static long btrfs_ioctl_fs_info(struct btrfs_root 
*root, void __user *arg)
                 return -ENOMEM;

         mutex_lock(&fs_devices->device_list_mutex);
-       fi_args->num_devices = fs_devices->num_devices;
+       fi_args->num_devices = fs_devices->total_devices;
         memcpy(&fi_args->fsid, root->fs_info->fsid, sizeof(fi_args->fsid));

         list_for_each_entry_safe(device, next, &fs_devices->devices, 
dev_list) {
----------------


btrfs-progs:
----------------
diff --git a/utils.c b/utils.c
index 8bdc2a7..fa837b9 100644
--- a/utils.c
+++ b/utils.c
@@ -1929,12 +1929,29 @@ int get_fs_info(char *path, struct 
btrfs_ioctl_fs_info_args *fi_args,
         if (!fi_args->num_devices)
                 goto out;

-       di_args = *di_ret = malloc(fi_args->num_devices * sizeof(*di_args));
+       /*
+        * with kernel patch
+        * btrfs: ioctl BTRFS_IOC_FS_INFO and BTRFS_IOC_DEV_INFO 
miss-matched with slots
+        * the kernel now returns total_devices which does not include
+        * replacing device if running. There might be a race condition
+	 * where replace might have been completed before DEVS are
+	 * probed. So we anyway probe the replacing at devid 0
+	 * separately which would return -ENODEV if replace has
+	 * finished.
+        */
+
+       di_args = *di_ret = malloc((fi_args->num_devices + 1) * 
sizeof(*di_args));
         if (!di_args) {
                 ret = -errno;
                 goto out;
         }

+       /* get the replace target device if it is there */
+       ret = get_device_info(fd, i, &di_args[ndevs]);
+       if (!ret) {
+               ndevs++;
+               fi_args->num_devices++;
+       }
+       i++;
+
----------------


Thanks, Anand

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: bug adding device to seed device, btrfs fi show fails
  2014-08-14  4:05     ` Chris Murphy
  2014-08-14  4:37       ` Anand Jain
@ 2014-08-14  4:42       ` Chris Murphy
  1 sibling, 0 replies; 7+ messages in thread
From: Chris Murphy @ 2014-08-14  4:42 UTC (permalink / raw)
  To: Btrfs BTRFS; +Cc: Anand Jain, Miao Xie, Wang Shilong


On Aug 13, 2014, at 10:05 PM, Chris Murphy <lists@colorremedies.com> wrote:

> 
>>> On 05/11/2014 09:51 AM, Chris Murphy wrote:
>>>> kernel 3.15.0-0.rc5.git0.1.fc21.x86_64
>>>> btrfs-progs 3.14
>>>> 
>>>> /dev/sdb2 = existing btrfs fs
>>>> /dev/sdc3 = unformatted partition
>>>> 
>>>> 
>>>> # btrfstune -S1 /dev/sdb2
>>>> # mount /dev/sdb2 /mnt
>>>> mount: /dev/sdb2 is write-protected, mounting read-only
>>>> # btrfs device add /dev/sdc3 /mnt
>>>> Performing full device TRIM (75.90GiB) ...
>>>> # btrfs fi show
>>>> Label: 'rawhide'  uuid: d372e5d1-386f-460c-b036-611469e0155e
>>>>   Total devices 1 FS bytes used 7.55GiB
>>>>   devid    1 size 79.31GiB used 11.04GiB path /dev/sda3
>>>> 
>>>> btrfs: utils.c:1769: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
> 
> Old bug. I thought this patch would fix it, and see it is in integration branch. So I built a kernel and also btrfs-progs to test, but both 'fi show' and 'replace start' fail. However, 'device delete' works.
> 
> [PATCH 01/10] Btrfs: Fix the problem that the replace destroys the seed filesystem
> https://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg35774.html
> 
> 
> This is what I just did. /dev/sdb is an existing btrfs volume not mounted, /dev/sdc is blank (a new VDI so it's definitely full of zeros.)
> 
> # lsblk
> NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
> sdb               8:16   0   80G  0 disk 
> sdc               8:32   0   80G  0 disk 
> # btrfs fi show
> Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
> 	Total devices 1 FS bytes used 2.47GiB
> 	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb
> 
> Btrfs v3.14.2-167-ge514381
> # btrfstune -S1 /dev/sdb
> # mount /dev/sdb /mnt
> mount: /dev/sdb is write-protected, mounting read-only
> # btrfs device add /dev/sdc /mnt
> # btrfs fi show
> btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
> Aborted (core dumped)
> # umount /mnt
> # mount /dev/sdc /mnt
> # btrfs replace start -f 0 2 /mnt
> btrfs: utils.c:1939: get_fs_info: Assertion `!(ndevs >= fi_args->num_devices)' failed.
> Aborted (core dumped)
> # btrfs device delete /dev/sdc /mnt
> ERROR: error removing the device '/dev/sdc' - unable to remove the only writeable device
> # btrfs device delete /dev/sdb /mnt
> 
> The last command does complete and both /dev/sdb and /dev/sdc appear to work.
> 
> For above, this is what I get in dmesg:
> [   60.089303]  sdb: unknown partition table
> [   69.945922] BTRFS info (device sdb): disk space caching is enabled
> [   69.969784] SELinux: initialized (dev sdb, type btrfs), uses xattr
> [   84.141416]  sdc: unknown partition table
> [   84.180189]  sdc: unknown partition table
> [   84.268800] BTRFS info (device sdb): relocating block group 12905873408 flags 2
> [   84.338819] BTRFS info (device sdb): relocating block group 0 flags 2
> [   84.393097] BTRFS info (device sdb): disk added /dev/sdc
> [   84.396880]  sdc: unknown partition table
> [  341.031180] BTRFS info (device sdc): disk space caching is enabled
> [  341.050933] BTRFS: checking UUID tree
> [  341.053573] SELinux: initialized (dev sdc, type btrfs), uses xattr
> [  403.316005] BTRFS info (device sdc): relocating block group 10758389760 flags 1
> [  403.422962] BTRFS info (device sdc): found 35 extents
> [  403.561964] BTRFS info (device sdc): found 35 extents
> [  403.597289] BTRFS info (device sdc): relocating block group 9684647936 flags 1
> [  403.634505] BTRFS info (device sdc): relocating block group 8610906112 flags 1
> [  406.168389] BTRFS info (device sdc): found 2907 extents
> [  407.379575] BTRFS info (device sdc): found 2907 extents
> [  407.415344] BTRFS info (device sdc): relocating block group 7537164288 flags 1
> [  409.497717] BTRFS info (device sdc): found 613 extents
> [  412.010498] BTRFS info (device sdc): found 613 extents
> [  412.040723] BTRFS info (device sdc): relocating block group 6463422464 flags 1
> [  414.782188] BTRFS info (device sdc): found 1613 extents
> [  417.343576] BTRFS info (device sdc): found 1613 extents
> [  417.379543] BTRFS info (device sdc): relocating block group 5389680640 flags 1
> [  419.068584] BTRFS info (device sdc): found 1060 extents
> [  420.789650] BTRFS info (device sdc): found 1060 extents
> [  420.823006] BTRFS info (device sdc): relocating block group 4315938816 flags 1
> [  423.647962] BTRFS info (device sdc): found 3354 extents
> [  425.073006] BTRFS info (device sdc): found 3354 extents
> [  425.108412] BTRFS info (device sdc): relocating block group 3242196992 flags 1
> [  427.212816] BTRFS info (device sdc): found 2493 extents
> [  428.217004] BTRFS info (device sdc): found 2493 extents
> [  428.246424] BTRFS info (device sdc): relocating block group 2168455168 flags 1
> [  437.060542] BTRFS info (device sdc): found 22108 extents
> [  440.286964] BTRFS info (device sdc): found 22108 extents
> [  440.442528] BTRFS info (device sdc): relocating block group 1094713344 flags 1
> [  449.026968] BTRFS info (device sdc): found 3914 extents
> [  453.901003] BTRFS info (device sdc): found 3914 extents
> [  453.952946] BTRFS info (device sdc): relocating block group 20971520 flags 4
> [  454.848005] BTRFS info (device sdc): found 1352 extents
> [  454.903087] BTRFS info (device sdc): relocating block group 12582912 flags 1
> [  454.997235] BTRFS info (device sdc): found 46 extents
> [  455.169779] BTRFS info (device sdc): found 46 extents
> [  455.210596] BTRFS info (device sdc): relocating block group 4194304 flags 4
> [  455.261987] BTRFS info (device sdc): disk deleted /dev/sdb
> [  455.267911]  sdb: unknown partition table
> 
> Looks like device delete did work; and now fi show also works.
> 
> # btrfs fi show
> Label: none  uuid: 9a072c79-db71-4bfb-914c-9ebf06215c3e
> 	Total devices 1 FS bytes used 2.47GiB
> 	devid    2 size 80.00GiB used 4.03GiB path /dev/sdc
> 
> Label: none  uuid: caeaf998-6063-4c09-9088-0e05d4d4f54e
> 	Total devices 1 FS bytes used 2.47GiB
> 	devid    1 size 80.00GiB used 11.02GiB path /dev/sdb
> 
> 
> The following patch is not in integration. Anand Jain asked me to try it in May for this problem, but I forgot.
> 
> http://permalink.gmane.org/gmane.comp.file-systems.btrfs/33276
> 
> Should I try it?


Looks like it was withdrawn. Maybe this one?

[PATCH] btrfs: ioctl BTRFS_IOC_FS_INFO and BTRFS_IOC_DEV_INFO miss-matched with slots
http://permalink.gmane.org/gmane.comp.file-systems.btrfs/35157



Chris Murphy

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-08-14  4:42 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-11  1:51 bug adding device to seed device, btrfs fi show fails Chris Murphy
2014-05-11  3:38 ` Chris Murphy
2014-05-12  2:00 ` Anand Jain
2014-05-13  9:12   ` Wang Shilong
2014-08-14  4:05     ` Chris Murphy
2014-08-14  4:37       ` Anand Jain
2014-08-14  4:42       ` Chris Murphy

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).