From 030490a80697a864564a73c2a02119ab0fbfbb33 Mon Sep 17 00:00:00 2001 From: Alexander Dines Date: Wed, 13 Aug 2025 13:37:09 -0700 Subject: [PATCH] cp dines --- src/main.cpp | 99 ++++++++++------------------------------------------ 1 file changed, 19 insertions(+), 80 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index acb60d57..f79eba79 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -121,16 +121,11 @@ ssize_t sure(SureIODelegate io, const struct iovec *iov, int iovcnt, off_t offse } void cmd_handler(struct tcmu_device *dev, struct tcmulib_cmd *cmd) { - auto tracer = overlaybd_otel::get_tracer("overlaybd"); - auto span = tracer->StartSpan("cmd_handler"); - auto scope = tracer->WithActiveSpan(span); - + obd_dev *odev = (obd_dev *)tcmu_dev_get_private(dev); ImageFile *file = odev->file; size_t ret = -1; size_t length; - - span->SetAttribute("command", cmd->cdb[0]); switch (cmd->cdb[0]) { case INQUIRY: @@ -173,28 +168,17 @@ void cmd_handler(struct tcmu_device *dev, struct tcmulib_cmd *cmd) { case READ_10: case READ_12: case READ_16: { - auto read_span = tracer->StartSpan("read_operation"); - auto read_scope = tracer->WithActiveSpan(read_span); - + length = tcmu_iovec_length(cmd->iovec, cmd->iov_cnt); off_t offset = tcmu_cdb_to_byte(dev, cmd->cdb); - - read_span->SetAttribute("operation", "read"); - read_span->SetAttribute("length", length); - read_span->SetAttribute("offset", offset); - + ret = sure({file, &ImageFile::preadv}, cmd->iovec, cmd->iov_cnt, offset); - - read_span->SetAttribute("result_length", ret); - read_span->SetAttribute("success", ret == length); - + if (ret == length) { tcmulib_command_complete(dev, cmd, TCMU_STS_OK); } else { - read_span->SetAttribute("error", "read_error"); tcmulib_command_complete(dev, cmd, TCMU_STS_RD_ERR); } - read_span->End(); break; } @@ -202,56 +186,34 @@ void cmd_handler(struct tcmu_device *dev, struct tcmulib_cmd *cmd) { case WRITE_10: case WRITE_12: case WRITE_16: { - auto write_span = tracer->StartSpan("write_operation"); - auto write_scope = tracer->WithActiveSpan(write_span); - + length = tcmu_iovec_length(cmd->iovec, cmd->iov_cnt); off_t offset = tcmu_cdb_to_byte(dev, cmd->cdb); - - write_span->SetAttribute("operation", "write"); - write_span->SetAttribute("length", length); - write_span->SetAttribute("offset", offset); - + ret = file->pwritev(cmd->iovec, cmd->iov_cnt, offset); - - write_span->SetAttribute("result_length", ret); - write_span->SetAttribute("success", ret == length); - + if (ret == length) { tcmulib_command_complete(dev, cmd, TCMU_STS_OK); } else { if (errno == EROFS) { - write_span->SetAttribute("error", "read_only_filesystem"); tcmulib_command_complete(dev, cmd, TCMU_STS_WR_ERR_INCOMPAT_FRMT); } else { - write_span->SetAttribute("error", "write_error"); - write_span->SetAttribute("errno", errno); tcmulib_command_complete(dev, cmd, TCMU_STS_WR_ERR); } } - write_span->End(); break; } case SYNCHRONIZE_CACHE: case SYNCHRONIZE_CACHE_16: { - auto sync_span = tracer->StartSpan("sync_operation"); - auto sync_scope = tracer->WithActiveSpan(sync_span); - - sync_span->SetAttribute("operation", "sync"); - + ret = file->fdatasync(); - - sync_span->SetAttribute("success", ret == 0); - + if (ret == 0) { tcmulib_command_complete(dev, cmd, TCMU_STS_OK); } else { - sync_span->SetAttribute("error", "sync_error"); - sync_span->SetAttribute("errno", errno); tcmulib_command_complete(dev, cmd, TCMU_STS_WR_ERR); } - sync_span->End(); break; } @@ -278,13 +240,11 @@ void cmd_handler(struct tcmu_device *dev, struct tcmulib_cmd *cmd) { default: LOG_ERROR("unknown command `", cmd->cdb[0]); - span->SetAttribute("error", "unknown_command"); + tcmulib_command_complete(dev, cmd, TCMU_STS_NOT_HANDLED); break; } - span->End(); - // call tcmulib_processing_complete(dev) if needed ++odev->aio_pending_wakeups; int wake_up = (odev->aio_pending_wakeups == 1) ? 1 : 0; @@ -369,18 +329,10 @@ static char *tcmu_get_path(struct tcmu_device *dev) { } static int dev_open(struct tcmu_device *dev) { - auto tracer = overlaybd_otel::get_tracer("overlaybd"); - auto span = tracer->StartSpan("dev_open"); - auto scope = tracer->WithActiveSpan(span); - char *config = tcmu_get_path(dev); LOG_INFO("dev open `", config); - - span->SetAttribute("config_path", config ? config : "null"); - + if (!config) { - span->SetAttribute("error", "no_config_path"); - span->End(); LOG_ERROR_RETURN(0, -EPERM, "get image config path failed"); } @@ -389,8 +341,6 @@ static int dev_open(struct tcmu_device *dev) { ImageFile *file = imgservice->create_image_file(config); if (file == nullptr) { - span->SetAttribute("error", "create_image_file_failed"); - span->End(); LOG_ERROR_RETURN(0, -EPERM, "create image file failed"); } @@ -433,23 +383,15 @@ static int dev_open(struct tcmu_device *dev) { uint64_t elapsed = 1000000UL * (end.tv_sec - start.tv_sec) + end.tv_usec - start.tv_usec; LOG_INFO("dev opened `, time cost ` ms", config, elapsed / 1000); - - span->SetAttribute("elapsed_ms", elapsed / 1000); - span->SetAttribute("success", true); - span->End(); - + return 0; } static int close_cnt = 0; static void dev_close(struct tcmu_device *dev) { - auto tracer = overlaybd_otel::get_tracer("overlaybd"); - auto span = tracer->StartSpan("dev_close"); - auto scope = tracer->WithActiveSpan(span); - + char *config = tcmu_get_path(dev); - span->SetAttribute("config_path", config ? config : "null"); - + obd_dev *odev = (obd_dev *)tcmu_dev_get_private(dev); if (imgservice->global_conf.enableThread()) { odev->end.signal(1); @@ -463,17 +405,14 @@ static void dev_close(struct tcmu_device *dev) { delete odev->file; delete odev; LOG_INFO("dev closed `", tcmu_get_path(dev)); - + close_cnt++; - span->SetAttribute("close_count", close_cnt); - + if (close_cnt == 500) { malloc_trim(128 * 1024); close_cnt = 0; - span->SetAttribute("memory_trimmed", true); } - - span->End(); + return; } @@ -487,7 +426,7 @@ void sigint_handler(int signal = SIGINT) { int main(int argc, char **argv) { overlaybd_otel::InitTracer(); - + mallopt(M_TRIM_THRESHOLD, 128 * 1024); prctl(PR_SET_THP_DISABLE, 1); @@ -578,7 +517,7 @@ int main(int argc, char **argv) { LOG_INFO("tcmulib closed"); delete imgservice; - + overlaybd_otel::CleanupTracer(); return 0; }