# BTRFS in 2.6.35 - Still running out of space

## devsk

I thought Edward and Chris's discussion led to some patches which would eliminate this issue. But apparently not. I have 11% free but I can't create a small 1KB file.

Essentially, I created space for 4GB, used 3.5GB with a large file and used about 50MB for small files. Rest is gone! Not sure where.

```
# time dd if=/dev/zero of=btrfs-fs.img count=8000 bs=512k oflag=direct

# mkfs.btrfs btrfs-fs.img 

# mount -o loop,noatime btrfs-fs.img /mnt/floppy/

# time dd if=/dev/zero of=tempfile count=7000 bs=512k oflag=direct

# df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3595568    500432  88% /mnt/floppy

# time cp -a /var/tmp/ccache/[a-d]* .

cp: writing `./b/1/5ef5578bad49e7b26bb6d7f98ccdb2-3312628': No space left on device

....

# df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3644708    451292  89% /mnt/floppy

# find .|wc -l

3628

```

----------

## Spidey

Check your inodes, last time I faced this kind of problem, there were plenty of space on my file system, but no inodes.

----------

## devsk

 *Spidey wrote:*   

> Check your inodes, last time I faced this kind of problem, there were plenty of space on my file system, but no inodes.

 That generally holds for most filesystems but not for BTRFS. BTRFS is special in its ENOSPC handling.

It keeps on creating new files if I let the copy go on. Of course, the file sizes are 0. I could raise that file count from 3000 to 8000 (and space used did fall) but all new files are 0 size.

----------

## idella4

devsk;  

I can't explain, but I repeated tour test.

```

gentoo64 ~ # time dd if=/dev/zero of=btrfs-fs.img count=8000 bs=512k oflag=direct                

8000+0 records in                                                                                

8000+0 records out                                                                               

4194304000 bytes (4.2 GB) copied, 81.4955 s, 51.5 MB/s                                           

real    1m21.513s

user    0m0.001s 

sys     0m0.246s 

gentoo64 ~ # mkfs.btrfs btrfs-fs.img

WARNING! - Btrfs Btrfs v0.19 IS EXPERIMENTAL

WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on btrfs-fs.img

        nodesize 4096 leafsize 4096 sectorsize 4096 size 3.91GB

Btrfs Btrfs v0.19                                              

gentoo64 ~ # mount -o loop,noatime btrfs-fs.img /mnt/ftp/   

gentoo64 ~ # cd /mnt/ftp

gentoo64 ftp # time dd if=/dev/zero of=tempfile count=7000 bs=512k oflag=direct

7000+0 records in                                                              

7000+0 records out                                                             

3670016000 bytes (3.7 GB) copied, 65.248 s, 56.2 MB/s                          

real    1m5.251s

user    0m0.011s

sys     0m2.819s

gentoo64 ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3588932    507068  88% /mnt/ftp  

```

so far we're in sync.  I don't know what you had in /tmp/ccache, but

```

gentoo64 ftp # time cp -a /usr/portage/[a-d]* .

real    2m34.783s

user    0m0.117s 

sys     0m2.762s 

gentoo64 ftp # ls -id /mnt/ftp

256 /mnt/ftp

gentoo64 ftp # find .|wc -l

46745

gentoo64 ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3699836    396164  91% /mnt/ftp

gentoo64 ftp # find .|wc -l

46745

```

So it appears your  

```
 time cp -a /var/tmp/ccache/[a-d]* . 
```

  screwed up somehow.  I suspect that's the essence  of your query.

 *Quote:*   

> 
> 
> but I can't create a small 1KB file.
> 
> 

 

```

gentoo64 ftp # echo 'some new text' > new.txt

gentoo64 ftp # ls -ld new.txt

-rw-r--r-- 1 root root 14 Aug  3 19:17 new.txt

gentoo64 ftp # ls -id new.txt

47000 new.txt

```

It's not 1Kb, but it's a comparison.

I don't know enough about it, but this gentoo & btrfs handles it ok.  Does cp have a form of debug output?

I wonder if you re-used dd to copy files it would work ok?

Out of interest,

 *Quote:*   

> 
> 
> I thought Edward and Chris's discussion led to some patches which would eliminate this issue
> 
> 

 

What was this issue, whoever Edward and Chris are?

----------

## py-ro

What says 

```
btrfs filesystem df
```

?

Py

----------

## idella4

py-ro,

you might want to modify that

```

gentoo64 ~ # btrfs filesystem df

bash: btrfs: command not found

gentoo64 ~ # btrfs / df

bash: btrfs: command not found

gentoo64 ~ # lsmod | grep btrfs

btrfs                 730123  2

libcrc32c               1680  1 btrfs

```

and I don't know what it should be.

in preference to making another reply, which won't help matters, re the following post;

edit:

```

gentoo64 ~ # emerge -s btrfs

Searching...

[ Results for search key : btrfs ]

[ Applications found : 1 ]

*  sys-fs/btrfs-progs

      Latest version available: 0.19

      Latest version installed: 0.19

      Size of files: 115 kB

            ......................

gentoo64 ~ # chroot /mnt/genny

gentoo64 / # emerge -s btrfs

Searching...

[ Results for search key : btrfs ]

[ Applications found : 1 ]

*  sys-fs/btrfs-progs

      Latest version available: 0.19

      Latest version installed: [ Not Installed ]

      Size of files: 115 kB

         ..........................

```

If there is, I don't think it's a gentoo ebuild.

----------

## py-ro

No, get newer btrfs tools.  :Wink: 

btrfs is new and all other utils will be deprecated soon.

Py

----------

## devsk

```
# time btrfs filesystem df /mnt/floppy

Data: total=3.50GB, used=3.49GB

Metadata: total=200.00MB, used=11.47MB

System: total=12.00MB, used=4.00KB
```

As you can see it thinks total is 3.5GB although I allocated 4GB. Moreover, it has 10MB free but 'cp' died with ENOSPC. Numbers just don't add up.

idella4: This is 2.6.35 with 9999 version of btrfs-progs. It is possible that there is a further regression instead of a fix in 2.6.35. Chris is Chris Mason, the BTRFS author, Edward is Edward Shiskin, the current owner/maintainer of Reiser4.

I would love you to repeat the experiment in 2.6.35. I don't think I did something wrong. I picked 'ccache' files are example of numerous small files. 'portage' is same. So, technically, both experiments are same.

----------

## devsk

BTW: I tried the balance and sync commands repeatedly as well but no avail.

```
# time btrfs filesystem balance /mnt/floppy
```

----------

## idella4

devsk,

sure, no worries.

```

gentoo64 / # emerge -s sources

*  sys-kernel/vanilla-sources

      Latest version available: 2.6.35_rc5

      Latest version installed: [ Not Installed ]

      Size of files: 73,804 kB                   

      Homepage:      http://www.kernel.org       

      Description:   Full sources for the Linux kernel

      License:       GPL-2 freedist     

```

```

gentoo64 / # time btrfs filesystem balance /mnt/gentoo

bash: btrfs: command not found

```

Did you get the source version 9999 from the btrfs website?

You'll have to give me the time to acquire and compile a kernel, on its way.

Oh wow, its finished installing already.  Shouldn't be too long

----------

## devsk

 *idella4 wrote:*   

> devsk,
> 
> sure, no worries.
> 
> ```
> ...

 Just add btrfs to /etc/portage/package.keywords like this:

```
sys-fs/btrfs-progs                      **
```

emerge will now get 9999 version if you are running unstable ~amd64 ARCH.

----------

## idella4

yep, that worked.  won't be long now.  shall put the kernel in place and edit this.

It's compiled but got to tweak it; shouldn't be long

I found it, just adjusting it

----------

## idella4

While I'm getting this sorted, can you tell me if you can compile your system file system type as modules and boot up?  In mine it only works if the system file system is selected as builtin.

Its almost there. It needs more tweaking to find root, gone to gentoo on sata, recompiling for 32 x86.  Won't be long.

Just takes time, shall fix gentoo64 later at leisure which is on an ide.  Just quicker to get genny up.

It appears this vanilla kernel is missing driver amd_pata

```

idella@genny /usr/src/linux-2.6.35-rc5 $ grep PATA_AMD .config-amd64

idella@genny /usr/src/linux-2.6.35-rc5 $ grep PATA .config-amd64

# CONFIG_PATA_CMD640_PCI is not set

CONFIG_PATA_MPIIX=y

# CONFIG_PATA_NS87410 is not set

# CONFIG_PATA_OPTI is not set

# CONFIG_PATA_PCMCIA is not set

# CONFIG_PATA_RZ1000 is not set

CONFIG_PATA_LEGACY=m

```

Here's a test. Do you know how to patch this vanilla kernel with the modules to support the pata_amd?

I am in

```

genny ~ # uname -r 

2.6.35-rc5

```

So.

```

genny ~ # time dd if=/dev/zero of=btrfs-fs.img count=8000 bs=512k oflag=direct

8000+0 records in

8000+0 records out

4194304000 bytes (4.2 GB) copied, 77.7159 s, 54.0 MB/s

real    1m17.717s

user    0m0.010s

sys     0m13.454s

genny ~ # mkfs.btrfs btrfs-fs.img 

WARNING! - Btrfs v0.19-16-g075587c-dirty IS EXPERIMENTAL

WARNING! - see http://btrfs.wiki.kernel.org before using

fs created label (null) on btrfs-fs.img

        nodesize 4096 leafsize 4096 sectorsize 4096 size 3.91GB

Btrfs v0.19-16-g075587c-dirty

genny ~ # mount -o loop,noatime btrfs-fs.img /mnt/ftp/

genny ~ # cd /mnt/ftp

genny ftp # time dd if=/dev/zero of=tempfile count=7000 bs=512k oflag=direct

7000+0 records in

7000+0 records out

3670016000 bytes (3.7 GB) copied, 84.7944 s, 43.3 MB/s

real    1m24.802s

user    0m0.008s

sys     0m2.710s

genny ftp # df . 

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3595616    500384  88% /mnt/ftp

genny ftp # time cp -a /usr/portage/[a-d]* .

real    1m37.111s

user    0m0.305s

sys     0m13.617s

genny ftp # ls

app-accessibility  app-emacs        app-text      dev-lang    dev-tex

app-admin          app-emulation    app-vim       dev-libs    dev-texlive

app-antivirus      app-forensics    app-xemacs    dev-lisp    dev-tinyos

app-arch           app-i18n         dev-ada       dev-ml      dev-util

app-backup         app-laptop       dev-cpp       dev-perl    dev-vcs

app-benchmarks     app-misc         dev-db        dev-php     distfiles

app-cdr            app-mobilephone  dev-dotnet    dev-php5    tempfile

app-crypt          app-office       dev-embedded  dev-python

app-dicts          app-pda          dev-games     dev-ruby

app-doc            app-portage      dev-haskell   dev-scheme

app-editors        app-shells       dev-java      dev-tcltk

genny ftp # ls -id /mnt/ftp 

256 /mnt/ftp

genny ftp # find .|wc -l 

47512

genny ftp # df . 

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3805324    290676  93% /mnt/ftp

genny ftp # find .|wc -l 

47512

genny ftp # echo 'some new text' > new.txt 

genny ftp # ls -ld new.txt 

-rw-r--r-- 1 root root 14 Aug  4 11:58 new.txt

genny ftp # ls -id new.txt

47768 new.txt

genny ftp # 

```

and 

```

genny ~ # time btrfs filesystem balance /mnt/ftp

real    0m3.669s

user    0m0.001s

sys     0m0.242s

```

So, at my end, I'm curious how to equip this kernel with pata_amd.

At your end, you have an entirely different issue.  This gentoo like btrfs quite well.

To try it out, I made my distfiles dir on a btrfs partition.

Your system clearly has something awry, but it's not btrfs itself.

Reading your outcomes, I also immediately thought it was as you said, a regression. 

Do you want my kernel config at all?

Cite any other tests, I may as well use this since I've gone to the trouble of establishing it.

woops, here's an addition

```

genny ~ # fdisk /dev/sda10

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel                                                                                

Building a new DOS disklabel with disk identifier 0x369790e2.                    

Changes will remain in memory only, until you decide to write them.              

After that, of course, the previous content won't be recoverable.                

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): p

Disk /dev/sda10: 48.2 GB, 48233009664 bytes

255 heads, 63 sectors/track, 5863 cylinders, total 94205097 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x369790e2

genny ~ # btrfs filesystem df /mnt/ftp                                           

Data: total=3.50GB, used=3.45GB                                                  

Metadata: total=200.00MB, used=91.98MB                                           

System: total=12.00MB, used=4.00KB    

genny ftp # btrfs filesystem df /mnt/gentoo

Data: total=28.01GB, used=13.68GB

Metadata: total=4.26GB, used=529.12MB

System: total=12.00MB, used=12.00KB

```

 time cp -a / worked fine, df showed 93%, but the above shows it's misreading /mnt/ftp & /mnt/gentoo like you described.  You're the guru, what's next?

----------

## devsk

Whoa! wait. slow down!

Because portage files are smaller than ccache object files, it just needs few more to fail. Try [a-z]* instead of [a-d]*. When I did that, it shows the following when it fails: 

```
# find .|wc -l

59739

# btrfs filesystem df .

Data: total=3.49GB, used=3.48GB

Metadata: total=208.00MB, used=112.05MB

System: total=12.00MB, used=4.00KB

# df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3880592    215408  95% /mnt/floppy
```

 I have no idea why 3.49GB when my volume is 4GB. Even if I take metadata out, it still should be 3.8GB. Even if I forget that, why stop when 3.48GB is used and 3.49GB is total.

So, you see there is nothing wrong with my system. There is something up with BTRFS still.

----------

## devsk

I found another gem of a bug:

I deleted the tempfile (3.5GB file). And copied the local folder from /usr/portage/local. Here is the kicker:

```
# time cp -a /usr/portage/local/ .

cp: writing `./local/ccache/x32/5/9/1c179b03251ae69c511aa5f50a988a-282393': No space left on device

# cp /usr/lib/libc.a .

cp: cannot create regular file `./libc.a': No space left on device

# df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   1568312   2527688  39% /mnt/floppy

# btrfs filesystem df .

Data: total=3.49GB, used=1.12GB

Metadata: total=208.00MB, used=191.92MB

System: total=12.00MB, used=4.00KB

```

Does anybody not see a serious issue with that picture? I have more than 2GB and I can't create a new file. I have serious reservations against this FS!

PS: This may be an inode issue but I thought BTRFS did not have a limit on number of inodes you can create like ext variety of FSs. Moreover, df -i doesn't show anything useful.

```
# df -i .

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/loop0                 0       0       0    -  /mnt/floppy
```

Trying to free up some files, and its hung on me and I had to ctrl-C out of it. It filled my dmesg with tonnes of 

```
[43545.427000] ------------[ cut here ]------------

[43545.427000] WARNING: at fs/btrfs/extent-tree.c:3441 btrfs_block_rsv_check+0x10c/0x13f()

[43545.427000] Hardware name: OEM

[43545.427000] Modules linked in: f71882fg pvrusb2 dvb_core cx2341x tveeprom vboxnetadp vboxnetflt vboxdrv snd_seq_oss snd_seq_midi_event snd_seq 

snd_seq_device snd_pcm_oss snd_mixer_oss tuner_simple tuner_types uvcvideo usb_storage usblp ohci_hcd tun snd_intel8x0 snd_ac97_codec ac97_bus acp

i_cpufreq mperf cifs fuse coretemp tda9887 tda8290 wm8775 tuner cx25840 v4l2_common videodev v4l1_compat v4l2_compat_ioctl32 snd_hda_codec_realtek

 snd_hda_intel snd_hda_codec snd_pcm ohci1394 nvidia(P) snd_timer i2c_i801 ieee1394 r8169 pcspkr snd snd_page_alloc pata_jmicron ehci_hcd uhci_hcd

 evdev [last unloaded: f71882fg]

[43545.427000] Pid: 19024, comm: rm Tainted: P        W   2.6.35 #1

[43545.427000] Call Trace:

[43545.427000]  [<ffffffff81034994>] ? warn_slowpath_common+0x78/0x8c

[43545.427000]  [<ffffffff8116836e>] ? btrfs_block_rsv_check+0x10c/0x13f

[43545.427000]  [<ffffffff81176ae7>] ? __btrfs_end_transaction+0x9f/0x1a8

[43545.427000]  [<ffffffff8117c8b7>] ? btrfs_delete_inode+0x169/0x184

[43545.427000]  [<ffffffff810ac7e3>] ? generic_delete_inode+0x86/0x104

[43545.427000]  [<ffffffff810a513f>] ? do_unlinkat+0xe6/0x13e

[43545.427000]  [<ffffffff810a74cd>] ? vfs_readdir+0x86/0x9c

[43545.427000]  [<ffffffff81099f78>] ? filp_close+0x5f/0x6a

[43545.427000]  [<ffffffff81001f2b>] ? system_call_fastpath+0x16/0x1b

[43545.427000] ---[ end trace be14a72aca4c094f ]---

[43545.427000] block_rsv size 33554432 reserved 8613888 freed 0 0

[43545.428000] ------------[ cut here ]------------

```

And it did not delete anything. It did not allow 

```
# cp /usr/lib/libc.a .

cp: cannot create regular file `./libc.a': No space left on device
```

Manually deleting a couple of files completed successfully but it did not allow me to copy /usr/lib/libc.a still.

It should not be so easy to break a filesystem like that. Not in a stable kernel.

----------

## devsk

Filed a bug at bugzilla for this:  https://bugzilla.kernel.org/show_bug.cgi?id=16508

Let's see what they do.

----------

## idella4

yes, I see.  I shouldn't have suggested your system had an issue, but that was implied in the added entries which showed the incorrect reading of df.

Out of interest, having established this, I re-ran your test from the bug submission.

I'm interested in following this.  Most of it conformed, it missed the big hang at the end.

Just read

```

time dd if=/dev/zero of=btrfs-fs.img count=8000 bs=512k oflag=direct

[as before]  sorry, bash ran out of lines, should have copied it as I went along, still gets there

mkfs.btrfs btrfs-fs.img

mount -o loop,noatime btrfs-fs.img /mnt/ftp/

cd /mnt/ftp 

time dd if=/dev/zero of=tempfile count=7000 bs=512k oflag=direct

df .

[as before]

time cp -a /usr/portage/[a-x]* .

.....................

cp: cannot create directory `./x11-wm': No space left on device

cp: cannot create directory `./xfce-base': No space left on device

cp: cannot create directory `./xfce-extra': No space left on device

real    3m6.372s

user    0m0.670s

sys     0m23.622s

genny ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3945628    150372  97% /mnt/ftp

genny ftp # btrfs filesystem df .

Data: total=3.49GB, used=3.48GB

                                                                     [conforms]

Metadata: total=208.00MB, used=146.96MB

System: total=12.00MB, used=4.00KB

genny ftp # find .|wc -l

75680

genny ftp #  \rm tempfile

genny ftp # time cp -a /usr/portage/[a-x]* . 

cp: writing `./net-libs/ptlib/ptlib-2.6.5.ebuild': No space left on device

cp: writing `./net-libs/clinkcc/files/clinkcc-1.7.1-gentoo.patch': No space left on device

cp: writing `./net-mail/bincimap/ChangeLog': No space left on device

cp: writing `./net-mail/dovecot/dovecot-1.2.11-r2.ebuild': No space left on device

...................

real    3m7.160s

user    0m0.865s

sys     0m38.630s

genny ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000    459388   3636612  12% /mnt/ftp

genny ftp #  btrfs filesystem df .

Data: total=3.49GB, used=67.54MB

Metadata: total=208.00MB, used=190.54MB

System: total=12.00MB, used=4.00KB

genny ftp # df -i .

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/loop0                 0       0       0    -  /mnt/ftp

genny ftp # cp /usr/lib/libc.a .

genny ftp # find .|wc -l

107153

genny ftp # \rm -rf dev-cpp

                                                      [managed it]

genny ftp # df -i .

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/loop0                 0       0       0    -  /mnt/ftp

genny ftp # cp /usr/lib/libc.a .

                                                     [managed it]

```

```

gentoo64 ftp # uname -r

2.6.35-rc5-amd64

gentoo64# time dd if=/dev/zero of=btrfs-fs.img count=8000 bs=512k oflag=direct

gentoo64# mkfs.btrfs btrfs-fs.img

gentoo64# mount -o loop,noatime btrfs-fs.img /mnt/ftp

gentoo64 ftp# cd /mnt/ftp

gentoo64 ftp# time dd if=/dev/zero of=tempfile count=7000 bs=512k oflag=direct

gentoo64 ftp# time cp -a /usr/portage/[a-z]* .

................

cp: cannot create directory `./x11-plugins': No space left on device

cp: cannot create directory `./x11-proto': No space left on device

cp: cannot create directory `./x11-terms': No space left on device

cp: cannot create directory `./x11-themes': No space left on device

cp: cannot create directory `./x11-wm': No space left on device

cp: cannot create directory `./xfce-base': No space left on device

cp: cannot create directory `./xfce-extra': No space left on device

real    4m1.647s

user    0m0.506s

sys     0m10.793s

gentoo64 ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000   3942756    153244  97% /mnt/ftp

gentoo64 ftp # btrfs filesystem df .

Data: total=3.49GB, used=3.47GB

Metadata: total=208.00MB, used=146.61MB

System: total=12.00MB, used=4.00KB

gentoo64 ftp # find .|wc -l

75122

gentoo64 ftp #

gentoo64 ftp # \rm tempfile

gentoo64 ftp # time cp -a /usr/portage/[a-x]* .

...............................

cp: cannot create directory `./x11-themes': No space left on device

cp: cannot create directory `./x11-wm': No space left on device

cp: cannot create directory `./xfce-base': No space left on device

cp: cannot create directory `./xfce-extra': No space left on device

real    5m51.850s

user    0m0.669s

sys     0m17.539s

gentoo64 ftp # df .

Filesystem           1K-blocks      Used Available Use% Mounted on

/dev/loop0             4096000    457268   3638732  12% /mnt/ftp

gentoo64 ftp # cp /usr/lib/libc.a .

gentoo64 ftp #

gentoo64 ftp # echo 'some new text more' > new.txt

bash: new.txt: No space left on device

gentoo64 ftp # find .|wc -l

106551

gentoo64 ftp # \rm -rf dev-cpp

gentoo64 ftp #

gentoo64 ftp # df -i .

Filesystem            Inodes   IUsed   IFree IUse% Mounted on

/dev/loop0                 0       0       0    -  /mnt/ftp

gentoo64 ftp # cp /usr/lib/libc.a .

gentoo64 ftp #

```

You could cite it as a confirmation of your submission, bearing in mind the minor diffs;

mine could delete, could copy the /usr/lib/libc.a, but couldn't create new.txt.

Ofcourse it's not good.  (I've also submitted bugs, not kernel bugs)

----------

## devsk

I haven't seen any replies to the bug so far. The scenario where the bug happens is a very common scenario if you have large VMs or video files and portage/ccache on the same FS.

----------

## devsk

Looks like the number of btrfs issues are overwhelming the devs. A quick perusal of the mailing list tells me that there is no respite for devs and they don't have cycles to attend to each bug. Not even the ones which are as serious as ENOSPC with most of the space being free.

----------

## idella4

devsk,

I take it that means your bug hasn't been attended to yet?

If it's that flawed, just how did it get to the kernel??? Doesn't make sense.

I've made a btrfs partition to try it out.  It has light  use so it hasn't done anything wrong, yet.

Looks like it should really be out of the kernel.

----------

## devsk

 *idella4 wrote:*   

> devsk,
> 
> I take it that means your bug hasn't been attended to yet?
> 
> If it's that flawed, just how did it get to the kernel??? Doesn't make sense.
> ...

 I can tell you getting in the kernel has nothing to do with stability. That's pure politics and social engineering. Reiser4 was much more stable (I thrashed it really well, filled it up large files, small files, millions of files, switched off my system in the middle of copying etc, and I couldn't break the damn thing!) but it never got in. In comparison, BTRFS is like a fussy baby. There is very little you have to do to break it. And funny thing is that a normal user can break it and cause DOS. That's a nightmare for an enterprise Sys Admin!

----------

## Matteo Azzali

I suppose that some code can get in the kernel if it's maintainable (for example if variables

aren't all called a,b,c,d but follow a decent naming convention, I can assure you that maintaining

obfuscated code is nearly impossible if you'r not an AI) and there's someone willing 

to maintain it. (for free!!!!)

Given this, I swear btrfs is still in a quite experimental stage,

 *kernel-2.6.35 wrote:*   

> Btrfs filesystem (EXPERIMENTAL) Unstable disk format (BTRFS_FS [=n])

 

 and btrfs-progs seems still unreleased in any version after the old 0.19. 

(getting "live" code from svn or git may mean a lot of troubles expecially for fs and drivers)

So I think that an enterprise sysadmin should wait some months before btrfs adoption,

just my 2 cents.....

----------

## devsk

 *Matteo Azzali wrote:*   

> I suppose that some code can get in the kernel if it's maintainable (for example if variables
> 
> aren't all called a,b,c,d but follow a decent naming convention, I can assure you that maintaining
> 
> obfuscated code is nearly impossible if you'r not an AI) and there's someone willing 
> ...

 At least couple of years, not months! I was a big BTRFS evangelist but I changed my opinion over the last few months. Mostly because I read BTRFS mailing list once in a while. You should too! Then, you will go nowhere near this FS for quite a while.

----------

## idella4

devsk,

you may not be surprised re this failure.  I tried the btrfs on a data partition and used it for gentoo portage and kernels, many Gigs.  It failed. 

It couldn't fsck its own partition, just aborted.

It couldn't make an image of it with btrfs-image because of the corrupt points it couldn't fix with btrfsck.

Unmounting and cp attempts met with a hang.

btrfsctl didn't do much.

Resorting to dd for the first time to copy the data, the only one that has worked.  No compression.

It is experimental.....

----------

