Richard Sharpe | 20 Dec 03:07 2014

Can BTRFS handle XATTRs larger than 4K?

Hi folks,

I need a Linux file system that supports XATTRs up to 64K.

Can BTRFS support that or is XFS the only Linux file system with such support?


Richard Sharpe
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

Tomasz Chmielewski | 20 Dec 00:28 2014

kernel BUG at /home/apw/COD/linux/fs/btrfs/inode.c:3123!

Get this BUG with 3.18.1 (pasted at the bottom of the email).
Below all actions from creating the fs to BUG. I did not attempt to 

# mkfs.btrfs /dev/vdb
Btrfs v3.17.3
See for more information.

Turning ON incompat feature 'extref': increased hardlink limit per file 
to 65536
fs created label (null) on /dev/vdb
         nodesize 16384 leafsize 16384 sectorsize 4096 size 256.00GiB

# mount -o noatime /dev/vdb /mnt/test/
# cd /mnt/test
# btrfs sub cre subvolume
Create subvolume './subvolume'
# dd if=/dev/urandom of=bigfile.img bs=64k
^C91758+0 records in
91757+0 records out
6013386752 bytes (6.0 GB) copied, 374.777 s, 16.0 MB/s
# btrfs sub list /mnt/test/
ID 257 gen 16 top level 5 path subvolume

# btrfs quota enable /mnt/test

# btrfs qgroup show /mnt/test
qgroupid rfer       excl
-------- ----       ----
0/5      16384      16384
(Continue reading)

Josef Bacik | 19 Dec 19:41 2014

[PATCH] Btrfs: track dirty block groups on their own list V2

Currently any time we try to update the block groups on disk we will walk _all_
block groups and check for the ->dirty flag to see if it is set.  This function
can get called several times during a commit.  So if you have several terabytes
of data you will be a very sad panda as we will loop through _all_ of the block
groups several times, which makes the commit take a while which slows down the
rest of the file system operations.

This patch introduces a dirty list for the block groups that we get added to
when we dirty the block group for the first time.  Then we simply update any
block groups that have been dirtied since the last time we called
btrfs_write_dirty_block_groups.  This allows us to clean up how we write the
free space cache out so it is much cleaner.  Thanks,

Signed-off-by: Josef Bacik <jbacik <at>>
V1->V2: Don't unconditionally take the dirty bg list lock in update_block_group,
only do it if our dirty_bg list is empty.

 fs/btrfs/ctree.h            |   5 +-
 fs/btrfs/extent-tree.c      | 169 ++++++++++++++------------------------------
 fs/btrfs/free-space-cache.c |   8 ++-
 fs/btrfs/transaction.c      |  14 ++--
 fs/btrfs/transaction.h      |   2 +
 5 files changed, 74 insertions(+), 124 deletions(-)

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index b62315b..e5bc509 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
 <at>  <at>  -1237,7 +1237,6  <at>  <at>  enum btrfs_disk_cache_state {
(Continue reading)

David Sterba | 19 Dec 19:21 2014

Btrfs progs pre-release 3.18-rc2


another step towards 3.18, the changes are limited in scope and mostly
cleanups or docs. I'd like to see more test images for new fsck code,
there are 2 new that I missed earlier, so they don't count.

The timing with end of the year is not good so if I'm not confident
that the release is in a good shape I'm rather going to postpone it.
Alternatively, I can do a release on Monday and then use the following
weeks to prepare a .1 bugfix release.

Known problems: the image 013 fails
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

David Sterba | 19 Dec 18:38 2014

[PULL] [PATCH 0/4] Updates in message levels

This is motivated by the ERR level when skinny metadata are used, this has been
reported several times. Patch tagged for stable.  The rest is taken from a SLES
patch that I forgot to forward upstream.

You can pull the branch from

  git:// fix/message-levels

based on current master (d790be3863b28fd22e0)

David Sterba (4):
  btrfs: update message levels for errors
  btrfs: update message levels during failed mount
  btrfs: update message levels after checksum errors
  btrfs: set proper message level for skinny metadata

 fs/btrfs/disk-io.c | 29 +++++++++++++++--------------
 fs/btrfs/inode.c   |  4 ++--
 2 files changed, 17 insertions(+), 16 deletions(-)



To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

David Sterba | 19 Dec 17:06 2014

[PATCH 0/6] Btrfs progs, coverity fixes for 3.18

A few straightforward fixes.

David Sterba (6):
  btrfs-progs: corrupt block, add missing break to option I
  btrfs-progs: corrupt block, add break after option U
  btrfs-progs: fragments, close output file on error
  btrfs-progs: check result of first_cache_extent
  btrfs-progs: check allocation result in add_clone_source
  btrfs-progs: let btrfs_free_path accept NULL

 btrfs-corrupt-block.c |  2 ++
 btrfs-fragments.c     |  7 +++++--
 cmds-check.c          |  2 ++
 cmds-send.c           | 25 +++++++++++++++++++++----
 ctree.c               |  2 ++
 5 files changed, 32 insertions(+), 6 deletions(-)



To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

Chris Mason | 19 Dec 15:40 2014

[GIT PULL] Btrfs pull part two

Hi Linus,

Please pull my for-linus branch:

git:// for-linus

It has part two of our merge window patches.  These are all from Filipe,
and fix some really hard to find races that can cause corruptions.  Most
of them involved block group removal (balance) or discard.

Filipe Manana (4) commits (+20/-25):
    Btrfs: fix fs corruption on transaction abort if device supports discard (+6/-10)
    Btrfs: always clear a block group node when removing it from the tree (+3/-0)
    Btrfs: remove non-sense btrfs_error_discard_extent() function (+6/-12)
    Btrfs: ensure deletion from pinned_chunks list is protected (+5/-3)

Total: (4) commits (+20/-25)

 fs/btrfs/ctree.h            |  4 ++--
 fs/btrfs/disk-io.c          |  6 ------
 fs/btrfs/extent-tree.c      | 23 +++++++++++------------
 fs/btrfs/free-space-cache.c | 12 +++++++-----
 4 files changed, 20 insertions(+), 25 deletions(-)
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

(Continue reading)

Liu Bo | 19 Dec 13:57 2014

[PATCH] Btrfs: generic checksum framework

This changes the original crc32c specific checksum functions into more generic
ones, so that converting to a new checksum algorithm can be transparent to btrfs
internal code.

Note that file names' lookup and extent_data_ref's hashing use crc32c with their
own seed instead of the default "~0", so they remain unchanged.

Signed-off-by: Liu Bo < <at>>
 fs/btrfs/check-integrity.c  |  10 +++--
 fs/btrfs/compression.c      |  30 ++++++-------
 fs/btrfs/ctree.h            |   5 ++-
 fs/btrfs/disk-io.c          | 100 +++++++++++++++++++++++---------------------
 fs/btrfs/disk-io.h          |   2 -
 fs/btrfs/file-item.c        |  25 +++++------
 fs/btrfs/free-space-cache.c |   8 ++--
 fs/btrfs/hash.c             |  49 ++++++++++++++++++++++
 fs/btrfs/hash.h             |   9 +++-
 fs/btrfs/inode.c            |  21 ++++++----
 fs/btrfs/ioctl.c            |   1 +
 fs/btrfs/ordered-data.c     |  10 +++--
 fs/btrfs/ordered-data.h     |   9 ++--
 fs/btrfs/scrub.c            |  55 +++++++++++++++++-------
 14 files changed, 216 insertions(+), 118 deletions(-)

diff --git a/fs/btrfs/check-integrity.c b/fs/btrfs/check-integrity.c
index d897ef8..4c26cfa 100644
--- a/fs/btrfs/check-integrity.c
+++ b/fs/btrfs/check-integrity.c
 <at>  <at>  -1790,8 +1790,8  <at>  <at>  static int btrfsic_test_for_metadata(struct btrfsic_state *state,
(Continue reading)

Satoru Takeuchi | 19 Dec 08:22 2014

[PATCH] btrfs-progs: Enhance the document of btrfs property

From: Satoru Takeuchi <takeuchi_satoru <at>>

Enhance the document of btrfs property as follows.

- Add the description about the candidates of <name>.
- Enrich the description of <object>.
- Fix typos and some redundancy.

Signed-off-by: Satoru Takeuchi <takeuchi_satoru <at>>
Reported-by: Naohiro Aota <naota <at>>

 Documentation/btrfs-property.txt | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/Documentation/btrfs-property.txt b/Documentation/btrfs-property.txt
index 3a71315..f8dcbab 100644
--- a/Documentation/btrfs-property.txt
+++ b/Documentation/btrfs-property.txt
 <at>  <at>  -11,8 +11,9  <at>  <at>  SYNOPSIS

-*btrfs property* is used to get/set/list property, like lable or compression
-state, for given btrfs object.
+*btrfs property* is used to get/set/list property for given btrfs object.
+See the description of *get* subcommand for more information about
+both btrfs object and property.

 *btrfs property* provides an unified and user-friendly method to tune different
(Continue reading)

Qu Wenruo | 19 Dec 07:13 2014

[PATCH 0/5] Cleanup warnings from clang

Cleanup warning when compile btrfs-progs with clang.

Clang analyser also reports about 60+ errors, but it will be another
patchset fixing it later.

Qu Wenruo (5):
  btrfs-progs: Makefile: Move linker only option to LDFLAGS
  btrfs-progs: Fix a clang dead-judgement warning in disk-io.c.
  btrfs-progs: Remove a unused function root_gtp_mask().
  btrfs-progs: Remove a unused function offset_to_bitmap()
  btrfs-progs: Remove deprecated _BSD_SOURCE macro.

 Makefile           |  3 ++-
 cmds-receive.c     |  2 +-
 disk-io.c          |  9 ++++++---
 free-space-cache.c | 16 ----------------
 radix-tree.c       |  5 -----
 5 files changed, 9 insertions(+), 26 deletions(-)



To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo <at>
More majordomo info at

Satoru Takeuchi | 19 Dec 06:31 2014

[PATCH] btrfs-progs: cleanup: avoid to use literal for getopt val

From: Satoru Takeuchi <takeuchi_satoru <at>>

Tested with dev/integration-20141218 + this patch
 cmds-fi-disk_usage.c | 8 ++++----
 cmds-filesystem.c    | 8 ++++----
 utils.h              | 3 +++
 3 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/cmds-fi-disk_usage.c b/cmds-fi-disk_usage.c
index d81f011..5e8e39b 100644
--- a/cmds-fi-disk_usage.c
+++ b/cmds-fi-disk_usage.c
 <at>  <at>  -877,8 +877,8  <at>  <at>  int cmd_filesystem_usage(int argc, char **argv)
 			{ "mbytes", no_argument, NULL, 'm'},
 			{ "gbytes", no_argument, NULL, 'g'},
 			{ "tbytes", no_argument, NULL, 't'},
-			{ "si", no_argument, NULL, 256},
-			{ "iec", no_argument, NULL, 257},
+			{ "si", no_argument, NULL, GETOPT_VAL_SI},
+			{ "iec", no_argument, NULL, GETOPT_VAL_IEC},
 		int c = getopt_long(argc, argv, "bhHkmgtT", long_options,
 <at>  <at>  -907,10 +907,10  <at>  <at>  int cmd_filesystem_usage(int argc, char **argv)
 		case 'H':
 			unit_mode = UNITS_HUMAN_DECIMAL;
-		case 256:
(Continue reading)