Hello community,
here is the log from the commit of package btrfsprogs for openSUSE:Factory checked in at 2015-03-29 20:15:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/btrfsprogs (Old)
and /work/SRC/openSUSE:Factory/.btrfsprogs.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "btrfsprogs"
Changes:
--------
--- /work/SRC/openSUSE:Factory/btrfsprogs/btrfsprogs.changes 2015-03-16 09:37:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.btrfsprogs.new/btrfsprogs.changes 2015-03-29 20:15:55.000000000 +0200
@@ -1,0 +2,17 @@
+Wed Mar 25 00:00:00 CET 2015 - dsterba@suse.cz
+
+- version 3.19.1
+ - convert:
+ - new option to specify metadata block size
+ - --no-progress actually works
+ - restore: properly handle the page boundary corner case
+ - build fixes:
+ - missing macro from public header, BTRFS_BUILD_VERSION
+ - wrong handling of --enable-convert
+ - fi usage: reports correct space for degraded mounts
+ - other:
+ - mkfs: help string updates
+ - completion: added 'usage' subcommands
+ - cleanups in qgroup code, preparatory work
+
+-------------------------------------------------------------------
Old:
----
btrfs-progs-v3.19.tar.gz
New:
----
btrfs-progs-v3.19.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ btrfsprogs.spec ++++++
--- /var/tmp/diff_new_pack.44HxWY/_old 2015-03-29 20:15:56.000000000 +0200
+++ /var/tmp/diff_new_pack.44HxWY/_new 2015-03-29 20:15:56.000000000 +0200
@@ -17,7 +17,7 @@
Name: btrfsprogs
-Version: 3.19
+Version: 3.19.1
Release: 0
Summary: Utilities for the Btrfs filesystem
License: GPL-2.0
++++++ btrfs-progs-v3.19.tar.gz -> btrfs-progs-v3.19.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/Documentation/btrfs-convert.txt new/btrfs-progs-v3.19.1/Documentation/btrfs-convert.txt
--- old/btrfs-progs-v3.19/Documentation/btrfs-convert.txt 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/Documentation/btrfs-convert.txt 2015-03-25 18:43:42.000000000 +0100
@@ -17,19 +17,24 @@
OPTIONS
-------
--d::
-Disable data checksum.
--i::
+-d|--no-datasum::
+Disable data checksum calculations and set NODATASUM file flag. This can speed
+up the conversion.
+-i|--no-xattr::
Ignore xattrs and ACLs.
--n::
-Disable packing of small files.
--r::
+-n|--no-inline::
+Disable inlining of small files to metadata blocks.
+-N|--nodesize <SIZE>::
+Set filesystem nodesize, the tree block size in which btrfs stores data.
+The default value is 16KB (16384) or the page size, whichever is bigger.
+Must be a multiple of the sectorsize, but not larger than 65536.
+-r|--rollback::
Roll back to ext2fs.
--l <LABEL>::
+-l|--label <LABEL>::
set filesystem label during conversion.
--L::
+-L|--copy-label::
use label from the converted filesystem.
--p::
+-p|--progress::
Show progress of conversion, on by default.
--no-progress::
Disable detailed progress and show only the main phases of conversion.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/btrfs-completion new/btrfs-progs-v3.19.1/btrfs-completion
--- old/btrfs-progs-v3.19/btrfs-completion 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/btrfs-completion 2015-03-25 18:43:42.000000000 +0100
@@ -31,9 +31,9 @@
commands='subvolume filesystem balance device scrub check rescue restore inspect-internal property send receive quota qgroup replace help version'
commands_subvolume='create delete list snapshot find-new get-default set-default show sync'
- commands_filesystem='defragment sync resize show df label'
+ commands_filesystem='defragment sync resize show df label usage'
commands_balance='start pause cancel resume status'
- commands_device='scan add delete ready stats'
+ commands_device='scan add delete ready stats usage'
commands_scrub='start cancel resume status'
commands_rescue='chunk-recover super-recover'
commands_inspect_internal='inode-resolve logical-resolve subvolid-resolve rootid'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/btrfs-convert.c new/btrfs-progs-v3.19.1/btrfs-convert.c
--- old/btrfs-progs-v3.19/btrfs-convert.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/btrfs-convert.c 2015-03-25 18:43:42.000000000 +0100
@@ -141,6 +141,25 @@
return -ENOSPC;
}
+static int ext2_alloc_block_range(ext2_filsys fs, u64 goal, int num,
+ u64 *block_ret)
+{
+ blk_t block;
+ ext2fs_block_bitmap bitmap = fs->block_map;
+ blk_t start = ext2fs_get_block_bitmap_start(bitmap);
+ blk_t end = ext2fs_get_block_bitmap_end(bitmap);
+
+ for (block = max_t(u64, goal, start); block + num < end; block++) {
+ if (ext2fs_fast_test_block_bitmap_range(bitmap, block, num)) {
+ ext2fs_fast_mark_block_bitmap_range(bitmap, block,
+ num);
+ *block_ret = block;
+ return 0;
+ }
+ }
+ return -ENOSPC;
+}
+
static int ext2_free_block(ext2_filsys fs, u64 block)
{
BUG_ON(block != (blk_t)block);
@@ -148,6 +167,13 @@
return 0;
}
+static int ext2_free_block_range(ext2_filsys fs, u64 block, int num)
+{
+ BUG_ON(block != (blk_t)block);
+ ext2fs_fast_unmark_block_bitmap_range(fs->block_map, block, num);
+ return 0;
+}
+
static int cache_free_extents(struct btrfs_root *root, ext2_filsys ext2_fs)
{
@@ -2233,9 +2259,9 @@
}
static int do_convert(const char *devname, int datacsum, int packing, int noxattr,
- int copylabel, const char *fslabel, int progress)
+ u32 nodesize, int copylabel, const char *fslabel, int progress)
{
- int i, ret;
+ int i, ret, blocks_per_node;
int fd = -1;
u32 blocksize;
u64 blocks[7];
@@ -2262,8 +2288,17 @@
fprintf(stderr, "filetype feature is missing\n");
goto fail;
}
+ if (btrfs_check_node_or_leaf_size(nodesize, blocksize))
+ goto fail;
+ blocks_per_node = nodesize / blocksize;
+ ret = -blocks_per_node;
for (i = 0; i < 7; i++) {
- ret = ext2_alloc_block(ext2_fs, 0, blocks + i);
+ if (nodesize == blocksize)
+ ret = ext2_alloc_block(ext2_fs, 0, blocks + i);
+ else
+ ret = ext2_alloc_block_range(ext2_fs,
+ ret + blocks_per_node, blocks_per_node,
+ blocks + i);
if (ret) {
fprintf(stderr, "not enough free space\n");
goto fail;
@@ -2277,7 +2312,7 @@
goto fail;
}
ret = make_btrfs(fd, devname, ext2_fs->super->s_volume_name,
- NULL, blocks, total_bytes, blocksize, blocksize,
+ NULL, blocks, total_bytes, nodesize, nodesize,
blocksize, blocksize, 0);
if (ret) {
fprintf(stderr, "unable to create initial ctree: %s\n",
@@ -2304,7 +2339,11 @@
/* recover block allocation bitmap */
for (i = 0; i < 7; i++) {
blocks[i] /= blocksize;
- ext2_free_block(ext2_fs, blocks[i]);
+ if (nodesize == blocksize)
+ ext2_free_block(ext2_fs, blocks[i]);
+ else
+ ext2_free_block_range(ext2_fs, blocks[i],
+ blocks_per_node);
}
ret = init_btrfs(root);
if (ret) {
@@ -2761,14 +2800,16 @@
static void print_usage(void)
{
printf("usage: btrfs-convert [options] device\n");
- printf("\t-d disable data checksum\n");
- printf("\t-i ignore xattrs and ACLs\n");
- printf("\t-n disable packing of small files\n");
- printf("\t-r roll back to ext2fs\n");
- printf("\t-l LABEL set filesystem label\n");
- printf("\t-L use label from converted fs\n");
- printf("\t-p show converting progress (default)\n");
- printf("\t--no-progress show only overview, not the detailed progress\n");
+ printf("options:\n");
+ printf("\t-d|--no-datasum disable data checksum, sets NODATASUM\n");
+ printf("\t-i|--no-xattr ignore xattrs and ACLs\n");
+ printf("\t-n|--no-inline disable inlining of small files to metadata\n");
+ printf("\t-N|--nodesize SIZE set filesystem metadata nodesize\n");
+ printf("\t-r|--rollback roll back to ext2fs\n");
+ printf("\t-l|--label LABEL set filesystem label\n");
+ printf("\t-L|--copy-label use label from converted filesystem\n");
+ printf("\t-p|--progress show converting progress (default)\n");
+ printf("\t--no-progress show only overview, not the detailed progress\n");
}
int main(int argc, char *argv[])
@@ -2777,6 +2818,8 @@
int packing = 1;
int noxattr = 0;
int datacsum = 1;
+ u32 nodesize = max_t(u32, sysconf(_SC_PAGESIZE),
+ BTRFS_MKFS_DEFAULT_NODE_SIZE);
int rollback = 0;
int copylabel = 0;
int usage_error = 0;
@@ -2788,10 +2831,19 @@
int long_index;
enum { GETOPT_VAL_NO_PROGRESS = 256 };
static const struct option long_options[] = {
- { "no-progress", no_argument, NULL, GETOPT_VAL_IEC},
+ { "no-progress", no_argument, NULL,
+ GETOPT_VAL_NO_PROGRESS },
+ { "no-datasum", no_argument, NULL, 'd' },
+ { "no-inline", no_argument, NULL, 'n' },
+ { "no-xattr", no_argument, NULL, 'i' },
+ { "rollback", no_argument, NULL, 'r' },
+ { "progress", no_argument, NULL, 'p' },
+ { "label", required_argument, NULL, 'l' },
+ { "copy-label", no_argument, NULL, 'L' },
+ { "nodesize", required_argument, NULL, 'N' },
{ NULL, 0, NULL, 0 }
};
- int c = getopt_long(argc, argv, "dinrl:Lp", long_options,
+ int c = getopt_long(argc, argv, "dinN:rl:Lp", long_options,
&long_index);
if (c < 0)
@@ -2806,6 +2858,9 @@
case 'n':
packing = 0;
break;
+ case 'N':
+ nodesize = parse_size(optarg);
+ break;
case 'r':
rollback = 1;
break;
@@ -2865,7 +2920,8 @@
if (rollback) {
ret = do_rollback(file);
} else {
- ret = do_convert(file, datacsum, packing, noxattr, copylabel, fslabel, progress);
+ ret = do_convert(file, datacsum, packing, noxattr, nodesize,
+ copylabel, fslabel, progress);
}
if (ret)
return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/cmds-fi-disk_usage.c new/btrfs-progs-v3.19.1/cmds-fi-disk_usage.c
--- old/btrfs-progs-v3.19/cmds-fi-disk_usage.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/cmds-fi-disk_usage.c 2015-03-25 18:43:42.000000000 +0100
@@ -324,6 +324,7 @@
u64 r_total_chunks = 0; /* sum of chunks sizes on disk(s) */
u64 r_total_used = 0;
u64 r_total_unused = 0;
+ u64 r_total_missing = 0; /* sum of missing devices size */
u64 r_data_used = 0;
u64 r_data_chunks = 0;
u64 l_data_chunks = 0;
@@ -350,8 +351,11 @@
}
r_total_size = 0;
- for (i = 0; i < devcount; i++)
- r_total_size += devinfo[i].device_size;
+ for (i = 0; i < devcount; i++) {
+ r_total_size += devinfo[i].size;
+ if (!devinfo[i].device_size)
+ r_total_missing += devinfo[i].size;
+ }
if (r_total_size == 0) {
fprintf(stderr,
@@ -461,6 +465,8 @@
pretty_size_mode(r_total_chunks, unit_mode));
printf(" Device unallocated:\t\t%*s\n", width,
pretty_size_mode(r_total_unused, unit_mode));
+ printf(" Device missing:\t\t%*s\n", width,
+ pretty_size_mode(r_total_missing, unit_mode));
printf(" Used:\t\t\t%*s\n", width,
pretty_size_mode(r_total_used, unit_mode));
printf(" Free (estimated):\t\t%*s\t(",
@@ -538,8 +544,13 @@
}
info[ndevs].devid = dev_info.devid;
- strcpy(info[ndevs].path, (char *)dev_info.path);
- info[ndevs].device_size = get_partition_size((char *)dev_info.path);
+ if (!dev_info.path[0]) {
+ strcpy(info[ndevs].path, "missing");
+ } else {
+ strcpy(info[ndevs].path, (char *)dev_info.path);
+ info[ndevs].device_size =
+ get_partition_size((char *)dev_info.path);
+ }
info[ndevs].size = dev_info.total_bytes;
++ndevs;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/cmds-qgroup.c new/btrfs-progs-v3.19.1/cmds-qgroup.c
--- old/btrfs-progs-v3.19/cmds-qgroup.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/cmds-qgroup.c 2015-03-25 18:43:42.000000000 +0100
@@ -52,7 +52,7 @@
/*
* FIXME src should accept subvol path
*/
- if ((args.src >> 48) >= (args.dst >> 48)) {
+ if (btrfs_qgroup_level(args.src) >= btrfs_qgroup_level(args.dst)) {
fprintf(stderr, "ERROR: bad relation requested '%s'\n", path);
return 1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/cmds-restore.c new/btrfs-progs-v3.19.1/cmds-restore.c
--- old/btrfs-progs-v3.19/cmds-restore.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/cmds-restore.c 2015-03-25 18:43:42.000000000 +0100
@@ -111,6 +111,8 @@
tot_in = LZO_LEN;
while (tot_in < tot_len) {
+ size_t mod_page;
+ size_t rem_page;
in_len = read_compress_length(inbuf);
if ((tot_in + LZO_LEN + in_len) > tot_len) {
@@ -134,6 +136,17 @@
outbuf += new_len;
inbuf += in_len;
tot_in += in_len;
+
+ /*
+ * If the 4 byte header does not fit to the rest of the page we
+ * have to move to the next one, unless we read some garbage
+ */
+ mod_page = tot_in % PAGE_CACHE_SIZE;
+ rem_page = PAGE_CACHE_SIZE - mod_page;
+ if (rem_page < LZO_LEN) {
+ inbuf += rem_page;
+ tot_in += rem_page;
+ }
}
*decompress_len = out_len;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/configure new/btrfs-progs-v3.19.1/configure
--- old/btrfs-progs-v3.19/configure 2015-03-11 13:41:25.000000000 +0100
+++ new/btrfs-progs-v3.19.1/configure 2015-03-25 18:44:13.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for btrfs-progs v3.19.
+# Generated by GNU Autoconf 2.69 for btrfs-progs v3.19.1.
#
# Report bugs to .
#
@@ -580,8 +580,8 @@
# Identity of this package.
PACKAGE_NAME='btrfs-progs'
PACKAGE_TARNAME='btrfs-progs'
-PACKAGE_VERSION='v3.19'
-PACKAGE_STRING='btrfs-progs v3.19'
+PACKAGE_VERSION='v3.19.1'
+PACKAGE_STRING='btrfs-progs v3.19.1'
PACKAGE_BUGREPORT='linux-btrfs@vger.kernel.org'
PACKAGE_URL='http://btrfs.wiki.kernel.org'
@@ -1287,7 +1287,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures btrfs-progs v3.19 to adapt to many kinds of systems.
+\`configure' configures btrfs-progs v3.19.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1352,7 +1352,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of btrfs-progs v3.19:";;
+ short | recursive ) echo "Configuration of btrfs-progs v3.19.1:";;
esac
cat <<\_ACEOF
@@ -1461,7 +1461,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-btrfs-progs configure v3.19
+btrfs-progs configure v3.19.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1830,7 +1830,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by btrfs-progs $as_me v3.19, which was
+It was created by btrfs-progs $as_me v3.19.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -5295,19 +5295,19 @@
if test "${enable_convert+set}" = set; then :
enableval=$enable_convert;
else
- enable_btrfsconvert=yes
+ enable_convert=yes
fi
-if test "x$enable_btrfsconvert" = xyes; then :
+if test "x$enable_convert" = xyes; then :
DISABLE_BTRFSCONVERT=0
else
DISABLE_BTRFSCONVERT=1
fi
-if test "x$enable_btrfsconvert" = xyes; then
+if test "x$enable_convert" = xyes; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for EXT2FS" >&5
@@ -6375,7 +6375,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by btrfs-progs $as_me v3.19, which was
+This file was extended by btrfs-progs $as_me v3.19.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -6438,7 +6438,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-btrfs-progs config.status v3.19
+btrfs-progs config.status v3.19.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -7167,7 +7167,7 @@
documentaton: ${enable_documentation}
backtrace support: ${enable_backtrace}
- btrfs-convert: ${enable_btrfsconvert}
+ btrfs-convert: ${enable_convert}
Type 'make' to compile.
" >&5
@@ -7187,7 +7187,7 @@
documentaton: ${enable_documentation}
backtrace support: ${enable_backtrace}
- btrfs-convert: ${enable_btrfsconvert}
+ btrfs-convert: ${enable_convert}
Type 'make' to compile.
" >&6; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/configure.ac new/btrfs-progs-v3.19.1/configure.ac
--- old/btrfs-progs-v3.19/configure.ac 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/configure.ac 2015-03-25 18:43:42.000000000 +0100
@@ -98,13 +98,13 @@
AC_ARG_ENABLE([convert],
AS_HELP_STRING([--disable-convert], [do not build btrfs-convert]),
- [], [enable_btrfsconvert=yes]
+ [], [enable_convert=yes]
)
-AS_IF([test "x$enable_btrfsconvert" = xyes], [DISABLE_BTRFSCONVERT=0], [DISABLE_BTRFSCONVERT=1])
+AS_IF([test "x$enable_convert" = xyes], [DISABLE_BTRFSCONVERT=0], [DISABLE_BTRFSCONVERT=1])
AC_SUBST([DISABLE_BTRFSCONVERT])
-if test "x$enable_btrfsconvert" = xyes; then
+if test "x$enable_convert" = xyes; then
PKG_CHECK_MODULES(EXT2FS, [ext2fs])
PKG_CHECK_MODULES(COM_ERR, [com_err])
fi
@@ -167,7 +167,7 @@
documentaton: ${enable_documentation}
backtrace support: ${enable_backtrace}
- btrfs-convert: ${enable_btrfsconvert}
+ btrfs-convert: ${enable_convert}
Type 'make' to compile.
])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/ctree.h new/btrfs-progs-v3.19.1/ctree.h
--- old/btrfs-progs-v3.19/ctree.h 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/ctree.h 2015-03-25 18:43:42.000000000 +0100
@@ -868,11 +868,21 @@
*/
#define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49)
-#define BTRFS_QGROUP_STATUS_OFF 0
-#define BTRFS_QGROUP_STATUS_ON 1
-#define BTRFS_QGROUP_STATUS_SCANNING 2
+#define BTRFS_QGROUP_LEVEL_SHIFT 48
-#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1 << 0)
+static inline u64 btrfs_qgroup_level(u64 qgroupid)
+{
+ return qgroupid >> BTRFS_QGROUP_LEVEL_SHIFT;
+}
+
+static inline u64 btrfs_qgroup_subvid(u64 qgroupid)
+{
+ return qgroupid & ((1ULL << BTRFS_QGROUP_LEVEL_SHIFT) - 1);
+}
+
+#define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
+#define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
+#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
struct btrfs_qgroup_status_item {
__le64 version;
@@ -2070,6 +2080,15 @@
BTRFS_SETGET_FUNCS(qgroup_status_scan, struct btrfs_qgroup_status_item,
scan, 64);
+BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_version,
+ struct btrfs_qgroup_status_item, version, 64);
+BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_generation,
+ struct btrfs_qgroup_status_item, generation, 64);
+BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_flags,
+ struct btrfs_qgroup_status_item, flags, 64);
+BTRFS_SETGET_STACK_FUNCS(stack_qgroup_status_scan,
+ struct btrfs_qgroup_status_item, scan, 64);
+
/* btrfs_qgroup_info_item */
BTRFS_SETGET_FUNCS(qgroup_info_generation, struct btrfs_qgroup_info_item,
generation, 64);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/mkfs.c new/btrfs-progs-v3.19.1/mkfs.c
--- old/btrfs-progs-v3.19/mkfs.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/mkfs.c 2015-03-25 18:43:42.000000000 +0100
@@ -47,8 +47,6 @@
#define DEFAULT_MKFS_FEATURES (BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF \
| BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)
-#define DEFAULT_MKFS_LEAF_SIZE 16384
-
struct directory_name_entry {
char *dir_name;
char *path;
@@ -274,21 +272,21 @@
{
fprintf(stderr, "usage: mkfs.btrfs [options] dev [ dev ... ]\n");
fprintf(stderr, "options:\n");
- fprintf(stderr, "\t -A --alloc-start the offset to start the FS\n");
- fprintf(stderr, "\t -b --byte-count total number of bytes in the FS\n");
- fprintf(stderr, "\t -d --data data profile, raid0, raid1, raid5, raid6, raid10, dup or single\n");
- fprintf(stderr, "\t -f --force force overwrite of existing filesystem\n");
- fprintf(stderr, "\t -l --leafsize size of btree leaves\n");
- fprintf(stderr, "\t -L --label set a label\n");
- fprintf(stderr, "\t -m --metadata metadata profile, values like data profile\n");
- fprintf(stderr, "\t -M --mixed mix metadata and data together\n");
- fprintf(stderr, "\t -n --nodesize size of btree nodes\n");
- fprintf(stderr, "\t -s --sectorsize min block allocation (may not mountable by current kernel)\n");
- fprintf(stderr, "\t -r --rootdir the source directory\n");
- fprintf(stderr, "\t -K --nodiscard do not perform whole device TRIM\n");
- fprintf(stderr, "\t -O --features comma separated list of filesystem features\n");
- fprintf(stderr, "\t -U --uuid specify the filesystem UUID\n");
- fprintf(stderr, "\t -V --version print the mkfs.btrfs version and exit\n");
+ fprintf(stderr, "\t-A|--alloc-start START the offset to start the FS\n");
+ fprintf(stderr, "\t-b|--byte-count SIZE total number of bytes in the FS\n");
+ fprintf(stderr, "\t-d|--data PROFILE data profile, raid0, raid1, raid5, raid6, raid10, dup or single\n");
+ fprintf(stderr, "\t-f|--force force overwrite of existing filesystem\n");
+ fprintf(stderr, "\t-l|--leafsize SIZE deprecated, alias for nodesize\n");
+ fprintf(stderr, "\t-L|--label LABEL set a label\n");
+ fprintf(stderr, "\t-m|--metadata PROFILE metadata profile, values like data profile\n");
+ fprintf(stderr, "\t-M|--mixed mix metadata and data together\n");
+ fprintf(stderr, "\t-n|--nodesize SIZE size of btree nodes\n");
+ fprintf(stderr, "\t-s|--sectorsize SIZE min block allocation (may not mountable by current kernel)\n");
+ fprintf(stderr, "\t-r|--rootdir DIR the source directory\n");
+ fprintf(stderr, "\t-K|--nodiscard do not perform whole device TRIM\n");
+ fprintf(stderr, "\t-O|--features LIST comma separated list of filesystem features\n");
+ fprintf(stderr, "\t-U|--uuid UUID specify the filesystem UUID\n");
+ fprintf(stderr, "\t-V|--version print the mkfs.btrfs version and exit\n");
fprintf(stderr, "%s\n", PACKAGE_STRING);
exit(1);
}
@@ -1057,27 +1055,6 @@
return ret;
}
-static int check_leaf_or_node_size(u32 size, u32 sectorsize)
-{
- if (size < sectorsize) {
- fprintf(stderr,
- "Illegal leafsize (or nodesize) %u (smaller than %u)\n",
- size, sectorsize);
- return -1;
- } else if (size > BTRFS_MAX_METADATA_BLOCKSIZE) {
- fprintf(stderr,
- "Illegal leafsize (or nodesize) %u (larger than %u)\n",
- size, BTRFS_MAX_METADATA_BLOCKSIZE);
- return -1;
- } else if (size & (sectorsize - 1)) {
- fprintf(stderr,
- "Illegal leafsize (or nodesize) %u (not align to %u)\n",
- size, sectorsize);
- return -1;
- }
- return 0;
-}
-
static int is_ssd(const char *file)
{
blkid_probe probe;
@@ -1230,7 +1207,8 @@
u64 alloc_start = 0;
u64 metadata_profile = 0;
u64 data_profile = 0;
- u32 leafsize = max_t(u32, sysconf(_SC_PAGESIZE), DEFAULT_MKFS_LEAF_SIZE);
+ u32 leafsize = max_t(u32, sysconf(_SC_PAGESIZE),
+ BTRFS_MKFS_DEFAULT_NODE_SIZE);
u32 sectorsize = 4096;
u32 nodesize = leafsize;
u32 stripesize = 4096;
@@ -1359,9 +1337,9 @@
}
}
sectorsize = max(sectorsize, (u32)sysconf(_SC_PAGESIZE));
- if (check_leaf_or_node_size(leafsize, sectorsize))
+ if (btrfs_check_node_or_leaf_size(leafsize, sectorsize))
exit(1);
- if (check_leaf_or_node_size(nodesize, sectorsize))
+ if (btrfs_check_node_or_leaf_size(nodesize, sectorsize))
exit(1);
saved_optind = optind;
dev_cnt = ac - optind;
@@ -1440,7 +1418,7 @@
if (!leaf_forced) {
leafsize = best_leafsize;
nodesize = best_leafsize;
- if (check_leaf_or_node_size(leafsize, sectorsize))
+ if (btrfs_check_node_or_leaf_size(leafsize, sectorsize))
exit(1);
}
if (leafsize != sectorsize) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/print-tree.c new/btrfs-progs-v3.19.1/print-tree.c
--- old/btrfs-progs-v3.19/print-tree.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/print-tree.c 2015-03-25 18:43:42.000000000 +0100
@@ -203,6 +203,20 @@
}
}
+/* Caller should ensure sizeof(*ret)>= 26 "OFF|SCANNING|INCONSISTENT" */
+static void qgroup_flags_to_str(u64 flags, char *ret)
+{
+ if (flags & BTRFS_QGROUP_STATUS_FLAG_ON)
+ strcpy(ret, "ON");
+ else
+ strcpy(ret, "OFF");
+
+ if (flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN)
+ strcat(ret, "|SCANNING");
+ if (flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
+ strcat(ret, "|INCONSISTENT");
+}
+
void print_chunk(struct extent_buffer *eb, struct btrfs_chunk *chunk)
{
int num_stripes = btrfs_chunk_num_stripes(eb, chunk);
@@ -645,8 +659,8 @@
printf("%llu", (unsigned long long)objectid); /* device id */
return;
case BTRFS_QGROUP_RELATION_KEY:
- printf("%llu/%llu", objectid >> 48,
- objectid & ((1ll << 48) - 1));
+ printf("%llu/%llu", btrfs_qgroup_level(objectid),
+ btrfs_qgroup_subvid(objectid));
return;
case BTRFS_UUID_KEY_SUBVOL:
case BTRFS_UUID_KEY_RECEIVED_SUBVOL:
@@ -743,8 +757,8 @@
case BTRFS_QGROUP_RELATION_KEY:
case BTRFS_QGROUP_INFO_KEY:
case BTRFS_QGROUP_LIMIT_KEY:
- printf(" %llu/%llu)", (unsigned long long)(offset >> 48),
- (unsigned long long)(offset & ((1ll << 48) - 1)));
+ printf(" %llu/%llu)", btrfs_qgroup_level(offset),
+ btrfs_qgroup_subvid(offset));
break;
case BTRFS_UUID_KEY_SUBVOL:
case BTRFS_UUID_KEY_RECEIVED_SUBVOL:
@@ -801,7 +815,7 @@
u32 nr = btrfs_header_nritems(l);
u64 objectid;
u32 type;
- char bg_flags_str[32];
+ char flags_str[32];
printf("leaf %llu items %d free space %d generation %llu owner %llu\n",
(unsigned long long)btrfs_header_bytenr(l), nr,
@@ -920,13 +934,13 @@
struct btrfs_block_group_item);
read_extent_buffer(l, &bg_item, (unsigned long)bi,
sizeof(bg_item));
- memset(bg_flags_str, 0, sizeof(bg_flags_str));
+ memset(flags_str, 0, sizeof(flags_str));
bg_flags_to_str(btrfs_block_group_flags(&bg_item),
- bg_flags_str);
+ flags_str);
printf("\t\tblock group used %llu chunk_objectid %llu flags %s\n",
(unsigned long long)btrfs_block_group_used(&bg_item),
(unsigned long long)btrfs_block_group_chunk_objectid(&bg_item),
- bg_flags_str);
+ flags_str);
break;
case BTRFS_CHUNK_ITEM_KEY:
print_chunk(l, btrfs_item_ptr(l, i, struct btrfs_chunk));
@@ -953,14 +967,16 @@
case BTRFS_QGROUP_STATUS_KEY:
qg_status = btrfs_item_ptr(l, i,
struct btrfs_qgroup_status_item);
- printf("\t\tversion %llu generation %llu flags %#llx "
+ memset(flags_str, 0, sizeof(flags_str));
+ qgroup_flags_to_str(btrfs_qgroup_status_flags(l, qg_status),
+ flags_str);
+ printf("\t\tversion %llu generation %llu flags %s "
"scan %lld\n",
(unsigned long long)
btrfs_qgroup_status_version(l, qg_status),
(unsigned long long)
btrfs_qgroup_status_generation(l, qg_status),
- (unsigned long long)
- btrfs_qgroup_status_flags(l, qg_status),
+ flags_str,
(unsigned long long)
btrfs_qgroup_status_scan(l, qg_status));
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/qgroup.c new/btrfs-progs-v3.19.1/qgroup.c
--- old/btrfs-progs-v3.19/qgroup.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/qgroup.c 2015-03-25 18:43:42.000000000 +0100
@@ -172,8 +172,9 @@
int len = 0;
list_for_each_entry(list, &qgroup->qgroups, next_qgroup) {
- len += printf("%llu/%llu", (list->qgroup)->qgroupid >> 48,
- ((1ll << 48) - 1) & (list->qgroup)->qgroupid);
+ len += printf("%llu/%llu",
+ btrfs_qgroup_level(list->qgroup->qgroupid),
+ btrfs_qgroup_subvid(list->qgroup->qgroupid));
if (!list_is_last(&list->next_qgroup, &qgroup->qgroups))
len += printf(",");
}
@@ -189,8 +190,9 @@
int len = 0;
list_for_each_entry(list, &qgroup->members, next_member) {
- len += printf("%llu/%llu", (list->member)->qgroupid >> 48,
- ((1ll << 48) - 1) & (list->member)->qgroupid);
+ len += printf("%llu/%llu",
+ btrfs_qgroup_level(list->member->qgroupid),
+ btrfs_qgroup_subvid(list->member->qgroupid));
if (!list_is_last(&list->next_member, &qgroup->members))
len += printf(",");
}
@@ -219,8 +221,9 @@
switch (column) {
case BTRFS_QGROUP_QGROUPID:
- len = printf("%llu/%llu", qgroup->qgroupid >> 48,
- ((1ll << 48) - 1) & qgroup->qgroupid);
+ len = printf("%llu/%llu",
+ btrfs_qgroup_level(qgroup->qgroupid),
+ btrfs_qgroup_subvid(qgroup->qgroupid));
print_qgroup_column_add_blank(BTRFS_QGROUP_QGROUPID, len);
break;
case BTRFS_QGROUP_RFER:
@@ -921,8 +924,9 @@
switch (column) {
case BTRFS_QGROUP_QGROUPID:
- sprintf(tmp, "%llu/%llu", (bq->qgroupid >> 48),
- bq->qgroupid & ((1ll << 48) - 1));
+ sprintf(tmp, "%llu/%llu",
+ btrfs_qgroup_level(bq->qgroupid),
+ btrfs_qgroup_subvid(bq->qgroupid));
len = strlen(tmp);
if (btrfs_qgroup_columns[column].max_len < len)
btrfs_qgroup_columns[column].max_len = len;
@@ -951,8 +955,8 @@
len = 0;
list_for_each_entry(list, &bq->qgroups, next_qgroup) {
len += sprintf(tmp, "%llu/%llu",
- (list->qgroup)->qgroupid >> 48,
- ((1ll << 48) - 1) & (list->qgroup)->qgroupid);
+ btrfs_qgroup_level(list->qgroup->qgroupid),
+ btrfs_qgroup_subvid(list->qgroup->qgroupid));
if (!list_is_last(&list->next_qgroup, &bq->qgroups))
len += 1;
}
@@ -963,8 +967,8 @@
len = 0;
list_for_each_entry(list, &bq->members, next_member) {
len += sprintf(tmp, "%llu/%llu",
- (list->member)->qgroupid >> 48,
- ((1ll << 48) - 1) & (list->member)->qgroupid);
+ btrfs_qgroup_level(list->member->qgroupid),
+ btrfs_qgroup_subvid(list->member->qgroupid));
if (!list_is_last(&list->next_member, &bq->members))
len += 1;
}
@@ -1013,6 +1017,20 @@
n = rb_prev(n);
}
}
+
+static inline void print_status_flag_warning(u64 flags)
+{
+ if (!(flags & BTRFS_QGROUP_STATUS_FLAG_ON))
+ fprintf(stderr,
+ "WARNING: Quota disabled, qgroup data may be out of date\n");
+ else if (flags & BTRFS_QGROUP_STATUS_FLAG_RESCAN)
+ fprintf(stderr,
+ "WARNING: Rescan is running, qgroup data may be incorrect\n");
+ else if (flags & BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
+ fprintf(stderr,
+ "WARNING: Qgroup data inconsistent, rescan recommended\n");
+}
+
static int __qgroups_search(int fd, struct qgroup_lookup *qgroup_lookup)
{
int ret;
@@ -1036,7 +1054,7 @@
sk->tree_id = BTRFS_QUOTA_TREE_OBJECTID;
sk->max_type = BTRFS_QGROUP_RELATION_KEY;
- sk->min_type = BTRFS_QGROUP_INFO_KEY;
+ sk->min_type = BTRFS_QGROUP_STATUS_KEY;
sk->max_objectid = (u64)-1;
sk->max_offset = (u64)-1;
sk->max_transid = (u64)-1;
@@ -1067,7 +1085,15 @@
off);
off += sizeof(*sh);
- if (sh->type == BTRFS_QGROUP_INFO_KEY) {
+ if (sh->type == BTRFS_QGROUP_STATUS_KEY) {
+ struct btrfs_qgroup_status_item *si;
+ u64 flags;
+
+ si = (struct btrfs_qgroup_status_item *)
+ (args.buf + off);
+ flags = btrfs_stack_qgroup_status_flags(si);
+ print_status_flag_warning(flags);
+ } else if (sh->type == BTRFS_QGROUP_INFO_KEY) {
info = (struct btrfs_qgroup_info_item *)
(args.buf + off);
a1 = btrfs_stack_qgroup_info_generation(info);
@@ -1245,34 +1271,6 @@
return 0;
}
-u64 parse_qgroupid(char *p)
-{
- char *s = strchr(p, '/');
- char *ptr_src_end = p + strlen(p);
- char *ptr_parse_end = NULL;
- u64 level;
- u64 id;
-
- if (!s) {
- id = strtoull(p, &ptr_parse_end, 10);
- if (ptr_parse_end != ptr_src_end)
- goto err;
- return id;
- }
- level = strtoull(p, &ptr_parse_end, 10);
- if (ptr_parse_end != s)
- goto err;
-
- id = strtoull(s+1, &ptr_parse_end, 10);
- if (ptr_parse_end != ptr_src_end)
- goto err;
-
- return (level << 48) | id;
-err:
- fprintf(stderr, "ERROR:invalid qgroupid\n");
- exit(-1);
-}
-
int qgroup_inherit_size(struct btrfs_qgroup_inherit *p)
{
return sizeof(*p) + sizeof(p->qgroups[0]) *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/qgroup.h new/btrfs-progs-v3.19.1/qgroup.h
--- old/btrfs-progs-v3.19/qgroup.h 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/qgroup.h 2015-03-25 18:43:42.000000000 +0100
@@ -93,7 +93,6 @@
int btrfs_qgroup_setup_comparer(struct btrfs_qgroup_comparer_set **comp_set,
enum btrfs_qgroup_comp_enum comparer,
int is_descending);
-u64 parse_qgroupid(char *p);
int qgroup_inherit_size(struct btrfs_qgroup_inherit *p);
int qgroup_inherit_add_group(struct btrfs_qgroup_inherit **inherit, char *arg);
int qgroup_inherit_add_copy(struct btrfs_qgroup_inherit **inherit, char *arg,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/tests/convert-tests.sh new/btrfs-progs-v3.19.1/tests/convert-tests.sh
--- old/btrfs-progs-v3.19/tests/convert-tests.sh 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/tests/convert-tests.sh 2015-03-25 18:43:42.000000000 +0100
@@ -16,7 +16,8 @@
test(){
echo " [TEST] $1"
- shift
+ nodesize=$2
+ shift 2
echo "creating ext image with: $*" >> convert-tests-results.txt
# 256MB is the smallest acceptable btrfs image.
rm -f $here/test.img >> convert-tests-results.txt 2>&1 \
@@ -25,13 +26,26 @@
|| _fail "could not create test image file"
$* -F $here/test.img >> convert-tests-results.txt 2>&1 \
|| _fail "filesystem create failed"
- $here/btrfs-convert $here/test.img >> convert-tests-results.txt 2>&1 \
+ $here/btrfs-convert -N "$nodesize" $here/test.img \
+ >> convert-tests-results.txt 2>&1 \
|| _fail "btrfs-convert failed"
$here/btrfs check $here/test.img >> convert-tests-results.txt 2>&1 \
|| _fail "btrfs check detected errors"
}
# btrfs-convert requires 4k blocksize.
-test "ext2" mke2fs -b 4096
-test "ext3" mke2fs -j -b 4096
-test "ext4" mke2fs -t ext4 -b 4096
+test "ext2 4k nodesize" 4096 mke2fs -b 4096
+test "ext3 4k nodesize" 4096 mke2fs -j -b 4096
+test "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096
+test "ext2 8k nodesize" 8192 mke2fs -b 4096
+test "ext3 8k nodesize" 8192 mke2fs -j -b 4096
+test "ext4 8k nodesize" 8192 mke2fs -t ext4 -b 4096
+test "ext2 16k nodesize" 16384 mke2fs -b 4096
+test "ext3 16k nodesize" 16384 mke2fs -j -b 4096
+test "ext4 16k nodesize" 16384 mke2fs -t ext4 -b 4096
+test "ext2 32k nodesize" 32768 mke2fs -b 4096
+test "ext3 32k nodesize" 32768 mke2fs -j -b 4096
+test "ext4 32k nodesize" 32768 mke2fs -t ext4 -b 4096
+test "ext2 64k nodesize" 65536 mke2fs -b 4096
+test "ext3 64k nodesize" 65536 mke2fs -j -b 4096
+test "ext4 64k nodesize" 65536 mke2fs -t ext4 -b 4096
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/utils.c new/btrfs-progs-v3.19.1/utils.c
--- old/btrfs-progs-v3.19/utils.c 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/utils.c 2015-03-25 18:43:42.000000000 +0100
@@ -1708,6 +1708,25 @@
}
/*
+ * Unsafe subvolume check.
+ *
+ * This only checks ino == BTRFS_FIRST_FREE_OBJECTID, even it is not in a
+ * btrfs mount point.
+ * Must use together with other reliable method like btrfs ioctl.
+ */
+static int __is_subvol(const char *path)
+{
+ struct stat st;
+ int ret;
+
+ ret = lstat(path, &st);
+ if (ret < 0)
+ return ret;
+
+ return st.st_ino == BTRFS_FIRST_FREE_OBJECTID;
+}
+
+/*
* A not-so-good version fls64. No fascinating optimization since
* no one except parse_size use it
*/
@@ -1795,6 +1814,55 @@
return ret;
}
+u64 parse_qgroupid(const char *p)
+{
+ char *s = strchr(p, '/');
+ const char *ptr_src_end = p + strlen(p);
+ char *ptr_parse_end = NULL;
+ u64 level;
+ u64 id;
+ int fd;
+ int ret = 0;
+
+ if (p[0] == '/')
+ goto path;
+
+ /* Numeric format like '0/257' is the primary case */
+ if (!s) {
+ id = strtoull(p, &ptr_parse_end, 10);
+ if (ptr_parse_end != ptr_src_end)
+ goto path;
+ return id;
+ }
+ level = strtoull(p, &ptr_parse_end, 10);
+ if (ptr_parse_end != s)
+ goto path;
+
+ id = strtoull(s + 1, &ptr_parse_end, 10);
+ if (ptr_parse_end != ptr_src_end)
+ goto path;
+
+ return (level << BTRFS_QGROUP_LEVEL_SHIFT) | id;
+
+path:
+ /* Path format like subv at 'my_subvol' is the fallback case */
+ ret = __is_subvol(p);
+ if (ret < 0 || !ret)
+ goto err;
+ fd = open(p, O_RDONLY);
+ if (fd < 0)
+ goto err;
+ ret = lookup_ino_rootid(fd, &id);
+ close(fd);
+ if (ret < 0)
+ goto err;
+ return id;
+
+err:
+ fprintf(stderr, "ERROR: invalid qgroupid or subvolume path: %s\n", p);
+ exit(-1);
+}
+
int open_file_or_dir3(const char *fname, DIR **dirstream, int open_flags)
{
int ret;
@@ -2720,3 +2788,24 @@
return v2_supported;
}
+
+int btrfs_check_node_or_leaf_size(u32 size, u32 sectorsize)
+{
+ if (size < sectorsize) {
+ fprintf(stderr,
+ "ERROR: Illegal nodesize (or leafsize) %u (smaller than %u)\n",
+ size, sectorsize);
+ return -1;
+ } else if (size > BTRFS_MAX_METADATA_BLOCKSIZE) {
+ fprintf(stderr,
+ "ERROR: Illegal nodesize (or leafsize) %u (larger than %u)\n",
+ size, BTRFS_MAX_METADATA_BLOCKSIZE);
+ return -1;
+ } else if (size & (sectorsize - 1)) {
+ fprintf(stderr,
+ "ERROR: Illegal nodesize (or leafsize) %u (not aligned to %u)\n",
+ size, sectorsize);
+ return -1;
+ }
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/utils.h new/btrfs-progs-v3.19.1/utils.h
--- old/btrfs-progs-v3.19/utils.h 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/utils.h 2015-03-25 18:43:42.000000000 +0100
@@ -25,6 +25,7 @@
#define BTRFS_MKFS_SYSTEM_GROUP_SIZE (4 * 1024 * 1024)
#define BTRFS_MKFS_SMALL_VOLUME_SIZE (1024 * 1024 * 1024)
+#define BTRFS_MKFS_DEFAULT_NODE_SIZE 16384
#define BTRFS_SCAN_MOUNTED (1ULL << 0)
#define BTRFS_SCAN_LBLKID (1ULL << 1)
@@ -113,6 +114,7 @@
int get_mountpt(char *dev, char *mntpt, size_t size);
int btrfs_scan_block_devices(int run_ioctl);
u64 parse_size(char *s);
+u64 parse_qgroupid(const char *p);
u64 arg_strtou64(const char *str);
int open_file_or_dir(const char *fname, DIR **dirstream);
int open_file_or_dir3(const char *fname, DIR **dirstream, int open_flags);
@@ -208,5 +210,6 @@
}
int btrfs_tree_search2_ioctl_supported(int fd);
+int btrfs_check_node_or_leaf_size(u32 size, u32 sectorsize);
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/version.h.in new/btrfs-progs-v3.19.1/version.h.in
--- old/btrfs-progs-v3.19/version.h.in 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/version.h.in 2015-03-25 18:43:42.000000000 +0100
@@ -8,4 +8,7 @@
#define BTRFS_LIB_VERSION ( BTRFS_LIB_MAJOR * 10000 + \
BTRFS_LIB_MINOR * 100 + \
BTRFS_LIB_PATCHLEVEL )
+
+#define BTRFS_BUILD_VERSION "Btrfs @PACKAGE_VERSION@"
+
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/btrfs-progs-v3.19/version.sh new/btrfs-progs-v3.19.1/version.sh
--- old/btrfs-progs-v3.19/version.sh 2015-03-11 13:40:48.000000000 +0100
+++ new/btrfs-progs-v3.19.1/version.sh 2015-03-25 18:43:42.000000000 +0100
@@ -6,7 +6,7 @@
# Copyright 2008, Oracle
# Released under the GNU GPLv2
-v="v3.19"
+v="v3.19.1"
opt=$1
++++++ local-version-override.patch ++++++
--- /var/tmp/diff_new_pack.44HxWY/_old 2015-03-29 20:15:56.000000000 +0200
+++ /var/tmp/diff_new_pack.44HxWY/_new 2015-03-29 20:15:56.000000000 +0200
@@ -6,8 +6,8 @@
# Copyright 2008, Oracle
# Released under the GNU GPLv2
--v="v3.19"
-+v="v3.19+20150311"
+-v="v3.19.1"
++v="v3.19.1+20150325"
opt=$1
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org