All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Conrad <mconrad@intellitree.com>
To: Karel Zak <kzak@redhat.com>
Cc: "Ted Ts'o" <tytso@mit.edu>, util-linux@vger.kernel.org
Subject: Re: blkid -o value
Date: Wed, 28 Mar 2012 17:03:21 -0400	[thread overview]
Message-ID: <4F737C99.6050500@intellitree.com> (raw)
In-Reply-To: <20120328090038.GB2045@x2.net.home>

[-- Attachment #1: Type: text/plain, Size: 1786 bytes --]

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!



[-- Attachment #2: blkid.patch --]
[-- Type: text/plain, Size: 1510 bytes --]

>From 0415f6dcb3c5636a69499b0accdd0e2fae9ac0c3 Mon Sep 17 00:00:00 2001
From: Michael Conrad <mconrad@intellitree.com>
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


  reply	other threads:[~2012-03-28 21:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-27 17:26 blkid -o value Michael Conrad
2012-03-27 17:31 ` Ted Ts'o
2012-03-27 17:52   ` Michael Conrad
2012-03-27 18:43     ` Ted Ts'o
2012-03-28  9:00       ` Karel Zak
2012-03-28 21:03         ` Michael Conrad [this message]
2012-03-28  7:34 ` Karel Zak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F737C99.6050500@intellitree.com \
    --to=mconrad@intellitree.com \
    --cc=kzak@redhat.com \
    --cc=tytso@mit.edu \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.