Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5b767e5f authored by Jaegeuk Kim's avatar Jaegeuk Kim Committed by android-build-merger
Browse files

Merge "logcatd: fallocate and fadvise to logcat files" am: cf4845b1

am: 29e4e979

Change-Id: Idbb1b1eaa7f3b2617d55a725c9a3459229d851e5
parents cf59a3e9 29e4e979
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@
#include <stdlib.h>
#include <string.h>
#include <sys/cdefs.h>
#include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/socket.h>
#include <sys/stat.h>
@@ -158,8 +159,22 @@ static void logcat_panic(android_logcat_context_internal* context,
                         enum helpType showHelp, const char* fmt, ...)
    __printflike(3, 4);

static int openLogFile(const char* pathname) {
    return open(pathname, O_WRONLY | O_APPEND | O_CREAT, S_IRUSR | S_IWUSR);
#ifndef F2FS_IOC_SET_PIN_FILE
#define F2FS_IOCTL_MAGIC       0xf5
#define F2FS_IOC_SET_PIN_FILE _IOW(F2FS_IOCTL_MAGIC, 13, __u32)
#endif

static int openLogFile(const char* pathname, size_t sizeKB) {
    int fd = open(pathname, O_WRONLY | O_APPEND | O_CREAT, S_IRUSR | S_IWUSR);
    if (fd < 0) {
        return fd;
    }

    // no need to check errors
    __u32 set = 1;
    ioctl(fd, F2FS_IOC_SET_PIN_FILE, &set);
    fallocate(fd, FALLOC_FL_KEEP_SIZE, 0, (sizeKB << 10));
    return fd;
}

static void close_output(android_logcat_context_internal* context) {
@@ -192,6 +207,7 @@ static void close_output(android_logcat_context_internal* context) {
            if (context->fds[1] == context->output_fd) {
                context->fds[1] = -1;
            }
            posix_fadvise(context->output_fd, 0, 0, POSIX_FADV_DONTNEED);
            close(context->output_fd);
        }
        context->output_fd = -1;
@@ -276,7 +292,7 @@ static void rotateLogs(android_logcat_context_internal* context) {
        }
    }

    context->output_fd = openLogFile(context->outputFileName);
    context->output_fd = openLogFile(context->outputFileName, context->logRotateSizeKBytes);

    if (context->output_fd < 0) {
        logcat_panic(context, HELP_FALSE, "couldn't open output file");
@@ -398,7 +414,7 @@ static void setupOutputAndSchedulingPolicy(

    close_output(context);

    context->output_fd = openLogFile(context->outputFileName);
    context->output_fd = openLogFile(context->outputFileName, context->logRotateSizeKBytes);

    if (context->output_fd < 0) {
        logcat_panic(context, HELP_FALSE, "couldn't open output file");
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ on property:logd.logpersistd.enable=false
    stop logcatd

# logcatd service
service logcatd /system/bin/logcatd -L -b ${logd.logpersistd.buffer:-all} -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r ${logd.logpersistd.rotate_kbytes:-1024} -n ${logd.logpersistd.size:-256} --id=${ro.build.id}
service logcatd /system/bin/logcatd -L -b ${logd.logpersistd.buffer:-all} -v threadtime -v usec -v printable -D -f /data/misc/logd/logcat -r ${logd.logpersistd.rotate_kbytes:-2048} -n ${logd.logpersistd.size:-256} --id=${ro.build.id}
    class late_start
    disabled
    # logd for write to /data/misc/logd, log group for read from log daemon