[PATCH] NEW API: add blkid command to print the attributes of the device
A NEW API blkid. It can print the device attributes. Use it after list-devices, we can list ower devices and the attributes of each device. Use it like: blkid <device> It's should be a usefull function, and needed no test case for it. Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> --- daemon/blkid.c | 75 ++++++++++++++++++++++++++++++++++++++++ generator/generator_actions.ml | 73 ++++++++++++++++++++++++++++++++++++++ src/MAX_PROC_NR | 2 +- 3 files changed, 149 insertions(+), 1 deletions(-) diff --git a/daemon/blkid.c b/daemon/blkid.c index 6d395c1..a7fd6bc 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -83,3 +83,78 @@ do_vfs_uuid (const char *device) { return get_blkid_tag (device, "UUID"); } + +char ** +do_blkid(const char *device) +{ + int r; + char *out = NULL, *err = NULL; + char **lines = NULL; + + char **ret = NULL; + int size = 0, alloc = 0; + + const char *blkid[] = {"blkid", "-p", "-i", "-o", "export", device, NULL}; + r = commandv(&out, &err, blkid); + if (r == -1) { + reply_with_error("%s", err); + goto error; + } + + /* Split the command output into lines */ + lines = split_lines(out); + if (lines == NULL) { + reply_with_perror("malloc"); + goto error; + } + + /* Parse the output of blkid -p -i -o export: + * UUID=b6d83437-c6b4-4bf0-8381-ef3fc3578590 + * VERSION=1.0 + * TYPE=ext2 + * USAGE=filesystem + * MINIMUM_IO_SIZE=512 + * PHYSICAL_SECTOR_SIZE=512 + * LOGICAL_SECTOR_SIZE=512 + * PART_ENTRY_SCHEME=dos + * PART_ENTRY_TYPE=0x83 + * PART_ENTRY_NUMBER=6 + * PART_ENTRY_OFFSET=642875153 + * PART_ENTRY_SIZE=104857600 + * PART_ENTRY_DISK=8:0 + */ + for (char **i = lines; *i != NULL; i++) { + char *line = *i; + + /* Skip blank lines (shouldn't happen) */ + if (line[0] == '\0') continue; + + /* Split the line in 2 at the equals sign */ + char *eq = strchr(line, '='); + if (eq) { + *eq = '\0'; eq++; + + /* Add the key/value pair to the output */ + if (add_string(&ret, &size, &alloc, line) == -1 || + add_string(&ret, &size, &alloc, eq) == -1) goto error; + } else { + fprintf(stderr, "blkid: unexpected blkid output ignored: %s", line); + } + } + + free(out); + free(err); + free(lines); + + if (add_string(&ret, &size, &alloc, NULL) == -1) return NULL; + + return ret; + +error: + free(out); + free(err); + if (lines) free(lines); + if (ret) free_strings(ret); + + return NULL; +} diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index 0e39e2f..d624f9b 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -6538,6 +6538,79 @@ The name of the MD device. This command deactivates the MD array named C<md>. The device is stopped, but it is not destroyed or zeroed."); + ("blkid", (RHashtable "info", [Device "device"], []), 303, [], + [], + "print block device attributes", + "\ +This command exposes the output of 'blkid -p -i -o export <device>'. The following +fields are usually present in the returned hash. Other fields may also be present. + +C<device> should be a block device or patition, for example C</dev/sda> or C</dev/sdb1>. + +=over + +=item C<UUID> + +The uuid of this device. + +=item C<UUID_SUB> + +The sub uuid of this device. + +=item C<LABEL> + +The label of this device. + +=item C<VERSION> + +The version of blkid command. + +=item C<TYPE> + +The filesystem type or RAID of this device. + +=item C<USAGE> + +The usage of this device, for example C<filesystem> or C<raid>. + +=item C<MINIMUM_IO_SIZE> + +The minimum io size of this device. + +=item C<PHYSICAL_SECTOR_SIZE> + +The pyhsical sector size of this device. + +=item C<LOGICAL_SECTOR_SIZE> + +The logical sector size of this device. + +=item C<PART_ENTRY_SCHEME> + +The scheme entry of this partition(only presented when it's a partition). + +=item C<PART_ENTRY_TYPE> + +The device type of this partition(only presented when it's a partition). + +=item C<PART_ENTRY_NUMBER> + +The partition number(only presented when it's a partition). + +=item C<PART_ENTRY_OFFSET> + +This partition's offset(only presented when it's a partition). + +=item C<PART_ENTRY_SIZE> + +The size of this partition(only presented when it's a partition). + +=item C<PART_ENTRY_DISK> + +The major:minor number of this partition(only presented when it's a partition). + +=back"); + ] let all_functions = non_daemon_functions @ daemon_functions diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR index 274f714..8160622 100644 --- a/src/MAX_PROC_NR +++ b/src/MAX_PROC_NR @@ -1 +1 @@ -302 +303 -- 1.7.8.rc4
On Sat, Dec 03, 2011 at 12:34:06PM +0800, Wanlong Gao wrote:
A NEW API blkid. It can print the device attributes. Use it after list-devices, we can list ower devices and the attributes of each device. Use it like: blkid <device> It's should be a usefull function, and needed no test case for it.
Yes, in principle. However it certainly _does_ need a test, in case the blkid command breaks or changes in future. Further comments on the patch below.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> --- daemon/blkid.c | 75 ++++++++++++++++++++++++++++++++++++++++ generator/generator_actions.ml | 73 ++++++++++++++++++++++++++++++++++++++ src/MAX_PROC_NR | 2 +- 3 files changed, 149 insertions(+), 1 deletions(-)
diff --git a/daemon/blkid.c b/daemon/blkid.c index 6d395c1..a7fd6bc 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -83,3 +83,78 @@ do_vfs_uuid (const char *device) { return get_blkid_tag (device, "UUID"); } + +char ** +do_blkid(const char *device) +{ + int r; + char *out = NULL, *err = NULL; + char **lines = NULL; + + char **ret = NULL; + int size = 0, alloc = 0; + + const char *blkid[] = {"blkid", "-p", "-i", "-o", "export", device, NULL}; + r = commandv(&out, &err, blkid); + if (r == -1) { + reply_with_error("%s", err); + goto error; + } + + /* Split the command output into lines */ + lines = split_lines(out); + if (lines == NULL) { + reply_with_perror("malloc"); + goto error; + } + + /* Parse the output of blkid -p -i -o export: + * UUID=b6d83437-c6b4-4bf0-8381-ef3fc3578590 + * VERSION=1.0 + * TYPE=ext2 + * USAGE=filesystem + * MINIMUM_IO_SIZE=512 + * PHYSICAL_SECTOR_SIZE=512 + * LOGICAL_SECTOR_SIZE=512 + * PART_ENTRY_SCHEME=dos + * PART_ENTRY_TYPE=0x83 + * PART_ENTRY_NUMBER=6 + * PART_ENTRY_OFFSET=642875153 + * PART_ENTRY_SIZE=104857600 + * PART_ENTRY_DISK=8:0 + */ + for (char **i = lines; *i != NULL; i++) { + char *line = *i; + + /* Skip blank lines (shouldn't happen) */ + if (line[0] == '\0') continue; + + /* Split the line in 2 at the equals sign */ + char *eq = strchr(line, '='); + if (eq) { + *eq = '\0'; eq++; + + /* Add the key/value pair to the output */ + if (add_string(&ret, &size, &alloc, line) == -1 || + add_string(&ret, &size, &alloc, eq) == -1) goto error; + } else { + fprintf(stderr, "blkid: unexpected blkid output ignored: %s", line); + } + } + + free(out); + free(err); + free(lines); + + if (add_string(&ret, &size, &alloc, NULL) == -1) return NULL; + + return ret; + +error: + free(out); + free(err); + if (lines) free(lines); + if (ret) free_strings(ret); + + return NULL; +} diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index 0e39e2f..d624f9b 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -6538,6 +6538,79 @@ The name of the MD device. This command deactivates the MD array named C<md>. The device is stopped, but it is not destroyed or zeroed.");
+ ("blkid", (RHashtable "info", [Device "device"], []), 303, [], + [], + "print block device attributes", + "\ +This command exposes the output of 'blkid -p -i -o export <device>'. The following
Don't describe how the command is implemented -- we may change the implementation in future. Be less specific, such as "This command returns block device attributes for C<device>". Also remember this is POD documentation, so you can't use "<" and ">" characters without escaping them.
+C<device> should be a block device or patition, for example C</dev/sda> or C</dev/sdb1>.
This example is unnecessary -- using Device ensures that users have to pass a device name here.
+=over + +=item C<UUID> + +The uuid of this device. + +=item C<UUID_SUB> + +The sub uuid of this device. + +=item C<LABEL> + +The label of this device. + +=item C<VERSION> + +The version of blkid command. + +=item C<TYPE> + +The filesystem type or RAID of this device. + +=item C<USAGE> + +The usage of this device, for example C<filesystem> or C<raid>. + +=item C<MINIMUM_IO_SIZE> + +The minimum io size of this device. + +=item C<PHYSICAL_SECTOR_SIZE> + +The pyhsical sector size of this device. + +=item C<LOGICAL_SECTOR_SIZE> + +The logical sector size of this device. + +=item C<PART_ENTRY_SCHEME> + +The scheme entry of this partition(only presented when it's a partition).
^^ Add a space. [...] How many of these fields does blkid define? Are they likely to change in future? If we promise that fields are returned then we have to stick to that promise in future because of libguestfs ABI commitments. It's better to promise fewer fields, and only ones that we could implement by hand if blkid disappeared in future. This also needs a test -- see "tune2fs" in generator/generator_actions.ml for an example using TestOutputHashtable. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top
On 12/03/2011 03:28 PM, Richard W.M. Jones wrote:
On Sat, Dec 03, 2011 at 12:34:06PM +0800, Wanlong Gao wrote:
A NEW API blkid. It can print the device attributes. Use it after list-devices, we can list ower devices and the attributes of each device. Use it like: blkid <device> It's should be a usefull function, and needed no test case for it.
Yes, in principle.
However it certainly _does_ need a test, in case the blkid command breaks or changes in future.
Further comments on the patch below.
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> --- daemon/blkid.c | 75 ++++++++++++++++++++++++++++++++++++++++ generator/generator_actions.ml | 73 ++++++++++++++++++++++++++++++++++++++ src/MAX_PROC_NR | 2 +- 3 files changed, 149 insertions(+), 1 deletions(-)
diff --git a/daemon/blkid.c b/daemon/blkid.c index 6d395c1..a7fd6bc 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -83,3 +83,78 @@ do_vfs_uuid (const char *device) { return get_blkid_tag (device, "UUID"); } + +char ** +do_blkid(const char *device) +{ + int r; + char *out = NULL, *err = NULL; + char **lines = NULL; + + char **ret = NULL; + int size = 0, alloc = 0; + + const char *blkid[] = {"blkid", "-p", "-i", "-o", "export", device, NULL}; + r = commandv(&out, &err, blkid); + if (r == -1) { + reply_with_error("%s", err); + goto error; + } + + /* Split the command output into lines */ + lines = split_lines(out); + if (lines == NULL) { + reply_with_perror("malloc"); + goto error; + } + + /* Parse the output of blkid -p -i -o export: + * UUID=b6d83437-c6b4-4bf0-8381-ef3fc3578590 + * VERSION=1.0 + * TYPE=ext2 + * USAGE=filesystem + * MINIMUM_IO_SIZE=512 + * PHYSICAL_SECTOR_SIZE=512 + * LOGICAL_SECTOR_SIZE=512 + * PART_ENTRY_SCHEME=dos + * PART_ENTRY_TYPE=0x83 + * PART_ENTRY_NUMBER=6 + * PART_ENTRY_OFFSET=642875153 + * PART_ENTRY_SIZE=104857600 + * PART_ENTRY_DISK=8:0 + */ + for (char **i = lines; *i != NULL; i++) { + char *line = *i; + + /* Skip blank lines (shouldn't happen) */ + if (line[0] == '\0') continue; + + /* Split the line in 2 at the equals sign */ + char *eq = strchr(line, '='); + if (eq) { + *eq = '\0'; eq++; + + /* Add the key/value pair to the output */ + if (add_string(&ret, &size, &alloc, line) == -1 || + add_string(&ret, &size, &alloc, eq) == -1) goto error; + } else { + fprintf(stderr, "blkid: unexpected blkid output ignored: %s", line); + } + } + + free(out); + free(err); + free(lines); + + if (add_string(&ret, &size, &alloc, NULL) == -1) return NULL; + + return ret; + +error: + free(out); + free(err); + if (lines) free(lines); + if (ret) free_strings(ret); + + return NULL; +} diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index 0e39e2f..d624f9b 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -6538,6 +6538,79 @@ The name of the MD device. This command deactivates the MD array named C<md>. The device is stopped, but it is not destroyed or zeroed.");
+ ("blkid", (RHashtable "info", [Device "device"], []), 303, [], + [], + "print block device attributes", + "\ +This command exposes the output of 'blkid -p -i -o export <device>'. The following
Don't describe how the command is implemented -- we may change the implementation in future. Be less specific, such as "This command returns block device attributes for C<device>". Also remember this is POD documentation, so you can't use "<" and ">" characters without escaping them.
got it.
+C<device> should be a block device or patition, for example C</dev/sda> or C</dev/sdb1>.
This example is unnecessary -- using Device ensures that users have to pass a device name here.
got it.
+=over + +=item C<UUID> + +The uuid of this device. + +=item C<UUID_SUB> + +The sub uuid of this device. + +=item C<LABEL> + +The label of this device. + +=item C<VERSION> + +The version of blkid command. + +=item C<TYPE> + +The filesystem type or RAID of this device. + +=item C<USAGE> + +The usage of this device, for example C<filesystem> or C<raid>. + +=item C<MINIMUM_IO_SIZE> + +The minimum io size of this device. + +=item C<PHYSICAL_SECTOR_SIZE> + +The pyhsical sector size of this device. + +=item C<LOGICAL_SECTOR_SIZE> + +The logical sector size of this device. + +=item C<PART_ENTRY_SCHEME> + +The scheme entry of this partition(only presented when it's a partition).
^^ Add a space.
got it. will fix.
[...]
How many of these fields does blkid define? Are they likely to change in future? If we promise that fields are returned then we have to stick to that promise in future because of libguestfs ABI commitments. It's better to promise fewer fields, and only ones that we could implement by hand if blkid disappeared in future.
will do.
This also needs a test -- see "tune2fs" in generator/generator_actions.ml for an example using TestOutputHashtable.
Yeah, will look into, thanks a lot.
Rich.
-Wanlong Gao
A NEW API blkid. It can print the device attributes. Use it after list-devices, we can list ower devices and the attributes of each device. Use it like: blkid <device> It's should be a usefull function. Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com> --- daemon/blkid.c | 75 ++++++++++++++++++++++++++++++++++++++++ generator/generator_actions.ml | 38 ++++++++++++++++++++ src/MAX_PROC_NR | 2 +- 3 files changed, 114 insertions(+), 1 deletions(-) diff --git a/daemon/blkid.c b/daemon/blkid.c index 6d395c1..a7fd6bc 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -83,3 +83,78 @@ do_vfs_uuid (const char *device) { return get_blkid_tag (device, "UUID"); } + +char ** +do_blkid(const char *device) +{ + int r; + char *out = NULL, *err = NULL; + char **lines = NULL; + + char **ret = NULL; + int size = 0, alloc = 0; + + const char *blkid[] = {"blkid", "-p", "-i", "-o", "export", device, NULL}; + r = commandv(&out, &err, blkid); + if (r == -1) { + reply_with_error("%s", err); + goto error; + } + + /* Split the command output into lines */ + lines = split_lines(out); + if (lines == NULL) { + reply_with_perror("malloc"); + goto error; + } + + /* Parse the output of blkid -p -i -o export: + * UUID=b6d83437-c6b4-4bf0-8381-ef3fc3578590 + * VERSION=1.0 + * TYPE=ext2 + * USAGE=filesystem + * MINIMUM_IO_SIZE=512 + * PHYSICAL_SECTOR_SIZE=512 + * LOGICAL_SECTOR_SIZE=512 + * PART_ENTRY_SCHEME=dos + * PART_ENTRY_TYPE=0x83 + * PART_ENTRY_NUMBER=6 + * PART_ENTRY_OFFSET=642875153 + * PART_ENTRY_SIZE=104857600 + * PART_ENTRY_DISK=8:0 + */ + for (char **i = lines; *i != NULL; i++) { + char *line = *i; + + /* Skip blank lines (shouldn't happen) */ + if (line[0] == '\0') continue; + + /* Split the line in 2 at the equals sign */ + char *eq = strchr(line, '='); + if (eq) { + *eq = '\0'; eq++; + + /* Add the key/value pair to the output */ + if (add_string(&ret, &size, &alloc, line) == -1 || + add_string(&ret, &size, &alloc, eq) == -1) goto error; + } else { + fprintf(stderr, "blkid: unexpected blkid output ignored: %s", line); + } + } + + free(out); + free(err); + free(lines); + + if (add_string(&ret, &size, &alloc, NULL) == -1) return NULL; + + return ret; + +error: + free(out); + free(err); + if (lines) free(lines); + if (ret) free_strings(ret); + + return NULL; +} diff --git a/generator/generator_actions.ml b/generator/generator_actions.ml index 0e39e2f..55e8d5d 100644 --- a/generator/generator_actions.ml +++ b/generator/generator_actions.ml @@ -6538,6 +6538,44 @@ The name of the MD device. This command deactivates the MD array named C<md>. The device is stopped, but it is not destroyed or zeroed."); + ("blkid", (RHashtable "info", [Device "device"], []), 303, [], + [InitScratchFS, Always, TestOutputHashtable ( + [["blkid"; "/dev/sdb1"]], + ["TYPE", "ext2"; + "USAGE", "filesystem"; + "PART_ENTRY_NUMBER", "1"; + "PART_ENTRY_TYPE", "0x83"; + "PART_ENTRY_OFFSET", "128"; + "PART_ENTRY_SIZE", "102145"])], + "print block device attributes", + "\ +This command returns block device attributes for C<device>. The following fields are +usually present in the returned hash. Other fields may also be present. + +=over + +=item C<UUID> + +The uuid of this device. + +=item C<LABEL> + +The label of this device. + +=item C<VERSION> + +The version of blkid command. + +=item C<TYPE> + +The filesystem type or RAID of this device. + +=item C<USAGE> + +The usage of this device, for example C<filesystem> or C<raid>. + +=back"); + ] let all_functions = non_daemon_functions @ daemon_functions diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR index 274f714..8160622 100644 --- a/src/MAX_PROC_NR +++ b/src/MAX_PROC_NR @@ -1 +1 @@ -302 +303 -- 1.7.8.rc4
ACKed and pushed, Thanks! Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
Hi Rich:
ACKed and pushed,
Thanks!
Rich.
I saw that you killed the '-p' option because RHEL5 didn't support this, I want to know that which version of blkid you use? or which util-linux? or which RHEL5 updated release? Because in my RHEL5.7GA, the '-i' option isn't supported, either. But does the '-i' option supported on RHEL5.8? I saw that the latest e2fsprogs also don't support the '-p' and '-i' options, So I'm considering add these options into e2fsprogs, is it needed? Thanks -Wanlong Gao
On Sun, Dec 04, 2011 at 11:18:37AM +0800, Wanlong Gao wrote:
Hi Rich:
ACKed and pushed,
Thanks!
Rich.
I saw that you killed the '-p' option because RHEL5 didn't support this, I want to know that which version of blkid you use? or which util-linux? or which RHEL5 updated release?
Because in my RHEL5.7GA, the '-i' option isn't supported, either.
Yup, you're right ... For '-p': '-c /dev/null' should be completely equivalent and it's what we use in the rest of daemon/blkid.c. Is there any other benefit to using '-p' instead of '-c /dev/null'? Obviously I didn't test this, which is why I didn't see that the '-i' option isn't supported on RHEL 5 ...
But does the '-i' option supported on RHEL5.8?
I'll need to add a test for it. It seems pretty straightforward just comparing the blkid --help output on RHEL 5: $ /sbin/blkid --help /sbin/blkid: invalid option -- - blkid 1.0.0 (12-Feb-2003) usage: blkid [-c <file>] [-ghl] [-o format] [-s <tag>] [-t <token>] [-v] [-w <file>] [dev ...] -c cache file (default: /etc/blkid/blkid.tab, /dev/null = none) -g garbage collect the blkid cache -h print this usage message and exit -s show specified tag(s) (default show all tags) -t find device with a specific token (NAME=value pair) -l lookup the the first device with arguments specified by -t -v print version and exit -w write cache to different file (/dev/null = no write) dev specify device(s) to probe (default: all devices) versus upstream: $ blkid --help blkid: invalid option -- '-' blkid from util-linux 2.20.1 (libblkid 2.20.0, 19-Oct-2011) Usage: [...] -p low-level superblocks probing (bypass cache) -i gather information about I/O limits It is sufficient to grep the blkid --help stderr for '-i'.
I saw that the latest e2fsprogs also don't support the '-p' and '-i' options, So I'm considering add these options into e2fsprogs, is it needed?
Which e2fsprogs program do you mean? Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones New in Fedora 11: Fedora Windows cross-compiler. Compile Windows programs, test, and build Windows installers. Over 70 libraries supprt'd http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw
On 12/04/2011 06:51 PM, Richard W.M. Jones wrote:
On Sun, Dec 04, 2011 at 11:18:37AM +0800, Wanlong Gao wrote:
Hi Rich:
ACKed and pushed,
Thanks!
Rich.
I saw that you killed the '-p' option because RHEL5 didn't support this, I want to know that which version of blkid you use? or which util-linux? or which RHEL5 updated release?
Because in my RHEL5.7GA, the '-i' option isn't supported, either.
Yup, you're right ...
For '-p': '-c /dev/null' should be completely equivalent and it's what we use in the rest of daemon/blkid.c. Is there any other benefit to using '-p' instead of '-c /dev/null'?
I think no, the '-p' option can also returns the info of 'partition table type (PTTYPE) and partitions (PART_*). although the cache func likes '-c'.
Obviously I didn't test this, which is why I didn't see that the '-i' option isn't supported on RHEL 5 ...
But does the '-i' option supported on RHEL5.8?
I'll need to add a test for it. It seems pretty straightforward just comparing the blkid --help output on RHEL 5:
$ /sbin/blkid --help /sbin/blkid: invalid option -- - blkid 1.0.0 (12-Feb-2003) usage: blkid [-c <file>] [-ghl] [-o format] [-s <tag>] [-t <token>] [-v] [-w <file>] [dev ...] -c cache file (default: /etc/blkid/blkid.tab, /dev/null = none) -g garbage collect the blkid cache -h print this usage message and exit -s show specified tag(s) (default show all tags) -t find device with a specific token (NAME=value pair) -l lookup the the first device with arguments specified by -t -v print version and exit -w write cache to different file (/dev/null = no write) dev specify device(s) to probe (default: all devices)
versus upstream:
$ blkid --help blkid: invalid option -- '-' blkid from util-linux 2.20.1 (libblkid 2.20.0, 19-Oct-2011) Usage: [...] -p low-level superblocks probing (bypass cache) -i gather information about I/O limits
It is sufficient to grep the blkid --help stderr for '-i'.
I saw that the latest e2fsprogs also don't support the '-p' and '-i' options, So I'm considering add these options into e2fsprogs, is it needed?
Which e2fsprogs program do you mean?
The *libblkid* and the command *blkid* (the interface of 'libblkid') is developed in e2fsprogs(which is the user tools of ext2/3/4fs), but it seems that the *libblkid* and command *blkid* is separated from the *e2fsprogs* project and go into the *util-linux* project with the supporting to others filesystems more well and adding a lot of features like *partitions* and so on, and the *-p* and *-i* options is supported. I think using the *-p* and *-i* options to return the low-level of device status is the very useful features, but it isn't supported on RHEL5, because the RHEL5 is too old for us. So, for the future of *libguestfs*, can we add something to separate these disto? For example we can remove the features like *-p* from RHEL5 but add it to RHEL6 or some fedora distos? Can we just FEATURE this distos? Or: remove the options like *-p* in *blkid* and so on or just split it from the *stable* release of *libguestfs*, but the I think the later is a patient thing. Is it time for us to consider for these things now?
Rich.
On Sun, Dec 04, 2011 at 07:45:07PM +0800, Wanlong Gao wrote:
So, for the future of *libguestfs*, can we add something to separate these disto? For example we can remove the features like *-p* from RHEL5 but add it to RHEL6 or some fedora distos?
I agree. To do this we need to detect at runtime if the -p and/or -i options are supported, and add them as appropriate. See for example: http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/parted.c;h=0d229484... http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/swap.c;h=51dbbe483f... Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top
On 12/04/2011 08:09 PM, Richard W.M. Jones wrote:
On Sun, Dec 04, 2011 at 07:45:07PM +0800, Wanlong Gao wrote:
So, for the future of *libguestfs*, can we add something to separate these disto? For example we can remove the features like *-p* from RHEL5 but add it to RHEL6 or some fedora distos?
I agree. To do this we need to detect at runtime if the -p and/or -i options are supported, and add them as appropriate. See for example:
http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/parted.c;h=0d229484... http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/swap.c;h=51dbbe483f...
Thank a lot Rich. I'll work out a patch and test it tomorrow. -Wanlong Gao
Rich.
On Sun, Dec 04, 2011 at 08:29:09PM +0800, Wanlong Gao wrote:
On 12/04/2011 08:09 PM, Richard W.M. Jones wrote:
On Sun, Dec 04, 2011 at 07:45:07PM +0800, Wanlong Gao wrote:
So, for the future of *libguestfs*, can we add something to separate these disto? For example we can remove the features like *-p* from RHEL5 but add it to RHEL6 or some fedora distos?
I agree. To do this we need to detect at runtime if the -p and/or -i options are supported, and add them as appropriate. See for example:
http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/parted.c;h=0d229484... http://git.annexia.org/?p=libguestfs.git;a=blob;f=daemon/swap.c;h=51dbbe483f...
Thank a lot Rich. I'll work out a patch and test it tomorrow.
Thanks ... BTW I have reverted both of my patches, so the code is now back to your original. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
participants (3)
-
Richard W.M. Jones -
Wanlong Gao -
Wanlong Gao