Dmitry V. Levin [Fri, 27 May 2016 00:40:10 +0000 (00:40 +0000)]
evdev.c: reorder ioctl command checks
Change the order of ioctl command cheks to match the kernel:
1st, check for fixed-number fixed-length commands,
2nd, check for fixed-number variable-length commands,
3rd, check for multi-number fixed-length commands,
4thm check for multi-number variable-length commands.
Jeff Mahoney [Fri, 27 May 2016 20:07:22 +0000 (16:07 -0400)]
file_ioctl.c: print first two extents for FIDEDUPERANGE in abbrev mode
* file_ioctl.c (file_ioctl, print_file_dedupe_range_info): Print first
two elements of info array in abbrev mode.
* tests/btrfs.c (btrfs_test_extent_same_ioctl): Handle newly
printed elements.
Dmitry V. Levin [Thu, 26 May 2016 00:37:26 +0000 (00:37 +0000)]
Move parser of 'X' type ioctls to a separate file
* fs_x_ioctl.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* block.c: (block_ioctl): Move parser of FITRIM, FIFREEZE, and FITHAW
to fs_x_ioctl.c.
* defs.h (fs_x_ioctl): New prototype.
* ioctl.c (ioctl_decode): Call fs_x_ioctl for ioctl type 'X'.
Dmitry V. Levin [Thu, 26 May 2016 00:07:17 +0000 (00:07 +0000)]
Move parser of HDIO_* ioctls to a separate file
* hdio.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* block.c: Do not include <linux/hdreg.h>.
(block_ioctl): Move parser of HDIO_GETGEO to hdio.c.
* defs.h (hdio_ioctl): New prototype.
* ioctl.c (ioctl_decode): Call hdio_ioctl for ioctl type 0x03.
Dmitry V. Levin [Tue, 24 May 2016 02:40:13 +0000 (02:40 +0000)]
btrfs.c: fix build on systems without BTRFS_IOC_FILE_EXTENT_SAME
* btrfs.c (btrfs_ioctl): Skip BTRFS_IOC_FILE_EXTENT_SAME case
if this constant is not defined.
* tests/btrfs.c (btrfs_test_extent_same_ioctl): Skip this part
of the test if BTRFS_IOC_FILE_EXTENT_SAME is not defined.
Dmitry V. Levin [Tue, 24 May 2016 02:07:47 +0000 (02:07 +0000)]
tests/btrfs.c: tweak magic constants to make the test more reliable
* tests/btrfs.c (btrfs_test_sync_ioctls): Change u64val
to 0xdeadbeefbadc0ded.
(btrfs_test_subvol_ioctls): Likewise. Change bad_pointer
to make their lower 32-bit parts closer to -1U.
Dmitry V. Levin [Tue, 24 May 2016 01:32:09 +0000 (01:32 +0000)]
tests/btrfs.c: fix build on systems without <linux/btrfs.h> or <linux/fiemap.h>
* tests/btrfs.c: Include "tests.h" first.
Skip the test if [!HAVE_LINUX_BTRFS_H]. Skip parts of the test
that use struct fiemap if [!HAVE_LINUX_FIEMAP_H].
Dmitry V. Levin [Tue, 24 May 2016 01:15:18 +0000 (01:15 +0000)]
btrfs.c: use print_array
* btrfs.c (print_btrfs_data_container_logical_ino,
print_btrfs_data_container_ino_path, print_uint64,
print_btrfs_ioctl_search_header, print_objectid_callback,
print_btrfs_ioctl_space_info): New functions.
(btrfs_print_logical_ino_container, btrfs_print_ino_path_container):
Rewrite printers of struct btrfs_data_container.val array
using print_array.
(btrfs_print_qgroup_inherit): Rewrite printer of
struct btrfs_qgroup_inherit.qgroups array using print_array.
(btrfs_print_tree_search): Rewrite printer of
struct btrfs_ioctl_search_header array using print_array.
(btrfs_ioctl): Rewrite printer of
struct btrfs_ioctl_send_args.clone_sources and
struct btrfs_ioctl_space_args.spaces using print_array.
Dmitry V. Levin [Tue, 24 May 2016 00:56:08 +0000 (00:56 +0000)]
btrfs.c: mark some function arguments as const
* btrfs.c (btrfs_print_balance_args, btrfs_print_features,
btrfs_print_qgroup_limit, btrfs_print_data_container_header,
btrfs_print_logical_ino_container, btrfs_print_ino_path_container,
btrfs_print_qgroup_inherit): Mark some function arguments as const.
Dmitry V. Levin [Tue, 24 May 2016 00:19:17 +0000 (00:19 +0000)]
file_ioctl.c: fix build on systems without <linux/fiemap.h>
* configure.ac (AC_CHECK_HEADERS): Add linux/fiemap.h.
* file_ioctl.c: Do not include <linux/fiemap.h> and xlat/fiemap_*.h
if [!HAVE_LINUX_FIEMAP_H].
(file_ioctl): Do not parse FS_IOC_FIEMAP if [!HAVE_LINUX_FIEMAP_H].
Jeff Mahoney [Wed, 18 May 2016 22:09:40 +0000 (18:09 -0400)]
ioctl: add decoding for FS_IOC_FIEMAP
* file_ioctl.c: Include <linux/fiemap.h>, "xlat/fiemap_flags.h",
and "xlat/fiemap_extent_flags.h".
(file_ioctl): Handle FS_IOC_FIEMAP.
* ioctl.c (ioctl_decode): Use file_ioctl for decoding 'f' code ioctls.
Dmitry V. Levin [Tue, 24 May 2016 11:10:22 +0000 (11:10 +0000)]
tests/attach-f-p.c: sleep a bit more to let the tracer catch up
On noticeably lagging systems, the parent process may invoke its chdir
call before the tracer gets notified about completion of its last child
process. Add extra sleep in the parent process to win the race.
* tests/attach-f-p.c (main): Change timerid into a static array.
Arm a timer in the parent process and wait for it.
Dmitry V. Levin [Mon, 23 May 2016 10:26:46 +0000 (10:26 +0000)]
tests/net-yy-netlink.c: robustify against libc specific issues
* tests/net-yy-netlink.c (main): Use getsockname instead of recvmsg
as the latter has notible implementation differences that make
the test unreliable.
Dmitry V. Levin [Mon, 23 May 2016 10:12:48 +0000 (10:12 +0000)]
tests/net-yy-{inet,netlink}.test: cleanup
* tests/net-yy-inet.test: Do not pass arguments to net-yy-inet
as the latter does not accept them.
* tests/net-yy-netlink.test: Do not pass arguments to net-yy-netlink
as the latter does not accept them.
Dmitry V. Levin [Sun, 22 May 2016 22:29:33 +0000 (22:29 +0000)]
tests: remove manual creation of memory mapping holes
We used to call tail_alloc(1) to create memory mapping holes around
regular tail_alloc allocations. This is no longer needed since regular
tail_alloc allocations create additional memory mapping holes.
Dmitry V. Levin [Sat, 21 May 2016 22:53:06 +0000 (22:53 +0000)]
mpers: add support of conditionally compiled printers
We used to declare and define all printers marked with
MPERS_PRINTER_DECL, including ifdef'ed ones. That approach left us
no way to conditionally compile mpersified printers, which was not
a problem until btrfs ioctls appeared on the horizon.
With this change, those mpersified printers that are not going
to be compiled are also won't be declared and won't be added to
struct_printers.
This is implemented by filtering all source files containing
MPERS_PRINTER_DECL markers through CPP. As a nice side effect, this
also lifts an ugly requirement of writing all MPERS_PRINTER_DECL
declarations in a single line.
* README-mpers: Update description of MPERS_PRINTER_DECL syntax.
* defs.h [IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into
a recursive variadic macro.
[!IN_MPERS_BOOTSTRAP] (MPERS_PRINTER_DECL): Turn into a variadic macro.
All callers changed.
* Makefile.am (mpers_preproc_files, mpers_printer_decl_pattern):
New variables.
(CLEANFILES): Add $(mpers_preproc_files).
(%.c.mpers.i): New rule.
(printers.h, %_printer_decls.h, %_printer_defs.h): Use
mpers_preproc_files instead of srcdir_mpers_source_files,
use mpers_printer_decl_pattern.
* .gitignore: Add /*.mpers.i.
Fabien Siron [Tue, 17 May 2016 10:08:47 +0000 (10:08 +0000)]
Add netlink domain sockets support to socketutils
* linux/netlink_diag.h: New file.
* Makefile.am (EXTRA_DIST): Add it.
* socketutils.c: Include it and "xlat/netlink_protocols.h".
(netlink_send_query, netlink_parse_response, netlink_print): New
functions.
(print_sockaddr_by_inode): Hook up netlink_print.
Dmitry V. Levin [Wed, 18 May 2016 09:21:54 +0000 (09:21 +0000)]
tests/pread64-pwrite64.c: robustify against os specific issues
Do not assume that pwrite64 syscall fails when only part of the
specified memory buffer is accessible. With some kernels, one
accessible byte at the end of page is enough for pwrite64 syscall
to return 1.
* tests/pread64-pwrite64.c (main): Tweak the test that can lead
to a partial write.
Dmitry V. Levin [Wed, 18 May 2016 09:14:12 +0000 (09:14 +0000)]
tests/read-write.c: robustify against os specific issues
Do not assume that write syscall fails when only part of the specified
memory buffer is accessible. With some kernels, one accessible byte
at the end of page is enough for write syscall to return 1.
* tests/read-write.c (main): Tweak the test that can lead to a partial
write.
Dmitry V. Levin [Tue, 17 May 2016 17:17:13 +0000 (20:17 +0300)]
Fix some compilation warnings on older systems
* print_statfs.c (print_statfs_flags): Define only
for [HAVE_STRUCT_STATFS_F_FLAGS || HAVE_STRUCT_STATFS64_F_FLAGS].
* tests/inet-cmsg.c (print_origdstaddr): Define only
for [IP_ORIGDSTADDR].