Merge pull request #19647 from ddstreet/test-oomd-failure

handle lack of kernel support for some cgroup files
This commit is contained in:
Lennart Poettering
2021-05-21 16:35:16 +02:00
committed by GitHub
5 changed files with 55 additions and 10 deletions
+3 -3
View File
@@ -371,8 +371,6 @@ int read_virtual_file(const char *filename, size_t max_size, char **ret_contents
int n_retries;
bool truncated = false;
assert(ret_contents);
/* Virtual filesystems such as sysfs or procfs use kernfs, and kernfs can work with two sorts of
* virtual files. One sort uses "seq_file", and the results of the first read are buffered for the
* second read. The other sort uses "raw" reads which always go direct to the device. In the latter
@@ -486,7 +484,9 @@ int read_virtual_file(const char *filename, size_t max_size, char **ret_contents
return -EBADMSG;
buf[n] = 0;
*ret_contents = TAKE_PTR(buf);
if (ret_contents)
*ret_contents = TAKE_PTR(buf);
return !truncated;
}
+23
View File
@@ -236,6 +236,29 @@ int log_emergency_level(void);
#define log_error_errno(error, ...) log_full_errno(LOG_ERR, error, __VA_ARGS__)
#define log_emergency_errno(error, ...) log_full_errno(log_emergency_level(), error, __VA_ARGS__)
/* This logs at the specified level the first time it is called, and then
* logs at debug. If the specified level is debug, this logs only the first
* time it is called. */
#define log_once(level, ...) \
({ \
if (ONCE) \
log_full(level, __VA_ARGS__); \
else if (LOG_PRI(level) != LOG_DEBUG) \
log_debug(__VA_ARGS__); \
})
#define log_once_errno(level, error, ...) \
({ \
int _err = (error); \
if (ONCE) \
_err = log_full_errno(level, _err, __VA_ARGS__); \
else if (LOG_PRI(level) != LOG_DEBUG) \
_err = log_debug_errno(_err, __VA_ARGS__); \
else \
_err = -ERRNO_VALUE(_err); \
_err; \
})
#if LOG_TRACE
# define log_trace(...) log_debug(__VA_ARGS__)
#else