summaryrefslogtreecommitdiff
path: root/src/basic
AgeCommit message (Collapse)Author
2016-03-17Merge pull request #2839 from keszybz/use-sendfile-smarterDaniel Mack
Use sendfile smarter
2016-03-17basic/missing: move syscall definitions to basic/missing_syscall.hZbigniew Jędrzejewski-Szmek
We have a bunch of syscall wrapper definitions and it's easier to see that they follow the same pattern if they are not interspersed with other defines. Change the wrappers to be uniform: - if __NR_XXX is not defined, do not bother to call the syscall, and return -1/ENOSYS immediately. - do not check __NR_XXX defines if we detect the symbol as defined, since we don't need them anyway - reindent stuff for readability New file basic/missing_syscall.h is included at the end of missing.h because it might make use of some of the definitions in missing.h.
2016-03-17basic/copy: use copy_file_range()Zbigniew Jędrzejewski-Szmek
For btrfs, c_f_r() is like BTRFS_IOC_CLONE which we already used, but also works when max_bytes is set. We do call copy_bytes in coredump code with max_bytes set, and for large files, so we might see some benefit from using c_f_r() on btrfs. For other filesystems, c_f_r() falls back to do_splice_direct(), the same as sendfile, which we already call, so there shouldn't be much difference. Tested with test-copy and systemd-coredump on Linux 4.3 (w/o c_f_r) and 4.5 (w/ c_f_r).
2016-03-17basic/missing: add copy_file_rangeZbigniew Jędrzejewski-Szmek
syscall numbers based on: https://fedora.juszkiewicz.com.pl/syscalls.html
2016-03-17Merge pull request #2848 from keszybz/clang-warningsDaniel Mack
Clang warnings
2016-03-16Merge pull request #2797 from evverx/selinux-use-rawZbigniew Jędrzejewski-Szmek
selinux: use *_raw API from libselinux
2016-03-15basic/log: remove unused return valueZbigniew Jędrzejewski-Szmek
2016-03-15basic/c-rbtree: remove unused functionZbigniew Jędrzejewski-Szmek
2016-03-15basic/macros: clang 3.5 doesn't support alloc_sizeZbigniew Jędrzejewski-Szmek
The attribute was removed in commit c047507 in the clang repository as it was never properly implemented anyway. Avoid using the attribute with clang because it generates a ton of annoying warnings.
2016-03-15basic/copy: use sendfile smarterZbigniew Jędrzejewski-Szmek
We called sendfile with 16kb (a.k.a. COPY_BUFFER_SIZE) as the maximum number of bytes to copy. This seems rather inefficient, especially with large files. Instead, call sendfile with a "large" maximum. What "large" max means is a bit tricky: current file offset + max must fit in loff_t. This means that as we call sendfile more than once, we have to lower the max size. With this patch, test-copy calls sendfile twice, e.g.: sendfile(4, 3, NULL, 9223372036854775807) = 738760 sendfile(4, 3, NULL, 9223372036854037047) = 0 The second call is necessary to determine EOF.
2016-03-15time-util: fall back to CLOCK_MONOTONIC if CLOCK_BOOTTIME unsupportedLubomir Rintel
It was added in 2.6.39, and causes an assertion to fail when running in mock hosted on 2.6.23-based RHEL-6: Assertion 'clock_gettime(map_clock_id(clock_id), &ts) == 0' failed at systemd/src/basic/time-util.c:70, function now(). Aborting.
2016-03-14include sys/sysmacros.h in more placesMike Frysinger
Since glibc is moving away from implicitly including sys/sysmacros.h all the time via sys/types.h, include the header directly in more places. This seems to cover most makedev/major/minor usage.
2016-03-10socket_address_listen: do not rely on errno (2)Zbigniew Jędrzejewski-Szmek
We'd still use the invalid errno for a return value. Rework the code to simply return the right error right away.
2016-03-10socket_address_listen - do not rely on errnoPetr Lautrbach
Currently socket_address_listen() calls mac_selinux_bind() to bind a UNIX socket and checks its return value and errno for EADDRINUSE. This is not correct. When there's an SELinux context change made for the new socket, bind() is not the last function called in mac_selinux_bind(). In that case the last call is setfscreatecon() from libselinux which can change errno as it uses access() to check if /proc/thread-self is available. It fails on kernels before 3.17 and errno is set to ENOENT. It's safe to check only the return value at it's set to -errno.
2016-03-04selinux: use *_raw API from libselinuxEvgeny Vereshchagin
This is a follow-up to 5c5433ad32
2016-03-03Merge pull request #2781 from keszybz/selinux-and-warningsLennart Poettering
Selinux loading fix and warning cleanups
2016-03-02Redefine 32bit time_t format to signedZbigniew Jędrzejewski-Szmek
It seems that it is signed both on i386 and arm. Avoids a stupid gcc warning on arm: src/udev/udevadm-monitor.c: In function ‘print_device’: src/udev/udevadm-monitor.c:44:16: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘__time_t {aka long int}’ [-Wformat=] printf("%-6s[%"PRI_TIME".%06ld] %-8s %s (%s)\n", ^
2016-03-02selinux: use raw variants of security_compute_create and setfscreateconZbigniew Jędrzejewski-Szmek
As suggested by Evgeny Vereshchagin as a follow up for https://github.com/systemd/systemd/pull/2781#issuecomment-191043402.
2016-03-01selinux: always try to load the full selinux dbZbigniew Jędrzejewski-Szmek
https://github.com/systemd/systemd/pull/2508#issuecomment-190901170 Maybe fixes https://bugzilla.redhat.com/show_bug.cgi?id=1308771.
2016-03-02tree-wide: no need to pass excess flags to open()/openat() if O_PATH is passedAlexander Kuleshov
As described in the documentation: When O_PATH is specified in flags, flag bits other than O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW are ignored. So, we can remove unnecessary flags in a case when O_PATH is passed to the open() or openat().
2016-02-29Merge pull request #2702 from poettering/resolved-iterate-fixZbigniew Jędrzejewski-Szmek
resolved iteration fix
2016-02-29Merge pull request #2763 from tblume/shorten-hostname-before-removing-dotsLennart Poettering
shorten hostname before checking for trailing dot
2016-02-29Merge pull request #2756 from thom311/masterLennart Poettering
core: avoid compiler warning when compiling with -fexceptions
2016-02-29shorten hostname before checking for trailing dotThomas Blume
Shortening can lead to a hostname that has a trailing dot. Therefore it should be done before checking from trailing dots.
2016-02-27core: avoid compiler warning when compiling with -fexceptionsThomas Haller
Initialize auto variables with cleanup attribute, otherwise we get a compiler warning with -fexceptions. ./configure CFLAGS='-Wmaybe-uninitialized -fexceptions -O2'
2016-02-26clock-util: be more tolerant in parsing /etc/adjtimeMartin Pitt
As we default to "hardware clock is in UTC" if /etc/adjtime is not present, it also makes sense to have that default if /etc/adjtime contains only one or two lines. Drop the "gibberish" test case, as this was just EIO because of not containing three lines, which is already contained in other tests. clock_is_localtime() never actually validated the format of the first two lines, and there is little point in doing that. This addresses the reading half of issue #2638.
2016-02-26clock-util: make clock_is_localtime() testable and add initial testsMartin Pitt
Add path argument to clock_is_localtime() and default to "/etc/adjtime" if it's NULL. This makes the function testable. Add test-clock: initial test cases for some scenarios, using a temporary file. This also checks the behaviour with a NULL (i. e. the system's /etc/adjtime) file.
2016-02-24treewide: fix typos and then/that useTorstein Husebø
2016-02-23Merge pull request #2724 from vcaputo/minor-formatting-cleanupsZbigniew Jędrzejewski-Szmek
tree-wide: minor formatting inconsistency cleanups
2016-02-23tree-wide: minor formatting inconsistency cleanupsVito Caputo
2016-02-23Merge pull request #2639 from nafets227/masterZbigniew Jędrzejewski-Szmek
Bugfix set virt=none when running on XEN Dom0
2016-02-23basic: Bugfix Detect XEN Dom0 as no virtualizationStefan Schallenberg aka nafets227
When running in XEN Dom0 the virtualization check: 1) detect_xen returns HYPERVISOR_NONE so next checks are executed 2) /proc/sys/hypervisor detects a XEN hypervisor it is lacking the special Dom0 detection as in detect_xen With this patch, at the end of all virtualization checks we double-check if running in XEN Dom0 or DomU.
2016-02-23basic: Debug-logging of Virtualisation detectionStefan Schallenberg aka nafets227
print out every single detection executed and its result.
2016-02-23basic: mark unused variable as suchThomas Hindoe Paaboel Andersen
2016-02-23Merge pull request #2664 from zonque/bootchart-removalLennart Poettering
Remove systemd-bootchart
2016-02-23Merge pull request #2717 from keszybz/networkctl-prettificationLennart Poettering
Networkctl prettification
2016-02-23basic: simplify ether_addr_is_nullZbigniew Jędrzejewski-Szmek
2016-02-23Fix two typosZbigniew Jędrzejewski-Szmek
2016-02-23architecture.h: remove PROC_CPUINFO_MODELDaniel Mack
This was only needed for bootchart, so it can go now.
2016-02-23Merge pull request #2709 from vcaputo/normalize_inc_dec_usageMartin Pitt
tree-wide: make ++/-- usage consistent WRT spacing
2016-02-22tree-wide: make ++/-- usage consistent WRT spacingVito Caputo
Throughout the tree there's spurious use of spaces separating ++ and -- operators from their respective operands. Make ++ and -- operator consistent with the majority of existing uses; discard the spaces.
2016-02-22resolved: fix notification iteration logic when transactions are completedLennart Poettering
When a transaction is complete, and we notify its owners, make sure we deal correctly with the requesters removing themselves from the list of owners while we continue iterating. This was previously already dealt with with transactions that require other transactions for DNSSEC purposes, fix this for other possibly transaction owners too now. Since iterating through "Set" objects is not safe regarding removal of entries from it, rework the logic to use two Sets, and move each entry we notified from one set to the other set before we dispatch the notification. This move operation requires no additional memory, and enables us to ensure that we don't notify any object twice. Fixes: #2676
2016-02-22hashmap: use void* and uint8_t* for generic pointersLennart Poettering
As suggested by CODING_STYLE we should use "void*" as type for generic memory, and uint8_t* for generic bytes. Hence use that instead of "char*", which should really be used only for strings these days.
2016-02-22util-lib: simplify personality() string matchingLennart Poettering
2016-02-22virt: make sure we don't ignore some errorsLennart Poettering
2016-02-22util-lib: support various ppc archs in personality logicLennart Poettering
2016-02-22util-lib: use the architecture ids from architecture.h for personalitiesLennart Poettering
We have this ids, hence let's use them universally.
2016-02-22build-sys: move shared/architecture.[ch] into basic/Lennart Poettering
After all, it is pretty generic, has no external deps besides libc, and is very similar to virt.[ch] which is also in basic/
2016-02-22Merge pull request #2685 from poettering/lldp-fixes2Tom Gundersen
lldp fixes, second iteration
2016-02-22Merge pull request #2695 from mustrumr/fix-calendarspec-skipLennart Poettering
calendarspec: fix find_next skipping times