Re: blkid -o value

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 03/28/2012 05:00 AM, Karel Zak wrote:
> On Tue, Mar 27, 2012 at 11:43:45AM -0700, Ted Ts'o wrote:
>> On Tue, Mar 27, 2012 at 01:52:51PM -0400, Michael Conrad wrote:
>>> I see how that could be useful if and only if you use exactly one
>>> "-s", but if you requested more than one "-s" they still come out in
>>> non-stable order.  It's like running a SQL query and having all the
>>> columns shifted because the first one was a NULL.  
>> Actually, it's more like running an SQL query without a SORTED BY and
>> assuming the order of the rows was stable.
Only if the data weren't in any normal form.  I say it's like columns
getting shifted because if you ask for 2 values you expect the field
offset to imply the type of the data.  If one field is NULL, the rows
shift upward, resulting in a value interpreted as the wrong type.

This is why I'm saying the "-o values" is only usable if you use exactly
one "-s", because any other scenario means every value returned has an
indeterminate type, which is garbage data.  IMO a tool should never
output garbage.  It should prevent or warn about illegitimate usage. 
Since the tool has been out there and in use for quite a while, I would
suggest a warning.

(patch attached)

>>> At the very least, I would appreciate it if the man page mentioned
>>> that "-o value" should only ever be used with exactly one "-s".
>> What I would suggest is that blkid explicitly state that the order of
>> fields or file systems (if more than one file system is selected) is
>> not defined, since that's something which is true in general, and not
>> just for "-o value".
>>
>> It might also be useful to have an EXAMPLES section which gives some
>> sample ways that blkid can be used.
>  Good idea. I'll update the man page.
>
>     Karel

Thanks!


>From 0415f6dcb3c5636a69499b0accdd0e2fae9ac0c3 Mon Sep 17 00:00:00 2001
From: Michael Conrad <mconrad@xxxxxxxxxxxxxxx>
Date: Wed, 28 Mar 2012 16:51:12 -0400
Subject: [PATCH] blkid: added warning about unstable output for '-o values'

 * A warning is now emitted when using 'values' without requesting
   a single tag.

 * Updated man page to describe the reason behind it.
---
 misc-utils/blkid.8 |    3 ++-
 misc-utils/blkid.c |    3 +++
 2 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/misc-utils/blkid.8 b/misc-utils/blkid.8
index 6bde6bc..f6175b2 100644
--- a/misc-utils/blkid.8
+++ b/misc-utils/blkid.8
@@ -152,7 +152,8 @@ parameter may be:
 print all tags (the default)
 .TP
 .B value
-print the value of the tags
+print the value of the tags.  The tag order is variable, so you should only
+use this format when selecting a single tag for a single device. (see '-s')
 .TP
 .B list
 print the devices in a user-friendly format; this output format is unsupported
diff --git a/misc-utils/blkid.c b/misc-utils/blkid.c
index 1e8073e..4e5b338 100644
--- a/misc-utils/blkid.c
+++ b/misc-utils/blkid.c
@@ -829,6 +829,9 @@ int main(int argc, char **argv)
 		print_version(stdout);
 		goto exit;
 	}
+	
+	if (output_format == OUTPUT_VALUE_ONLY && numtag != 1)
+		fprintf(stderr, "Warning: '-o value' should only be used when requesting a single tag ('-s')\n");
 
 	/* convert LABEL/UUID lookup to evaluate request */
 	if (lookup && output_format == OUTPUT_DEVICE_ONLY && search_type &&
-- 
1.7.1


[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux