Hello community,

here is the log from the commit of package reiser4progs for openSUSE:Factory 
checked in at 2020-12-09 22:22:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/reiser4progs (Old)
 and      /work/SRC/openSUSE:Factory/.reiser4progs.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "reiser4progs"

Wed Dec  9 22:22:12 2020 rev:11 rq:854261 version:2.0.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/reiser4progs/reiser4progs.changes        
2020-01-07 23:58:06.324179311 +0100
+++ /work/SRC/openSUSE:Factory/.reiser4progs.new.2328/reiser4progs.changes      
2020-12-09 22:22:12.919723695 +0100
@@ -1,0 +2,10 @@
+Mon Nov 23 21:55:20 UTC 2020 - Jan Engelhardt <[email protected]>
+
+- Update to release 2.0.4
+  * Format release 5.1.3.
+  * Logical Volumes with parallel scaling out, fair distribution
+    and transparent data migration capabilities.
+  * Proxy device support (Tiering, Burst Buffers).
+  * Selective file migration and "immobile file status support".
+
+-------------------------------------------------------------------

Old:
----
  reiser4progs-2.0.0.tar.gz

New:
----
  reiser4progs-2.0.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ reiser4progs.spec ++++++
--- /var/tmp/diff_new_pack.x48pFL/_old  2020-12-09 22:22:13.523724308 +0100
+++ /var/tmp/diff_new_pack.x48pFL/_new  2020-12-09 22:22:13.527724311 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package reiser4progs
 #
-# Copyright (c) 2019 SUSE LLC
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
 
 
 Name:           reiser4progs
-Version:        2.0.0
+Version:        2.0.4
 Release:        0
-%define lsuf   -2_0-0
+%define lsuf   -2_0-4
 Summary:        Utilities for Managing the Reiser4 File System
 License:        GPL-2.0-only
 Group:          System/Filesystems
@@ -106,13 +106,13 @@
 %_sbindir/*reiser4
 
 %files -n libreiser4%lsuf
-%_libdir/libreiser4-2.0.so.0*
+%_libdir/libreiser4-2.0.so.4*
 
 %files -n libreiser4-minimal%lsuf
-%_libdir/libreiser4-minimal-2.0.so.0*
+%_libdir/libreiser4-minimal-2.0.so.4*
 
 %files -n librepair%lsuf
-%_libdir/librepair-2.0.so.0*
+%_libdir/librepair-2.0.so.4*
 
 %files devel
 %_includedir/reiser4/

++++++ no-static.diff ++++++
--- /var/tmp/diff_new_pack.x48pFL/_old  2020-12-09 22:22:13.547724332 +0100
+++ /var/tmp/diff_new_pack.x48pFL/_new  2020-12-09 22:22:13.547724332 +0100
@@ -7,10 +7,10 @@
  libreiser4/Makefile.am |    1 -
  2 files changed, 7 deletions(-)
 
-Index: reiser4progs-1.2.1/configure.ac
+Index: reiser4progs-2.0.4/configure.ac
 ===================================================================
---- reiser4progs-1.2.1.orig/configure.ac
-+++ reiser4progs-1.2.1/configure.ac
+--- reiser4progs-2.0.4.orig/configure.ac
++++ reiser4progs-2.0.4/configure.ac
 @@ -70,9 +70,6 @@ libaal_config_minor_version=`echo $2 | \
  libaal_config_micro_version=`echo $2 | \
      sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
@@ -38,10 +38,10 @@
  
  if test x$with_libaal != x; then
        LIBS="-L$with_libaal/lib"
-Index: reiser4progs-1.2.1/libreiser4/Makefile.am
+Index: reiser4progs-2.0.4/libreiser4/Makefile.am
 ===================================================================
---- reiser4progs-1.2.1.orig/libreiser4/Makefile.am
-+++ reiser4progs-1.2.1/libreiser4/Makefile.am
+--- reiser4progs-2.0.4.orig/libreiser4/Makefile.am
++++ reiser4progs-2.0.4/libreiser4/Makefile.am
 @@ -30,7 +30,6 @@ libreiser4_static_la_LIBADD  = $(top_bui
  
  libreiser4_static_la_SOURCES = $(libreiser4_sources)
@@ -49,4 +49,4 @@
 -libreiser4_static_la_LDFLAGS = -static
  
  if ENABLE_MINIMAL
- libreiser4_minimal_la_LIBADD   = $(top_builddir)/libaux/libaux-minimal.la \
+ libreiser4_minimal_la_LIBADD   = $(top_builddir)/libmisc/libmisc-minimal.la \

++++++ reiser4progs-2.0.0.tar.gz -> reiser4progs-2.0.4.tar.gz ++++++
++++ 15042 lines of diff (skipped)
++++    retrying with extended exclude list
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/ChangeLog new/reiser4progs-2.0.4/ChangeLog
--- old/reiser4progs-2.0.0/ChangeLog    2019-12-29 20:53:26.000000000 +0100
+++ new/reiser4progs-2.0.4/ChangeLog    2020-11-22 19:19:50.000000000 +0100
@@ -6,9 +6,27 @@
 This file may be modified and/or distributed without restriction. This is
 not an invitation to misrepresent the history of reiser4progs.
 
+2020-11-11
+       2.0.4 version;
+       Changes in logical volumes administration. Don't invoke balancing
+       by default. Add new options for volume.reiser4(8)
+       Updated man page for volume.reiser4(8) utility
+2020-08-16
+       2.0.3 version;
+       Fixed bugs in progs/volume/volume.c
+       Added man page for volume.reiser4(8) utility
+2020-07-05
+       2.0.2 version;
+       Selective file migration and "immobile file status support",
+       User interfaces
+2020-05-24
+       2.0.1 version;
+       Proxy device support (Tiering, Burst Buffers)
 2019-12-29
        2.0.0 version;
-       Format release 5.1.3
+       Format release 5.1.3;
+       Logical Volumes with parallel scaling out,
+       fair distribution and transparent data migration capabilities
 2017-11-28
        1.2.1 version;
        Fix up configuration problem (From Felix Zielcke)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/Makefile.am new/reiser4progs-2.0.4/Makefile.am
--- old/reiser4progs-2.0.0/Makefile.am  2019-12-27 11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/Makefile.am  2020-11-22 19:20:04.000000000 +0100
@@ -1,4 +1,4 @@
-SUBDIRS         = libaux plugin libreiser4 librepair libmisc progs include doc 
demos
+SUBDIRS         = libaux libmisc plugin libreiser4 librepair progs include doc 
demos
 
 EXTRA_DIST     = AUTHORS COPYING TODO NEWS BUGS README CREDITS THANKS \
                  reiser4progs.spec.in reiser4progs.spec libreiser4.m4 \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/compile new/reiser4progs-2.0.4/compile
--- old/reiser4progs-2.0.0/compile      2018-03-08 21:15:51.000000000 +0100
+++ new/reiser4progs-2.0.4/compile      2017-02-10 07:47:11.000000000 +0100
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2018-03-07.03; # UTC
+scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999-2018 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <[email protected]>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -255,8 +255,7 @@
     echo "compile $scriptversion"
     exit $?
     ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
-  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
     func_cl_wrapper "$@"      # Doesn't return...
     ;;
 esac
@@ -340,9 +339,9 @@
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
+# time-stamp-time-zone: "UTC"
 # time-stamp-end: "; # UTC"
 # End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/configure.ac new/reiser4progs-2.0.4/configure.ac
--- old/reiser4progs-2.0.0/configure.ac 2019-12-28 12:30:44.000000000 +0100
+++ new/reiser4progs-2.0.4/configure.ac 2020-11-22 19:19:50.000000000 +0100
@@ -15,7 +15,7 @@
 
 LIBREISER4_MAJOR_VERSION=2
 LIBREISER4_MINOR_VERSION=0
-LIBREISER4_MICRO_VERSION=0
+LIBREISER4_MICRO_VERSION=4
 
 LIBREISER4_INTERFACE_AGE=0
 LIBREISER4_BINARY_AGE=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/demos/Makefile.am 
new/reiser4progs-2.0.4/demos/Makefile.am
--- old/reiser4progs-2.0.0/demos/Makefile.am    2019-12-27 11:30:13.000000000 
+0100
+++ new/reiser4progs-2.0.4/demos/Makefile.am    2020-11-22 19:20:04.000000000 
+0100
@@ -10,8 +10,8 @@
 
 busy_CFLAGS    = @GENERIC_CFLAGS@
 
-busy_LDADD     = $(top_builddir)/libreiser4/libreiser4.la \
-                 $(top_builddir)/libmisc/libmisc.la \
+busy_LDADD     = $(top_builddir)/libmisc/libmisc.la \
+                 $(top_builddir)/libreiser4/libreiser4.la \
                  $(PROGS_LIBS)
 
 EXTRA_DIST      = $(noinst_SCRIPTS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/doc/Makefile.am new/reiser4progs-2.0.4/doc/Makefile.am
--- old/reiser4progs-2.0.0/doc/Makefile.am      2019-12-27 11:30:13.000000000 
+0100
+++ new/reiser4progs-2.0.4/doc/Makefile.am      2020-11-22 19:19:50.000000000 
+0100
@@ -1,4 +1,4 @@
-man_MANS   = mkfs.reiser4.8 fsck.reiser4.8 debugfs.reiser4.8 
measurefs.reiser4.8
+man_MANS   = mkfs.reiser4.8 fsck.reiser4.8 debugfs.reiser4.8 
measurefs.reiser4.8 volume.reiser4.8
 
 EXTRA_DIST = $(man_MANS)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/doc/volume.reiser4.8 
new/reiser4progs-2.0.4/doc/volume.reiser4.8
--- old/reiser4progs-2.0.0/doc/volume.reiser4.8 1970-01-01 01:00:00.000000000 
+0100
+++ new/reiser4progs-2.0.4/doc/volume.reiser4.8 2020-11-28 13:58:18.000000000 
+0100
@@ -0,0 +1,166 @@
+.\"                                            Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH volume.reiser4 8 "16 Aug, 2020" reiser4progs "reiser4progs manual"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+volume.reiser4 \- the program for managing reiser4 logical volumes.
+.SH SYNOPSIS
+.B volume.reiser4
+[ options ] [ FILE ] [ MNT ]
+.SH DESCRIPTION
+.B volume.reiser4
+is an utility to manage reiser4 logical (compound) volumes. It performs
+operations on logical volumes like adding[removing] a brick to[from]
+your volume, changing capacity of any brick of your volume, increasing
+current upper limit on total number of bricks in your volume.
+On-line options are applicable only to mounted volumes. Other options
+don't have such restrictions. This program doesn't create initial volume.
+Instead, it operates on bricks, which are formatted partitions. To
+create a brick use mkfs.reiser4(8) utility. For more details see logical
+volumes administration guide at
+.nh
+https://reiser4.wiki.kernel.org/index.php/Logical_Volumes_Administration
+.hy
+.SH COMMON OPTIONS
+.TP
+.B -V, --version
+Prints program version.
+.TP
+.B -?, -h, --help
+Prints program help.
+.TP
+.B -y, --yes
+Assumes an answer 'yes' to all questions.
+.SH OFF-LINE OPTIONS
+.TP
+.B -g, --register DEV
+Register a brick associated with device DEV in the system.
+.TP
+.B -u, --unregister DEV
+Unregister a brick associated with device DEV in the system.
+.TP
+.B -l, --list
+Print list of all bricks registered in the system.
+.SH ON-LINE OPTIONS
+.TP
+.B -p, --print N
+Print information about a brick of serial number N in the volume mounted at 
MNT.
+.TP
+.B -b, --balance
+Run a balancing procedure on a volume mounted at MNT.
+.TP
+.B -z, --resize DEV
+Change data capacity of a brick associated with device DEV in the
+volume mounted at MNT. The actual capacity has to be defined by the
+option "-c (--capacity)".
+.TP
+.B -c, --capacity VALUE
+Define new data capacity VALUE for a device specified by option
+"-z (--resize)".
+.TP
+.B -a, --add DEV
+Add a brick associated with device DEV to the volume mounted at MNT.
+This operation makes the volume unbalanced. Using in conjunction with -B
+(--with-balance) option, completes the operation with balancing.
+.TP
+.B -x, --add-proxy
+Add a proxy brick associated with device DEV to the volume mounted at MNT.
+.TP
+.B -r, --remove
+Remove a brick associated with device DEV from the volume mounted at MNT.
+Automatically triggers balancing, which is considered as a part of the
+removal operation. Being interrupted for some reasons, should be completed by
+running the utility with the option -R (--finish-removal).
+.TP
+.B -q, --scale N
+Increase 2^N times the upper limit for total number of bricks in the
+volume mounted at MNT. This operation makes the volume unbalanced.
+Using in conjunction with -B (--with-balance) option, completes the operation
+with balancing.
+.TP
+.B -m, --migrate N
+Move all data blocks of regular FILE to a brick of serial number N.
+.TP
+.B -i, --set-immobile
+Set "immobile" property to regular FILE.
+.TP
+.B -e, --clear-immobile
+Clear "immobile" property of regular FILE.
+.TP
+.B -B, --with-balance
+Complete a volume operation with balancing procedure. Can be used only in
+conjunction with options -a (--add), -z (--resize), -q (--scale).
+.TP
+.B -R, --finish-removal
+Finish brick removal operation interrupted for various reasons.
+.TP
+.B -S, --restore-regular
+Restore regular distribution on the volume mounted at MNT.
+.sp 1
+.SH Examples:
+.sp 1
+To create a volume, choose volume ID and stripe size. Then create a first
+brick, that will be the meta-data brick of your volume:
+.sp 1
+VOL_ID=`uuidgen`
+.sp 1
+STRIPE=256K
+.sp 1
+mkfs.reiser4 -U $VOL_ID -t $STRIPE /dev/sdb1
+.sp 1
+To add a data brick to your initial volume, consisting of only one meta-data
+brick, mount it e.g. at /mnt:
+.sp 1
+mount /dev/sdb1 /mnt
+.sp 1
+Choose a block device for your data brick (e.g. /dev/sdb2) and format it with
+the same volume ID and stripe size:
+.sp 1
+mkfs.reiser4 -a -U $VOL_ID -t $STRIPE /dev/sdb2
+.sp 1
+Finally, using option "-a", add it to the volume:
+.sp 1
+volume.reiser4 -a /dev/sdb2 /mnt
+.sp 1
+After this, you might want to run balancing procedure on your volume. It will
+distribute all your data among the bricks fairly, i.e. in a proportion with
+bricks capacities. For this simply run the utility with the option -b 
(--balance):
+.sp 1
+volume.reiser4 -b /mnt
+.sp 1
+To remove a brick from your logical volume simply specify the block device that
+the brick is associated with, using option "-r":
+.sp 1
+volume.reiser4 -r /dev/sdb2 /mnt
+.sp 1
+After successful removal completion your volume is always balanced.
+If the operation of brick removal was interrupted for some reasons, then 
complete
+the removal by running the utility with the option -R (--finish-removal):
+.sp 1
+volume.reiser4 -R /mnt
+.RS
+.SH REPORTING BUGS
+Report bugs to <[email protected]>
+.SH SEE ALSO
+.BR mkfs.reiser4(8),
+.BR debugfs.reiser4(8),
+.br
+Reiser4 logical volumes administration guide at
+.nh
+https://reiser4.wiki.kernel.org/index.php/Logical_Volumes_Administration
+.hy
+.SH AUTHOR
+Written by Edward O. Shishkin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/include/reiser4/ioctl.h 
new/reiser4progs-2.0.4/include/reiser4/ioctl.h
--- old/reiser4progs-2.0.0/include/reiser4/ioctl.h      2019-12-27 
11:31:10.000000000 +0100
+++ new/reiser4progs-2.0.4/include/reiser4/ioctl.h      2020-11-22 
19:19:50.000000000 +0100
@@ -32,7 +32,7 @@
  */
 
 /*
- * Per volume flags.
+ * On-line per-volume and per-subvolume flags.
  * They are set up for (re)mount session and are not stored on disk
  */
 typedef enum {
@@ -60,8 +60,6 @@
        REISER4_DONT_PUNCH_HOLES = 9,
        /* volume is ready for regular operations */
        REISER4_ACTIVATED_VOL = 10,
-       /* this is to serialize online volume operations */
-       REISER4_BUSY_VOL = 11,
        /* volume is in unbalanced state */
        REISER4_UNBALANCED_VOL = 12,
        /* this flag indicates that volume operation was
@@ -70,9 +68,37 @@
        REISER4_INCOMPLETE_BRICK_REMOVAL = 13,
        /* this flag indicates that distribution mode is
           file-based (default is volume-based) */
-       REISER4_FILE_BASED_DIST = 14
+       REISER4_FILE_BASED_DIST = 14,
+       /* proxy-subvolume is active */
+       REISER4_PROXY_ENABLED = 15,
+       /* proxy subvolume accepts IO requests */
+       REISER4_PROXY_IO = 16
 } reiser4_fs_flag;
 
+typedef enum {
+       /* set if all nodes in internal tree have the same
+        * node layout plugin. See znode_guess_plugin() */
+       SUBVOL_ONE_NODE_PLUGIN = 0,
+       /* set if subvolume lives on a solid state drive */
+       SUBVOL_IS_NONROT_DEVICE = 1,
+       /* set if subvol is registered */
+       SUBVOL_REGISTERED = 2,
+       /* set if subvol is activated */
+       SUBVOL_ACTIVATED = 3,
+       /* set if brick is used for data storage and participates
+          in regular data distribution */
+       SUBVOL_HAS_DATA_ROOM = 4,
+       /* set if subvolume is not included in volume configuration
+          and doesn't accept any IOs */
+       SUBVOL_IS_ORPHAN = 5,
+       /* set if brick was scheduled for removal. It may be not
+          empty and may accept IOs */
+       SUBVOL_TO_BE_REMOVED = 6,
+       /* set if brick is used for data storage, but doesn't
+          participate in regular data distribution */
+       SUBVOL_IS_PROXY = 7
+} reiser4_subvol_flag;
+
 #define REISER4_PATH_NAME_MAX 3900 /* FIXME: make it more precise */
 
 typedef enum {
@@ -89,14 +115,23 @@
        REISER4_REMOVE_BRICK,
        REISER4_SCALE_VOLUME,
        REISER4_BALANCE_VOLUME,
+       REISER4_ADD_PROXY,
+       REISER4_MIGRATE_FILE,
+       REISER4_SET_FILE_IMMOBILE,
+       REISER4_CLR_FILE_IMMOBILE,
+       REISER4_FINISH_REMOVAL,
+       REISER4_RESTORE_REGULAR_DST
 } reiser4_vol_op;
 
+typedef enum {
+       COMPLETE_WITH_BALANCE = 0x1
+} reiser4_vol_op_flags;
+
 struct reiser4_volume_stat
 {
        u8  id[16]; /* unique ID */
-       s64 nr_bricks; /* absolute value indicates total number of
-                         bricks in the volume. Negative means that
-                         AID doesn't contain meta-data brick */
+       u32 nr_bricks; /* total number of bricks in the volume */
+       u32 bricks_in_dsa; /* number of bricks in DSA */
        u16 vpid; /* volume plugin ID */
        u16 dpid; /* distribution plugin ID */
        u16 stripe_bits; /* logarithm of stripe size */
@@ -112,7 +147,7 @@
        u64 int_id; /* ordered number, 0 means meta-data brick */
        u8  ext_id[16]; /* external unique ID */
        u16 nr_replicas; /* number of replicas */
-       u64 state; /* activated, etc flags */
+       u64 subv_flags; /* per-subvolume on-line flags */
        u64 block_count; /* total number of blocks on the device */
        u64 data_capacity; /* "weight" of the brick in data storage array */
        u64 blocks_used; /* number of blocks used by data and meta-data */
@@ -127,6 +162,7 @@
        reiser4_vol_op opcode;
        int error;
        u64 new_capacity;
+       u64 flags;
        union {
                u64 brick_idx; /* index of brick in logical volume */
                u64 vol_idx; /* serial num of volume in the list of volumes */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/libmisc/Makefile.am 
new/reiser4progs-2.0.4/libmisc/Makefile.am
--- old/reiser4progs-2.0.0/libmisc/Makefile.am  2019-12-27 11:31:10.000000000 
+0100
+++ new/reiser4progs-2.0.4/libmisc/Makefile.am  2020-11-22 19:20:04.000000000 
+0100
@@ -1,4 +1,12 @@
-noinst_LTLIBRARIES     = libmisc.la
+miscincludedir         = -I$(top_srcdir)/include
+
+if ENABLE_MINIMAL
+MINIMAL_LIBS           = libmisc-minimal.la
+else
+MINIMAL_LIBS =
+endif
+
+noinst_LTLIBRARIES     = libmisc.la $(MINIMAL_LIBS)
 
 libmisc_la_SOURCES     = misc.c profile.c exception.c gauge.c ui.c \
                          mpressure.c
@@ -8,4 +16,13 @@
 
 libmisc_la_CFLAGS       = @GENERIC_CFLAGS@
 
-AM_CPPFLAGS                = -I$(top_srcdir)/include
+if ENABLE_MINIMAL
+libmisc_minimal_la_SOURCES = $(libmisc_la_SOURCES)
+
+libmisc_minimal_la_LIBADD  = @AAL_LIBS@ $(UUID_LIBS) @PROGS_LIBS@ \
+                            $(top_builddir)/libaux/libaux-minimal.la
+
+libmisc_minimal_la_CFLAGS  = $(libmisc_la_CFLAGS)
+endif
+
+AM_CPPFLAGS                = $(miscincludedir)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/libreiser4/Makefile.am 
new/reiser4progs-2.0.4/libreiser4/Makefile.am
--- old/reiser4progs-2.0.0/libreiser4/Makefile.am       2019-12-27 
11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/libreiser4/Makefile.am       2020-11-22 
19:20:04.000000000 +0100
@@ -14,7 +14,7 @@
 lib_LTLIBRARIES                     = libreiser4.la $(MINIMAL_LIBS)
 noinst_LTLIBRARIES          = libreiser4-static.la
 
-libreiser4_la_LIBADD        = $(top_builddir)/libaux/libaux-static.la \
+libreiser4_la_LIBADD        = $(top_builddir)/libmisc/libmisc.la \
                               $(top_builddir)/plugin/libreiser4-plugin.la \
                               @AAL_LIBS@ 
 
@@ -24,7 +24,7 @@
                               -release $(LT_RELEASE)
 libreiser4_la_CFLAGS         = @GENERIC_CFLAGS@
 
-libreiser4_static_la_LIBADD  = $(top_builddir)/libaux/libaux-static.la \
+libreiser4_static_la_LIBADD  = $(top_builddir)/libmisc/libmisc.la \
                               $(top_builddir)/plugin/libreiser4-plugin.la \
                               @AAL_LIBS@ 
 
@@ -33,7 +33,7 @@
 libreiser4_static_la_LDFLAGS = -static
 
 if ENABLE_MINIMAL
-libreiser4_minimal_la_LIBADD   = $(top_builddir)/libaux/libaux-minimal.la \
+libreiser4_minimal_la_LIBADD   = $(top_builddir)/libmisc/libmisc-minimal.la \
                               
$(top_builddir)/plugin/libreiser4-plugin-minimal.la \
                               @AAL_MINIMAL_LIBS@ 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/missing new/reiser4progs-2.0.4/missing
--- old/reiser4progs-2.0.0/missing      2018-03-08 21:15:51.000000000 +0100
+++ new/reiser4progs-2.0.4/missing      2017-02-10 07:47:11.000000000 +0100
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2018-03-07.03; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996-2018 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <[email protected]>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -101,9 +101,9 @@
   exit $st
 fi
 
-perl_URL=https://www.perl.org/
-flex_URL=https://github.com/westes/flex
-gnu_software_URL=https://www.gnu.org/software
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
 
 program_details ()
 {
@@ -207,9 +207,9 @@
 exit $st
 
 # Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'write-file-hooks 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC0"
+# time-stamp-time-zone: "UTC"
 # time-stamp-end: "; # UTC"
 # End:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/debugfs/Makefile.am 
new/reiser4progs-2.0.4/progs/debugfs/Makefile.am
--- old/reiser4progs-2.0.0/progs/debugfs/Makefile.am    2019-12-27 
11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/debugfs/Makefile.am    2020-11-22 
19:20:04.000000000 +0100
@@ -2,9 +2,9 @@
 debugfs_reiser4_SOURCES         = debugfs.c debugfs.h print.c print.h browse.c 
\
                           browse.h types.h
 
-debugfs_reiser4_LDADD   = $(top_builddir)/libreiser4/libreiser4.la \
+debugfs_reiser4_LDADD   = $(top_builddir)/libmisc/libmisc.la \
                           $(top_builddir)/librepair/librepair.la \
-                          $(top_builddir)/libmisc/libmisc.la \
+                          $(top_builddir)/libreiser4/libreiser4.la \
                           $(PROGS_LIBS)
 
 debugfs_reiser4_LDFLAGS  = @PROGS_LDFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/fsck/Makefile.am 
new/reiser4progs-2.0.4/progs/fsck/Makefile.am
--- old/reiser4progs-2.0.0/progs/fsck/Makefile.am       2019-12-27 
11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/fsck/Makefile.am       2020-11-22 
19:20:04.000000000 +0100
@@ -1,9 +1,9 @@
 sbin_PROGRAMS          = fsck.reiser4
 fsck_reiser4_SOURCES   = fsck.c backup.c fsck.h backup.h
 
-fsck_reiser4_LDADD     = $(top_builddir)/libreiser4/libreiser4.la \
+fsck_reiser4_LDADD     = $(top_builddir)/libmisc/libmisc.la \
                          $(top_builddir)/librepair/librepair.la \
-                         $(top_builddir)/libmisc/libmisc.la \
+                         $(top_builddir)/libreiser4/libreiser4.la \
                          @PROGS_LIBS@
 
 fsck_reiser4_LDFLAGS    = @PROGS_LDFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/measurefs/Makefile.am 
new/reiser4progs-2.0.4/progs/measurefs/Makefile.am
--- old/reiser4progs-2.0.0/progs/measurefs/Makefile.am  2019-12-27 
11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/measurefs/Makefile.am  2020-11-22 
19:20:04.000000000 +0100
@@ -1,8 +1,8 @@
 sbin_PROGRAMS             = measurefs.reiser4
 measurefs_reiser4_SOURCES  = measurefs.c
 
-measurefs_reiser4_LDADD    = $(top_builddir)/libreiser4/libreiser4.la \
-                            $(top_builddir)/libmisc/libmisc.la \
+measurefs_reiser4_LDADD    = $(top_builddir)/libmisc/libmisc.la \
+                            $(top_builddir)/libreiser4/libreiser4.la \
                             $(PROGS_LIBS)
 
 measurefs_reiser4_LDFLAGS  = @PROGS_LDFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/mkfs/Makefile.am 
new/reiser4progs-2.0.4/progs/mkfs/Makefile.am
--- old/reiser4progs-2.0.0/progs/mkfs/Makefile.am       2019-12-27 
11:30:13.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/mkfs/Makefile.am       2020-11-22 
19:20:04.000000000 +0100
@@ -1,8 +1,8 @@
 sbin_PROGRAMS          = mkfs.reiser4
 mkfs_reiser4_SOURCES   = mkfs.c
 
-mkfs_reiser4_LDADD     = $(top_builddir)/libreiser4/libreiser4.la \
-                         $(top_builddir)/libmisc/libmisc.la \
+mkfs_reiser4_LDADD     = $(top_builddir)/libmisc/libmisc.la \
+                         $(top_builddir)/libreiser4/libreiser4.la \
                          $(PROGS_LIBS)
 
 mkfs_reiser4_LDFLAGS    = @PROGS_LDFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/volume/Makefile.am 
new/reiser4progs-2.0.4/progs/volume/Makefile.am
--- old/reiser4progs-2.0.0/progs/volume/Makefile.am     2019-12-27 
11:31:10.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/volume/Makefile.am     2020-11-22 
19:20:04.000000000 +0100
@@ -1,8 +1,8 @@
 sbin_PROGRAMS             = volume.reiser4
 volume_reiser4_SOURCES  = volume.c
 
-volume_reiser4_LDADD    = $(top_builddir)/libreiser4/libreiser4.la \
-                            $(top_builddir)/libmisc/libmisc.la \
+volume_reiser4_LDADD    = $(top_builddir)/libmisc/libmisc.la \
+                            $(top_builddir)/libreiser4/libreiser4.la \
                             $(PROGS_LIBS)
 
 volume_reiser4_LDFLAGS  = @PROGS_LDFLAGS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/progs/volume/volume.c 
new/reiser4progs-2.0.4/progs/volume/volume.c
--- old/reiser4progs-2.0.0/progs/volume/volume.c        2019-12-27 
11:31:10.000000000 +0100
+++ new/reiser4progs-2.0.4/progs/volume/volume.c        2020-11-22 
19:19:50.000000000 +0100
@@ -1,5 +1,5 @@
 /*
-  Copyright (c) 2017-2019 Eduard O. Shishkin
+  Copyright (c) 2017-2020 Eduard O. Shishkin
 
   This file is licensed to you under your choice of the GNU Lesser
   General Public License, version 3 or any later version (LGPLv3 or
@@ -32,37 +32,53 @@
 
 /* Known behavior flags */
 typedef enum behav_flags {
-       BF_FORCE      = 1 << 0,
-       BF_YES        = 1 << 1,
+       BF_FORCE        = 1 << 0,
+       BF_YES          = 1 << 1,
+       BF_WITH_BALANCE = 1 << 2
 } behav_flags_t;
 
 /* Prints options */
 static void volmgr_print_usage(char *name) {
-       fprintf(stderr, "Usage: %s [ options ] FILE\n", name);
+       fprintf(stderr, "Usage: %s [options] [FILE] [MNT]\n", name);
        fprintf(stderr,
-               "Volume managing options:\n"
-               "  -g, --register FILE           register a brick associated 
with a device\n"
-               "                                \"FILE\" in the system.\n"
-               "  -u, --unregister FILE         unregister a brick associated 
with\n"
-               "                                device\"FILE\" in the 
system.\n"
-               "  -l, --list                    print list of all bricks 
registered in the\n"
-               "                                system.\n"
-               "  -p, --print N                 print information about a 
brick of serial\n"
-               "                                number N in the mounted 
volume.\n"
-               "  -b, --balance                 balance the volume.\n"
-               "  -z, --resize FILE             set new data capacity for a 
brick associated\n"
-               "                                with device \"FILE\".\n"
-               "  -c, --capacity VALUE          specify VALUE of new data 
capacity\n"
-               "  -a, --add FILE                add a brick associated with 
device \"FILE\"\n"
-               "                                to the volume.\n"
-               "  -r, --remove FILE             remove a brick associated with 
device\n"
-               "                                \"FILE\" from the volume.\n"
-               "  -q, --scale N                 increase \"2^N\" times number 
of hash space\n"
-               "                                segments.\n"
                "Common options:\n"
-               "  -?, -h, --help                print program usage.\n"
-               "  -V, --version                 print current version.\n"
-               "  -y, --yes                     assumes an answer 'yes' to all 
questions.\n");
+               "  -?, -h, --help                Print program usage.\n"
+               "  -V, --version                 Print current version.\n"
+               "  -y, --yes                     Assumes an answer 'yes' to all 
questions.\n"
+               "Off-line options:\n"
+               "  -g, --register DEV            Register a brick associated 
with device DEV\n"
+               "                                in the system.\n"
+               "  -u, --unregister DEV          Unregister a brick associated 
with device DEV\n"
+               "                                in the system.\n"
+               "  -l, --list                    Print list of all bricks 
registered in the\n"
+               "                                system.\n"
+               "On-line options:\n"
+               "  -p, --print N                 Print information about a 
brick of serial\n"
+               "                                number N in the volume mounted 
at MNT.\n"
+               "  -b, --balance                 Balance volume mounted at 
MNT.\n"
+               "  -B, --with-balance            Complete a volume operation 
with balancing.\n"
+               "  -z, --resize DEV              Change data capacity of a 
brick accociated\n"
+               "                                with device DEV in the volume 
mounted at MNT.\n"
+               "                                The actual capacity has to be 
defined by the\n"
+               "                                option \"-c (--capacity)\".\n"
+               "  -c, --capacity VALUE          Define new data capacity VALUE 
for a device\n"
+               "                                specified by option \"-z 
(--resize).\n"
+               "  -a, --add DEV                 Add a brick associated with 
device DEV to the\n"
+               "                                volume mounted at MNT.\n"
+               "  -x, --add-proxy DEV           Add a proxy brick associated 
with device\n"
+               "                                DEV to the volume mounted at 
MNT.\n"
+               "  -r, --remove DEV              Remove a brick associated with 
device DEV\n"
+               "                                from the volume mounted at 
MNT.\n"
+               "  -R, --finish-removal          Complete a brick removal 
operation for the\n"
+               "                                volume mounted at MNT.\n"
+               "  -q, --scale N                 increase 2^N times the upper 
limit for total\n"
+               "                                number of bricks in the volume 
mounted at MNT.\n"
+               "  -m, --migrate N               Migrate all data blocks of 
regular FILE to a\n"
+               "                                brick of serial number N.\n"
+               "  -i, --set-immobile            Set \"immobile\" property to 
regular FILE.\n"
+               "  -e, --clear-immobile          Clear \"immobile\" property of 
regular FILE.\n"
+               "  -S, --restore-regular         Restore regular distribution 
on the volume\n"
+               "                                mounted at MNT.\n");
 }
 
 /* Initializes exception streams used by volume manager */
@@ -92,29 +108,48 @@
                aal_error("Can't stat %s. %s.", name, strerror(errno));
                return USER_ERROR;
        }
-       if (set_op(info, op))
-               return USER_ERROR;
-       strncpy(info->d.name, name, sizeof(info->d.name));
-       return NO_ERROR;
+       strncpy(info->d.name, name, sizeof(info->d.name) - 1);
+       return set_op(info, op);
 }
 
 static int set_op_value(struct reiser4_vol_op_args *info,
                        char *value, reiser4_vol_op op)
 {
-       if ((info->s.val = misc_str2long(value, 10)) == INVAL_DIG)
+       if ((info->s.val = misc_str2long(value, 10)) == INVAL_DIG) {
+               aal_error("Invalid value %s.", value);
                return USER_ERROR;
-       if (set_op(info, op))
-               return USER_ERROR;
-       return NO_ERROR;
+       }
+       return set_op(info, op);
 }
 
 static int set_capacity(struct reiser4_vol_op_args *info, char *value)
 {
-       if ((info->new_capacity = misc_str2long(value, 10)) == INVAL_DIG)
+       if ((info->new_capacity = misc_str2long(value, 10)) == INVAL_DIG) {
+               aal_error("Invalid value %s.", value);
                return USER_ERROR;
+       }
+       if (info->new_capacity == 0) {
+               aal_error("Invalid capacity (0)");
+               return USER_ERROR;
+       }
        return NO_ERROR;
 }
 
+static int check_deps(struct reiser4_vol_op_args *info)
+{
+       switch (info->opcode) {
+       case REISER4_RESIZE_BRICK:
+               if (info->new_capacity == 0) {
+                       aal_error("Option \"-z (--resize)\" requires option 
\"-c (--capacity)\"");
+                       return -1;
+               }
+               break;
+       default:
+               break;
+       }
+       return 0;
+}
+
 static void print_separator(void)
 {
        aal_stream_t stream;
@@ -225,8 +260,6 @@
        reiser4_plug_t *vol_plug, *dst_plug;
        uint64_t stripe_size;
        uint64_t nr_segments;
-       int nr_bricks;
-       int bricks_in_dsa;
 
        aal_stream_init(&stream, stdout, &file_stream);
 
@@ -241,28 +274,14 @@
        if (info->u.vol.nr_sgs_bits != 0)
                nr_segments = 1ull << info->u.vol.nr_sgs_bits;
 
-       nr_bricks = info->u.vol.nr_bricks;
-       if (nr_bricks < 0) {
-               /*
-                * negative number of bricks passed means
-                * that meta-data brick doesn't belong to
-                * data storage array
-                */
-               nr_bricks = -nr_bricks;
-               bricks_in_dsa = nr_bricks - 1;
-       } else
-               bricks_in_dsa = nr_bricks;
-
        if (!(dst_plug = reiser4_factory_ifind(DST_PLUG_TYPE, dst))) {
                aal_error("Can't find distrib plugin by its id 0x%x.", dst);
                return;
        }
-
        if (!(vol_plug = reiser4_factory_ifind(VOL_PLUG_TYPE, vol))) {
                aal_error("Can't find volume plugin by its id 0x%x.", vol);
                return;
        }
-
        aal_stream_format(&stream, "%s\n", "Logical Volume Info:");
 
 #if defined(HAVE_LIBUUID) && defined(HAVE_UUID_UUID_H)
@@ -274,7 +293,6 @@
        } else
                aal_stream_format(&stream, "ID:\t\t<none>\n");
 #endif
-
        aal_stream_format(&stream, "volume:\t\t0x%x (%s)\n",
                          vol, vol_plug ? vol_plug->label : "absent");
 
@@ -286,18 +304,22 @@
 
        aal_stream_format(&stream, "segments:\t%llu\n", nr_segments);
 
-       aal_stream_format(&stream, "bricks total:\t%d\n", nr_bricks);
+       aal_stream_format(&stream, "bricks total:\t%d\n", 
info->u.vol.nr_bricks);
 
-       aal_stream_format(&stream, "bricks in DSA:\t%d\n", bricks_in_dsa);
+       aal_stream_format(&stream, "bricks in DSA:\t%d\n", 
info->u.vol.bricks_in_dsa);
 
        aal_stream_format(&stream, "slots:\t\t%u\n", info->u.vol.nr_mslots);
 
-       aal_stream_format(&stream, "volinfo blocks:\t%llu\n",
+       aal_stream_format(&stream, "map blocks:\t%llu\n",
                          info->u.vol.nr_volinfo_blocks);
 
        aal_stream_format(&stream, "balanced:\t%s\n",
                          aal_test_bit(&info->u.vol.fs_flags,
                                       REISER4_UNBALANCED_VOL) ? "No" : "Yes");
+       aal_stream_format(&stream, "health:\t\t%s\n",
+                         aal_test_bit(&info->u.vol.fs_flags,
+                            REISER4_INCOMPLETE_BRICK_REMOVAL) ?
+                         "Incomplete brick removal" : "OK");
        aal_stream_fini(&stream);
 }
 
@@ -350,6 +372,14 @@
                          info->u.brick.volinfo_addr,
                          info->u.brick.volinfo_addr ? "" : "(none)");
 
+       aal_stream_format(&stream, "in DSA:\t\t%s\n",
+                         info->u.brick.subv_flags & (1 << 
SUBVOL_HAS_DATA_ROOM) ?
+                         "Yes" : "No");
+
+       aal_stream_format(&stream, "is proxy:\t%s\n",
+                         info->u.brick.subv_flags & (1 << SUBVOL_IS_PROXY) ?
+                         "Yes" : "No");
+
        aal_stream_fini(&stream);
 }
 
@@ -373,11 +403,18 @@
                {"list", no_argument, NULL, 'l'},
                {"print", required_argument, NULL, 'p'},
                {"balance", no_argument, NULL, 'b'},
+               {"with-balance", no_argument, NULL, 'B'},
                {"add", required_argument, NULL, 'a'},
+               {"add-proxy", required_argument, NULL, 'x'},
                {"remove", required_argument, NULL, 'r'},
+               {"finish-removal", no_argument, NULL, 'R'},
                {"resize", required_argument, NULL, 'z'},
                {"capacity", required_argument, NULL, 'c'},
                {"scale", required_argument, NULL, 'q'},
+               {"migrate-file", required_argument, NULL, 'm'},
+               {"set-immobile", no_argument, NULL, 'i'},
+               {"clear-immobile", no_argument, NULL, 'e'},
+               {"restore-regular", no_argument, NULL, 'S'},
                {0, 0, 0, 0}
        };
 
@@ -388,7 +425,7 @@
                volmgr_print_usage(argv[0]);
                return USER_ERROR;
        }
-       while ((c = getopt_long(argc, argv, "hVyfblp:g:u:a:r:z:c:q:?",
+       while ((c = getopt_long(argc, argv, "hVRSByfbliep:g:u:a:x:r:z:c:q:m:?",
                                long_options, (int *)0)) != EOF)
        {
                switch (c) {
@@ -405,6 +442,9 @@
                case 'y':
                        flags |= BF_YES;
                        break;
+               case 'B':
+                       flags |= BF_WITH_BALANCE;
+                       break;
                case 'b':
                        ret = set_op(&info, REISER4_BALANCE_VOLUME);
                        if (ret)
@@ -436,12 +476,23 @@
                        if (ret)
                                return ret;
                        break;
+               case 'x':
+                       ret = set_op_name(&info, optarg, &st,
+                                         REISER4_ADD_PROXY);
+                       if (ret)
+                               return ret;
+                       break;
                case 'r':
                        ret = set_op_name(&info, optarg, &st,
                                          REISER4_REMOVE_BRICK);
                        if (ret)
                                return ret;
                        break;
+               case 'R':
+                       ret = set_op(&info, REISER4_FINISH_REMOVAL);
+                       if (ret)
+                               return ret;
+                       break;
                case 'p':
                        ret = set_op_value(&info, optarg,
                                           REISER4_PRINT_BRICK);
@@ -465,6 +516,27 @@
                        if (ret)
                                return ret;
                        break;
+               case 'm':
+                       ret = set_op_value(&info, optarg,
+                                          REISER4_MIGRATE_FILE);
+                       if (ret)
+                               return ret;
+                       break;
+               case 'i':
+                       ret = set_op(&info, REISER4_SET_FILE_IMMOBILE);
+                       if (ret)
+                               return ret;
+                       break;
+               case 'e':
+                       ret = set_op(&info, REISER4_CLR_FILE_IMMOBILE);
+                       if (ret)
+                               return ret;
+                       break;
+               case 'S':
+                       ret = set_op(&info, REISER4_RESTORE_REGULAR_DST);
+                       if (ret)
+                               return ret;
+                       break;
                }
        }
        if (info.opcode == REISER4_INVALID_OPT)
@@ -495,25 +567,23 @@
                        ret = ioctl(fd, REISER4_IOC_SCAN_DEV, &info);
                }
        } else {
-               struct stat buf;
-
+               ret = check_deps(&info);
+               if (ret)
+                       goto error_free_libreiser4;
                name = argv[optind];
+               if (name == NULL) {
+                       libreiser4_fini();
+                       volmgr_print_usage(argv[0]);
+                       return USER_ERROR;
+               }
                fd = open(name, O_NONBLOCK);
                if (fd == -1) {
                        aal_error("Can't open %s. %s.", name, strerror(errno));
                        goto error_free_libreiser4;
                }
-               ret = fstat(fd, &buf);
-               if (ret) {
-                       aal_error("%s: fstat failed %s.",
-                                 name, strerror(errno));
-                       goto error_free_libreiser4;
-               }
-               if (!S_ISDIR(buf.st_mode)) {
-                       ret = -1;
-                       aal_error("%s is not directory.", name);
-                       goto close;
-               }
+               if (flags & BF_WITH_BALANCE)
+                       info.flags |= COMPLETE_WITH_BALANCE;
+
                ret = ioctl(fd, REISER4_IOC_VOLUME, &info);
                if (ret == -1)
                        aal_error("Ioctl on %s failed. %s.",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude 
config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 
--exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh 
old/reiser4progs-2.0.0/reiser4progs.spec 
new/reiser4progs-2.0.4/reiser4progs.spec
--- old/reiser4progs-2.0.0/reiser4progs.spec    2019-12-30 11:30:15.000000000 
+0100
+++ new/reiser4progs-2.0.4/reiser4progs.spec    2020-11-28 14:01:13.000000000 
+0100
@@ -1,7 +1,7 @@
 %define enable_debug 1
 
 Name: reiser4progs
-Version: 2.0.0
+Version: 2.0.4
 Release: 1
 Summary: Utilities for reiser4 filesystems
 License: GPL
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to