nbd-server claims oldstyle exports not configured

Bug #1342949 reported by Brian Candler
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
nbd (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

[ubuntu 14.04]

Given the following config file:

---- /etc/nbd-server/config ----
[generic]
# If you want to run everything as root rather than the nbd user, you
# may either say "root" in the two following lines, or remove them
# altogether. Do not remove the [generic] section, however.
 user = nbd
 group = nbd
 includedir = /etc/nbd-server/conf.d
 listenaddr = 10.10.0.241
 oldstyle = true

# What follows are export definitions. You may create as much of them as
# you want, but the section header has to be unique.
[disk1]
        exportname = /data/nbd/disk1.img
        flush = true
        fua = true
        port = 20001
------------

When you restart nbd-server the following severe-sounding warning is reported:

------------
# service nbd-server restart
Restarting the Network Block Device server is pretty harsh on clients still using it.
waiting 5 seconds...You have been warned!
Restarting Network Block Device server: Stopping Network Block Device server: nbd-server.

** (process:19655): WARNING **: A port was specified, but oldstyle exports were not requested. This may not do what you expect.

** (process:19655): WARNING **: Please read 'man 5 nbd-server' and search for oldstyle for more info
 nbd-server.
------------

However very clearly "oldstyle = true" has been set in the config. This config is definitely being read, because setting "oldstyle = blah" gives an error about invalid boolean.

Looking at source: it seems that glob_flags is not updated until after parse_cfile has returned:

        servers = parse_cfile(config_file_pos, &genconf, &err);

        /* Update global variables with parsed values. This will be
         * removed once we get rid of global configuration variables. */
        glob_flags |= genconf.flags;

However this warning comes from within parse_cfile and based on the previous glob_flags setting.

                if(s.port && !(glob_flags & F_OLDSTYLE)) {
                        g_warning("A port was specified, but oldstyle exports were not requested. This may not do what you expect.");
                        g_warning("Please read 'man 5 nbd-server' and search for oldstyle for more info");
                }

And a process *is* running and listening on port 20001.

ProblemType: Bug
DistroRelease: Ubuntu 14.04
Package: nbd-server 1:3.7-1
ProcVersionSignature: Ubuntu 3.13.0-30.55-generic 3.13.11.2
Uname: Linux 3.13.0-30-generic x86_64
ApportVersion: 2.14.1-0ubuntu3.2
Architecture: amd64
Date: Wed Jul 16 20:34:44 2014
InstallationDate: Installed on 2014-07-16 (0 days ago)
InstallationMedia: Ubuntu-Server 14.04 LTS "Trusty Tahr" - Release amd64 (20140416.2)
ProcEnviron:
 LANGUAGE=en_GB:en
 TERM=xterm
 PATH=(custom, no user)
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SourcePackage: nbd
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
Brian Candler (b-candler) wrote :
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in nbd (Ubuntu):
status: New → Confirmed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.