* [patch 0/2] Control filesystem balances (userspace)
@ 2010-10-30 0:10 Hugo Mills
2010-10-30 0:10 ` [patch 1/2] Balance progress monitoring Hugo Mills
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Hugo Mills @ 2010-10-30 0:10 UTC (permalink / raw)
To: linux-btrfs
These two patches complement the previous two kernel-side
patches. The first implements a way of displaying the current progress
of any running balance process. The second patch allows a running
balance to be cancelled.
I'm a bit uncertain about the best name for these commands. Several
options:
1)
# btrfs filesystem progress <path>
# btrfs filesystem cancel <path>
Way too vague (cancel *what*?)
2)
# btrfs filesystem balance-progress <path>
# btrfs filesystem balance-cancel <path>
Clashes horribly with "filesystem balance" -- no abbreviations
possible.
3)
btrfs filesystem balance -p <path>
btrfs filesystem balance -c <path>
Changes behaviour significantly on a switch, in contrast to the
behaviour of the rest of the btrfs tool.
4)
btrfs balance progress <path>
btrfs balance cancel <path>
My current favourite, although we introduce a new namespace
("balance") for commands. We could add "btrfs balance start <path>" as
a synonym for "btrfs filesystem balance <path>", for some degree of
consistency.
At some point, I'll add a "monitor" function, which will poll at 1s
intervals for progress updates, and print out progress when it changes.
Hugo.
--
=== Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
--- "No! My collection of rare, incurable diseases! Violated!" ---
^ permalink raw reply [flat|nested] 5+ messages in thread
* [patch 1/2] Balance progress monitoring.
2010-10-30 0:10 [patch 0/2] Control filesystem balances (userspace) Hugo Mills
@ 2010-10-30 0:10 ` Hugo Mills
2010-10-30 0:10 ` [patch 2/2] User-space tool for cancelling balance operations Hugo Mills
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Hugo Mills @ 2010-10-30 0:10 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Add support to the btrfs tool for monitoring a balance operation on a
filesystem.
Signed-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs.c | 4 ++++
btrfs_cmds.c | 40 ++++++++++++++++++++++++++++++++++++++++
btrfs_cmds.h | 1 +
ioctl.h | 7 +++++++
4 files changed, 52 insertions(+)
Index: btrfs-progs-unstable/btrfs.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs.c 2010-10-28 22:58:54.805035975 +0100
+++ btrfs-progs-unstable/btrfs.c 2010-10-30 00:19:59.968416575 +0100
@@ -95,6 +95,10 @@
"filesystem balance", "<path>\n"
"Balance the chunks across the device."
},
+ { do_balance_progress, 1,
+ "balance progress", "<path>\n"
+ "Show progress of the balance operation running on <path>."
+ },
{ do_scan,
999, "device scan", "[<device> [<device>..]\n"
"Scan all device for or the passed device for a btrfs\n"
Index: btrfs-progs-unstable/btrfs_cmds.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-28 22:58:54.855033936 +0100
+++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-30 00:04:48.335524683 +0100
@@ -808,6 +808,46 @@
}
return 0;
}
+
+int do_balance_progress(int argc, char **argv)
+{
+ char *path = argv[1];
+ int fdmnt;
+ int ret = 0;
+ int err = 0;
+ struct btrfs_ioctl_balance_progress bal;
+
+ fdmnt = open_file_or_dir(path);
+ if(fdmnt < 0) {
+ fprintf(stderr, "ERROR: can't access '%s'\n", path);
+ return 12;
+ }
+
+ ret = ioctl(fdmnt, BTRFS_IOC_BALANCE_PROGRESS, &bal);
+ if(!ret)
+ err = errno;
+ close(fdmnt);
+
+ switch(err) {
+ case 0:
+ break;
+ case -EINVAL:
+ fprintf(stderr, "No balance operation running on '%s'.\n",
+ path);
+ return 20;
+ default:
+ fprintf(stderr, "ERROR: ioctl returned error %d.", err);
+ return 21;
+ }
+
+ printf("%llu/%llu block groups moved, %0.2f%% complete.\n",
+ bal.completed,
+ bal.expected,
+ (float)bal.completed/bal.expected*100.0);
+
+ return 0;
+}
+
int do_remove_volume(int nargs, char **args)
{
Index: btrfs-progs-unstable/btrfs_cmds.h
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.h 2010-10-28 22:58:54.895032304 +0100
+++ btrfs-progs-unstable/btrfs_cmds.h 2010-10-30 00:04:48.335524683 +0100
@@ -23,6 +23,7 @@
int do_show_filesystem(int nargs, char **argv);
int do_add_volume(int nargs, char **args);
int do_balance(int nargs, char **argv);
+int do_balance_progress(int nargs, char **argv);
int do_remove_volume(int nargs, char **args);
int do_scan(int nargs, char **argv);
int do_resize(int nargs, char **argv);
Index: btrfs-progs-unstable/ioctl.h
===================================================================
--- btrfs-progs-unstable.orig/ioctl.h 2010-10-28 23:14:16.937413446 +0100
+++ btrfs-progs-unstable/ioctl.h 2010-10-30 00:04:48.325525089 +0100
@@ -132,6 +132,11 @@
struct btrfs_ioctl_space_info spaces[0];
};
+struct btrfs_ioctl_balance_progress {
+ __u64 expected;
+ __u64 completed;
+};
+
#define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, \
struct btrfs_ioctl_vol_args)
#define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, \
@@ -169,4 +174,6 @@
#define BTRFS_IOC_DEFAULT_SUBVOL _IOW(BTRFS_IOCTL_MAGIC, 19, u64)
#define BTRFS_IOC_SPACE_INFO _IOWR(BTRFS_IOCTL_MAGIC, 20, \
struct btrfs_ioctl_space_args)
+#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 21, \
+ struct btrfs_ioctl_balance_progress)
#endif
^ permalink raw reply [flat|nested] 5+ messages in thread
* [patch 2/2] User-space tool for cancelling balance operations.
2010-10-30 0:10 [patch 0/2] Control filesystem balances (userspace) Hugo Mills
2010-10-30 0:10 ` [patch 1/2] Balance progress monitoring Hugo Mills
@ 2010-10-30 0:10 ` Hugo Mills
2010-10-30 0:30 ` [patch 0/2] Control filesystem balances (userspace) Jérôme Poulin
2010-10-30 17:49 ` Goffredo Baroncelli
3 siblings, 0 replies; 5+ messages in thread
From: Hugo Mills @ 2010-10-30 0:10 UTC (permalink / raw)
To: linux-btrfs; +Cc: Hugo Mills
Add an option to the btrfs tool to use the ioctl for cancelling
balance operations.
SIgned-off-by: Hugo Mills <hugo@carfax.org.uk>
---
btrfs.c | 4 ++++
btrfs_cmds.c | 41 +++++++++++++++++++++++++++++++++++++++++
btrfs_cmds.h | 1 +
ioctl.h | 1 +
4 files changed, 47 insertions(+)
Index: btrfs-progs-unstable/btrfs.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs.c 2010-10-30 00:19:59.968416575 +0100
+++ btrfs-progs-unstable/btrfs.c 2010-10-30 00:20:38.446849736 +0100
@@ -99,6 +99,10 @@
"balance progress", "<path>\n"
"Show progress of the balance operation running on <path>."
},
+ { do_balance_cancel, 1,
+ "balance cancel", "<path>\n"
+ "Cancel the balance operation running on <path>."
+ },
{ do_scan,
999, "device scan", "[<device> [<device>..]\n"
"Scan all device for or the passed device for a btrfs\n"
Index: btrfs-progs-unstable/btrfs_cmds.c
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.c 2010-10-30 00:04:48.335524683 +0100
+++ btrfs-progs-unstable/btrfs_cmds.c 2010-10-30 00:20:22.267508562 +0100
@@ -848,6 +848,47 @@
return 0;
}
+int do_balance_cancel(int nargs, char **argv)
+{
+ char *path = argv[1];
+ int fdmnt;
+ int ret = 0;
+ int err = 0;
+
+ fdmnt = open_file_or_dir(path);
+ if(fdmnt < 0) {
+ fprintf(stderr, "ERROR: can't access '%s'\n", path);
+ return 12;
+ }
+
+ ret = ioctl(fdmnt, BTRFS_IOC_BALANCE_CANCEL, NULL);
+ err = errno;
+
+ if(ret) {
+ switch(err) {
+ case 0:
+ break;
+ case EINVAL:
+ fprintf(stderr, "ERROR: no balance in progress.\n");
+ err = 20;
+ break;
+ case ECANCELED:
+ fprintf(stderr, "ERROR: operation already cancelled.\n");
+ err = 21;
+ break;
+ default:
+ fprintf(stderr, "ERROR: ioctl returned error '%d'.\n",
+ err);
+ err = 22;
+ break;
+ }
+ }
+
+ close(fdmnt);
+
+ return err;
+}
+
int do_remove_volume(int nargs, char **args)
{
Index: btrfs-progs-unstable/btrfs_cmds.h
===================================================================
--- btrfs-progs-unstable.orig/btrfs_cmds.h 2010-10-30 00:04:48.335524683 +0100
+++ btrfs-progs-unstable/btrfs_cmds.h 2010-10-30 00:20:22.307506934 +0100
@@ -24,6 +24,7 @@
int do_add_volume(int nargs, char **args);
int do_balance(int nargs, char **argv);
int do_balance_progress(int nargs, char **argv);
+int do_balance_cancel(int nargs, char **argv);
int do_remove_volume(int nargs, char **args);
int do_scan(int nargs, char **argv);
int do_resize(int nargs, char **argv);
Index: btrfs-progs-unstable/ioctl.h
===================================================================
--- btrfs-progs-unstable.orig/ioctl.h 2010-10-30 00:04:48.325525089 +0100
+++ btrfs-progs-unstable/ioctl.h 2010-10-30 00:20:22.357504895 +0100
@@ -176,4 +176,5 @@
struct btrfs_ioctl_space_args)
#define BTRFS_IOC_BALANCE_PROGRESS _IOR(BTRFS_IOCTL_MAGIC, 21, \
struct btrfs_ioctl_balance_progress)
+#define BTRFS_IOC_BALANCE_CANCEL _IO(BTRFS_IOCTL_MAGIC, 22)
#endif
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch 0/2] Control filesystem balances (userspace)
2010-10-30 0:10 [patch 0/2] Control filesystem balances (userspace) Hugo Mills
2010-10-30 0:10 ` [patch 1/2] Balance progress monitoring Hugo Mills
2010-10-30 0:10 ` [patch 2/2] User-space tool for cancelling balance operations Hugo Mills
@ 2010-10-30 0:30 ` Jérôme Poulin
2010-10-30 17:49 ` Goffredo Baroncelli
3 siblings, 0 replies; 5+ messages in thread
From: Jérôme Poulin @ 2010-10-30 0:30 UTC (permalink / raw)
To: Hugo Mills; +Cc: linux-btrfs
You could always use btrfs filesystem balance progress which would not
introduce a new root level option and still be short to type. That
would mean balance should have a "start" option or default to start
when no sub options are used.
Sent from my mobile device.
On 2010-10-29, at 20:11, Hugo Mills <hugo@carfax.org.uk> wrote:
> These two patches complement the previous two kernel-side
> patches. The first implements a way of displaying the current progress
> of any running balance process. The second patch allows a running
> balance to be cancelled.
>
> I'm a bit uncertain about the best name for these commands. Several
> options:
>
> 1)
> # btrfs filesystem progress <path>
> # btrfs filesystem cancel <path>
>
> Way too vague (cancel *what*?)
>
>
> 2)
> # btrfs filesystem balance-progress <path>
> # btrfs filesystem balance-cancel <path>
>
> Clashes horribly with "filesystem balance" -- no abbreviations
> possible.
>
>
> 3)
> btrfs filesystem balance -p <path>
> btrfs filesystem balance -c <path>
>
> Changes behaviour significantly on a switch, in contrast to the
> behaviour of the rest of the btrfs tool.
>
>
> 4)
> btrfs balance progress <path>
> btrfs balance cancel <path>
>
> My current favourite, although we introduce a new namespace
> ("balance") for commands. We could add "btrfs balance start <path>" as
> a synonym for "btrfs filesystem balance <path>", for some degree of
> consistency.
>
> At some point, I'll add a "monitor" function, which will poll at 1s
> intervals for progress updates, and print out progress when it changes.
>
> Hugo.
>
> --
> === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
> PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
> --- "No! My collection of rare, incurable diseases! Violated!" ---
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [patch 0/2] Control filesystem balances (userspace)
2010-10-30 0:10 [patch 0/2] Control filesystem balances (userspace) Hugo Mills
` (2 preceding siblings ...)
2010-10-30 0:30 ` [patch 0/2] Control filesystem balances (userspace) Jérôme Poulin
@ 2010-10-30 17:49 ` Goffredo Baroncelli
3 siblings, 0 replies; 5+ messages in thread
From: Goffredo Baroncelli @ 2010-10-30 17:49 UTC (permalink / raw)
To: linux-btrfs
On Saturday, 30 October, 2010, Hugo Mills wrote:
> These two patches complement the previous two kernel-side
> patches. The first implements a way of displaying the current progress
> of any running balance process. The second patch allows a running
> balance to be cancelled.
>
> I'm a bit uncertain about the best name for these commands. Several
> options:
>
[...]
>
> 4)
> btrfs balance progress <path>
> btrfs balance cancel <path>
>
> My current favourite, although we introduce a new namespace
> ("balance") for commands. We could add "btrfs balance start <path>" as
> a synonym for "btrfs filesystem balance <path>", for some degree of
> consistency.
I like this.
Regards
G.Baroncelli
>
> At some point, I'll add a "monitor" function, which will poll at 1s
> intervals for progress updates, and print out progress when it changes.
>
> Hugo.
>
> --
> === Hugo Mills: hugo@... carfax.org.uk | darksatanic.net | lug.org.uk ===
> PGP key: 515C238D from wwwkeys.eu.pgp.net or http://www.carfax.org.uk
> --- "No! My collection of rare, incurable diseases! Violated!" ---
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
--
gpg key@ keyserver.linux.it: Goffredo Baroncelli (ghigo) <kreijack@inwind.it>
Key fingerprint = 4769 7E51 5293 D36C 814E C054 BF04 F161 3DC5 0512
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-10-30 17:49 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-30 0:10 [patch 0/2] Control filesystem balances (userspace) Hugo Mills
2010-10-30 0:10 ` [patch 1/2] Balance progress monitoring Hugo Mills
2010-10-30 0:10 ` [patch 2/2] User-space tool for cancelling balance operations Hugo Mills
2010-10-30 0:30 ` [patch 0/2] Control filesystem balances (userspace) Jérôme Poulin
2010-10-30 17:49 ` Goffredo Baroncelli
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).