History log of /freebsd-10-stable/lib/libnv/msgio.c
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 292973 31-Dec-2015 ngie

MFC nv(3) and part of nv(9) to stable/10

This includes the following revisions from head:

r258065,r258594,r259430,r260222,r261407,r261408,r263479,r264021,r266351,
r269603,r271026,r271027,r271028,r271241,r271578,r271579,r271847,r272102,
r272843,r273752,r277920,r277921,r277925,r277926,r277927,r279421,r279422,
r279423,r279424,r279425,r279426,r279427,r279428,r279429,r279430,r279431,
r279432,r279434,r279435,r279436,r279438,r279439,r279440,r279760,r282122,
r282254,r282257,r282304,r282312,r285339,r288340

This change reverts stable/10@r282122 and stable/10@r288340, and re-MFCs the
series again (r282122, r285339, and r288340).

More changes are pending to nv(9)/pci(4) after further review/work. Please see
the Phabricator review for more details (both https://reviews.freebsd.org/D4232
and https://reviews.freebsd.org/D4249 ).

- Tested with:
-- Booting VMware Fusion 8.1.0 running on a Haswell Apple Macbook Pro
-- Booting a Haswell machine with zfs and running some stress workloads with
VirtualBox guests
-- make tinderbox
-- kyua test -k /usr/tests/lib/libnv

Differential Revision: https://reviews.freebsd.org/D4249 (part of a larger diff)
Relnotes: yes
Reviewed by: oshogbo (implicit), sbruno (implicit)
Submitted by: Kevin Bowling <kevin.bowling@kev009.com>
Sponsored by: EMC / Isilon Storage Division

# 292632 22-Dec-2015 ngie

MFC r271578,r271579,r271847,r272102,r272843,r273752,r277920,r277921,r277925,r277926,r277927,r279421,r279422,r279423:

r271578 (by pjd):

Remove the limit on descriptors that can be send in one nvlist.

Submitted by: Mariusz Zaborski

r271579 (by pjd):

Use non-recursive algorithm for traversing nvlists. This also removes
the limit on number of nested nvlists.

Submitted by: Mariusz Zaborski

r271847 (by pjd):

Don't use nvl in case of a failure.

Reported by: Coverity
CID: 1238922

r272102 (by pjd):

Document the new nvlist_get_parent() function.

Submitted by: Mariusz Zaborski

r272843 (by pjd):

Fix problem on big endian systems introduced in r271579 - when we were
returning from handling a nested nvlist we were resetting big-endian flag.

Reported by: Kuleshov Aleksey @ yandex.ru
Tested by: Kuleshov Aleksey @ yandex.ru

r273752 (by jmg):

fix typo, properly install a link to nv for nvlist_freev...

r277920 (by pjd):

If moving descriptor or binary data to an nvlist fails, we need to close the
descriptor or free the memory before returning.

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

While here, protect errno, so it won't be overwritted by close(2) or free(3).

r277921 (by pjd):

Modify nvlist_get_parent() API to take additional cookie argument.
This allow for non-recursive iteration over nested nvlists, as in documented
example.

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r277925 (by pjd):

Handle empty nvlists correctly.

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r277926 (by pjd):

Add missing nvlist_get_parent(3) link.

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r277927 (by pjd):

Make gcc happy.

Reported by: bz

r279421 (by rstone):

Make libnv headers includable from C++

Differential Revision: https://reviews.freebsd.org/D1868
Reviewed by: jfv, pjd
Sponsored by: Sandvine Inc.

r279422 (by rstone):

Tests of basic nvlist add functions

Differential Revision: https://reviews.freebsd.org/D1869
Reviewed by: jfv, pjd
Sponsored by: Sandvine Inc.

r279423 (by rstone):

Revert r279422. My "apply patch and commit" script wasn't adding
new files properly.

Pointy hat to: rstone


# 292631 22-Dec-2015 ngie

MFC r258065,r258594,r259430,r260222,r261407,r261408,r263479,r264021,r266351,r269603:

r258065 (by pjd):

Bring in libnv library for managing name/value pairs. The following types
are currently supported:

- NV_TYPE_NULL - only name, no data;
- NV_TYPE_BOOL - boolean (true or false);
- NV_TYPE_NUMBER - 64bit unsigned integer;
- NV_TYPE_STRING - C string;
- NV_TYPE_NVLIST - nested nvlist;
- NV_TYPE_DESCRIPTOR - file descriptor;
- NV_TYPE_BINARY - binary data.

For detailed documentation and examples see nv(3) manual page.

Sponsored by: The FreeBSD Foundation

r258594 (by pjd):

Fix double free().

Reported by: Coverity
Coverity CID: 1130048

r259430 (by pjd):

MFp4 @1189139:

Get rid of the msg_peek() function, which has a problem. If there was less
data in the socket buffer than requested by the caller, the function would busy
loop, as select(2) will always return immediately.

We can just receive nvlhdr now, because some time ago we splitted receive of
data from the receive of descriptors.

r260222 (by pjd):

MFp4 @1189711:

Fix resource leaks on nvlist_destroy().

Reported by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r261407 (by pjd):

Fix sending empty nvlist.

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r261408 (by pjd):

Assert input arguments to buf_send() and buf_recv().

Submitted by: Mariusz Zaborski <oshogbo@FreeBSD.org>

r263479 (by bdrewery):

nv(3) was not in 10.0.

It might be MFC'd to stable/10 for 10.1, but for now update the manual to
avoid confusion on its availability.

Discussed with: pjd

r264021 (by jilles):

libnv: Don't lose big-endian flag when receiving a message.

A bug caused the "big endian" flag to be lost when receiving a message. As a
result, the bits are interpreted as little endian and an extremely large
allocation is attempted.

This change fixes ping(8)'s communication to casperd(8) on big-endian
architectures.

Reported by: Anton Shterenlikht
Tested by: danfe

r266351 (by rstone):

Correct a typo.

r269603:

Integrate lib/libnv into the build/kyua

Rename all of the TAP test applications from <test> to <test>_test
to match the convention described in the TestSuite wiki page

Phabric: D538
Approved by: jmmv (mentor)
Sponsored by: EMC / Isilon Storage Division


# 258065 12-Nov-2013 pjd

Bring in libnv library for managing name/value pairs. The following types
are currently supported:

- NV_TYPE_NULL - only name, no data;
- NV_TYPE_BOOL - boolean (true or false);
- NV_TYPE_NUMBER - 64bit unsigned integer;
- NV_TYPE_STRING - C string;
- NV_TYPE_NVLIST - nested nvlist;
- NV_TYPE_DESCRIPTOR - file descriptor;
- NV_TYPE_BINARY - binary data.

For detailed documentation and examples see nv(3) manual page.

Sponsored by: The FreeBSD Foundation