<div dir="ltr"><div><div>Hi,<br><br></div>I'm a newbie to dm, and i'm not sure if it's the right place to ask the following question. Please correct me if not, and thanks for any reply.<br><br></div><div>In short, I did mkfs.ext3 on a dm thin-vol, and it looks consumed much more data space than on a loop image. As a result, mkfs failed due to inadequate space.<br><br>---<br>[root@vm ~]# dd if=/dev/zero of=10G_1.img bs=1 count=0 seek=10G                                          <br>0+0 records in<br>0+0 records out<br>0 bytes (0 B) copied, 0.000102011 s, 0.0 kB/s<br>[root@vm ~]# /usr/sbin/mkfs -t ext3 -- -F -b 1024 10G_1.img <br>mke2fs 1.42.9 (28-Dec-2013)<br>Discarding device blocks: done                            <br>Filesystem label=<br>OS type: Linux<br>Block size=1024 (log=0)<br>Fragment size=1024 (log=0)<br>Stride=0 blocks, Stripe width=0 blocks<br>655360 inodes, 10485760 blocks<br>524288 blocks (5.00%) reserved for the super user<br>First data block=1<br>Maximum filesystem blocks=77594624<br>1280 block groups<br>8192 blocks per group, 8192 fragments per group<br>512 inodes per group<br>Superblock backups stored on blocks: <br>        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, <br>        1024001, 1990657, 2809857, 5120001, 5971969<br><br>Allocating group tables: done                            <br>Writing inode tables: done                            <br>Creating journal (32768 blocks): done<br>Writing superblocks and filesystem accounting information: done     <br><br>[root@vm ~]# du -sh 10G_1.img <br>199M    10G_1.img<br>---<br></div><div>As shown above, mks.ext3 on a 10G loop image should use 199M space. In the following test, i'll create a dm thin-vol with 10G virtual size and 500m backing size, and i expect 500m is adequate for mkfs.ext3.<br>---<br>[root@vm ~]# dd if=/dev/zero of=10G.img bs=1 count=0 seek=10G<br>0+0 records in<br>0+0 records out<br>0 bytes (0 B) copied, 0.000125097 s, 0.0 kB/s<br>[root@vm ~]# losetup /dev/loop0 /root/10G.img<br>[root@vm ~]# /usr/sbin/dmsetup create thin-meta --table '0 48000 linear /dev/loop0 10240'<br>[root@vm ~]# /usr/sbin/dmsetup create thin-data --table '0 1024000 linear /dev/loop0 58240'<br>[root@vm ~]# /usr/sbin/dmsetup create thin-pool --table '0 1024000 thin-pool /dev/mapper/thin-meta /dev/mapper/thin-data 1024 200'<br>[root@vm ~]# /usr/sbin/dmsetup message /dev/mapper/thin-pool 0 'create_thin 17021'<br>[root@vm ~]# /usr/sbin/dmsetup create thin-vol --table '0 10240000 thin /dev/mapper/thin-pool 17021'<br>[root@vm ~]# dmsetup status | grep pool<br>thin-pool: 0 1024000 thin-pool 0 10/6000 0/1000 - rw discard_passdown queue_if_no_space -<br>[root@vm ~]# /usr/sbin/mkfs -t ext3 -- -F -b 1024 /dev/mapper/thin-vol<br>mke2fs 1.42.9 (28-Dec-2013)<br>Discarding device blocks: done                            <br>Filesystem label=<br>OS type: Linux<br>Block size=1024 (log=0)<br>Fragment size=1024 (log=0)<br>Stride=64 blocks, Stripe width=512 blocks<br>320000 inodes, 5120000 blocks<br>256000 blocks (5.00%) reserved for the super user<br>First data block=1<br>Maximum filesystem blocks=72351744<br>625 block groups<br>8192 blocks per group, 8192 fragments per group<br>512 inodes per group<br>Superblock backups stored on blocks: <br>        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409, 663553, <br>        1024001, 1990657, 2809857<br><br>Allocating group tables: done                            <br>Writing inode tables: done                            <br>Creating journal (32768 blocks): done<br>Writing superblocks and filesystem accounting information:        <br>Warning, had trouble writing out superblocks.<br>[root@vm ~]# echo $?<br>5<br>[root@vm ~]# dmsetup status | grep pool<br>thin-pool: 0 1024000 thin-pool 0 17/6000 1000/1000 - out_of_data_space discard_passdown error_if_no_space -<br>[root@vm ~]# journalctl -k<br>Jan 15 18:15:38 vm kernel: device-mapper: thin: 253:8: switching pool to write mode<br>Jan 15 18:15:38 vm kernel: device-mapper: thin: 253:8: switching pool to out-of-data-space (queue IO) mode<br>Jan 15 18:16:39 vm kernel: device-mapper: thin: 253:8: switching pool to out-of-data-space (error IO) mode<br>Jan 15 18:16:39 vm kernel: buffer_io_error: 25590 callbacks suppressed<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 988832, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 989184, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 990896, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 991232, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 992960, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 993280, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 995024, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 995328, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 997088, lost async page write<br>Jan 15 18:16:39 vm kernel: Buffer I/O error on dev dm-9, logical block 997376, lost async page write<br>---<br></div><div>In another test, mkfs succeeds with creating a 2500m virtual size thin-vol instead of 5000m:<br>/usr/sbin/dmsetup create thin-vol --table '0 5120000 thin /dev/mapper/thin-pool 17021'<br><br></div><div>I think the failure is due to mkfs runs out of space on dm thin-vol, but why is it?<br><br></div><div>Thanks,<br></div><div>Young<br></div><div><br><br></div></div>