[dm-devel] [PATCH] kpartx: print "loop deleted" to stdout, not stderr

Julian Andres Klode julian.klode at canonical.com
Mon Feb 5 14:17:20 UTC 2018


On Mon, Feb 05, 2018 at 03:12:33PM +0100, Julian Andres Klode wrote:
> On Mon, Feb 05, 2018 at 02:58:46PM +0100, Martin Wilck wrote:
> > On Mon, 2018-02-05 at 11:36 +0100, Julian Andres Klode wrote:
> > > Commit fa643f5d2590028a59c671b81ab41383806fd258 moved some
> > > code around and changed the print for loop deleted from stdout
> > > to stderr - but this is not an error message, and also printed
> > > to stdout in another place, so let's just use printf() again
> > > here.
> > > 
> > > Signed-off-by: Julian Andres Klode <julian.klode at canonical.com>
> > > ---
> > >  kpartx/kpartx.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/kpartx/kpartx.c b/kpartx/kpartx.c
> > > index c1af1c5e..2e882721 100644
> > > --- a/kpartx/kpartx.c
> > > +++ b/kpartx/kpartx.c
> > > @@ -399,7 +399,7 @@ main(int argc, char **argv){
> > >  					       loopdev);
> > >  				r = 1;
> > >  			} else
> > > -				fprintf(stderr, "loop deleted :
> > > %s\n", loopdev);
> > > +				printf("loop deleted : %s\n",
> > > loopdev);
> > >  		}
> > >  		goto end;
> > >  	}
> > 
> > 
> > Hm. This is a log message, and as such, should go to stderr. kpartx, as
> > a program primarily intended to run in udev rules, shouldn't print log
> > messages to stdout unless we have compelling reasons for it to do so.
> > 
> > I'm aware that this isn't done consistently in kpartx at the moment,
> > but IMO your patch goes in the wrong direction.
> 
> It seems very consistent for me: stderr is used for errors and warnings,
> and printf() for the rest. There are two exceptions: This one, and
> 
> kpartx/devmapper.c:             fprintf(stderr, "found map %s for uuid %s, renaming to %s\n",
> 
> But that one really is what I'd consider a log message. Stuff like
> "del devmap" and "loop deleted" seem somehow different - you tell
> it to delete a mapping, and to be verbose, and then it should tell
> you what it deleted, on stdout. Maybe people are parsing this, who
> knows? It definitely broke our tests because unexpected stderr output
> appeared.
> 

In fact, if you look at the bug mentioned in the previous patch,

https://bugs.launchpad.net/ubuntu/+source/multipath-tools/+bug/1747044

you'll see that we explicitly check the output of kpartx -v -d for
"loop deleted" apparently because kpartx was (or is?) flaky and returned
an error even when it successfully deleted the loop device, as seen in

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860894

It seems reasonable that Debian and Ubuntu are not the only ones
relying on that output.

-- 
debian developer - deb.li/jak | jak-linux.org - free software dev
ubuntu core developer                              i speak de, en




More information about the dm-devel mailing list