diff --git a/src/node_dir.cc b/src/node_dir.cc index bc86f828b184cb..fc3b2beac720ed 100644 --- a/src/node_dir.cc +++ b/src/node_dir.cc @@ -135,7 +135,9 @@ void DirHandle::MemoryInfo(MemoryTracker* tracker) const { inline void DirHandle::GCClose() { if (closed_) return; uv_fs_t req; + FS_DIR_SYNC_TRACE_BEGIN(closedir); int ret = uv_fs_closedir(nullptr, &req, dir_, nullptr); + FS_DIR_SYNC_TRACE_END(closedir); uv_fs_req_cleanup(&req); closing_ = false; closed_ = true; diff --git a/src/node_file.cc b/src/node_file.cc index 92274e934d995e..cdfcf5bac29c3a 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -302,7 +302,9 @@ FileHandle::TransferData::~TransferData() { if (fd_ > 0) { uv_fs_t close_req; CHECK_NE(fd_, -1); + FS_SYNC_TRACE_BEGIN(close); CHECK_EQ(0, uv_fs_close(nullptr, &close_req, fd_, nullptr)); + FS_SYNC_TRACE_END(close); uv_fs_req_cleanup(&close_req); } } @@ -327,7 +329,9 @@ inline void FileHandle::Close() { if (closed_ || closing_) return; uv_fs_t req; CHECK_NE(fd_, -1); + FS_SYNC_TRACE_BEGIN(close); int ret = uv_fs_close(env()->event_loop(), &req, fd_, nullptr); + FS_SYNC_TRACE_END(close); uv_fs_req_cleanup(&req); struct err_detail { int ret; int fd; }; @@ -460,7 +464,10 @@ MaybeLocal FileHandle::ClosePromise() { CloseReq* req = new CloseReq(env(), close_req_obj, promise, object()); auto AfterClose = uv_fs_callback_t{[](uv_fs_t* req) { - BaseObjectPtr close(CloseReq::from_req(req)); + CloseReq* req_wrap = CloseReq::from_req(req); + FS_ASYNC_TRACE_END1( + req->fs_type, req_wrap, "result", static_cast(req->result)) + BaseObjectPtr close(req_wrap); CHECK(close); close->file_handle()->AfterClose(); if (!close->env()->can_call_into_js()) return; @@ -474,6 +481,7 @@ MaybeLocal FileHandle::ClosePromise() { } }}; CHECK_NE(fd_, -1); + FS_ASYNC_TRACE_BEGIN0(UV_FS_CLOSE, req) int ret = req->Dispatch(uv_fs_close, fd_, AfterClose); if (ret < 0) { req->Reject(UVException(isolate, ret, "close")); @@ -569,7 +577,7 @@ int FileHandle::ReadStart() { read_wrap->buffer_ = EmitAlloc(recommended_read); current_read_ = std::move(read_wrap); - + FS_ASYNC_TRACE_BEGIN0(UV_FS_READ, current_read_.get()) current_read_->Dispatch(uv_fs_read, fd_, ¤t_read_->buffer_, @@ -579,6 +587,8 @@ int FileHandle::ReadStart() { FileHandle* handle; { FileHandleReadWrap* req_wrap = FileHandleReadWrap::from_req(req); + FS_ASYNC_TRACE_END1( + req->fs_type, req_wrap, "result", static_cast(req->result)) handle = req_wrap->file_handle_; CHECK_EQ(handle->current_read_.get(), req_wrap); } @@ -652,9 +662,12 @@ int FileHandle::DoShutdown(ShutdownWrap* req_wrap) { FileHandleCloseWrap* wrap = static_cast(req_wrap); closing_ = true; CHECK_NE(fd_, -1); + FS_ASYNC_TRACE_BEGIN0(UV_FS_CLOSE, wrap) wrap->Dispatch(uv_fs_close, fd_, uv_fs_callback_t{[](uv_fs_t* req) { FileHandleCloseWrap* wrap = static_cast( FileHandleCloseWrap::from_req(req)); + FS_ASYNC_TRACE_END1( + req->fs_type, wrap, "result", static_cast(req->result)) FileHandle* handle = static_cast(wrap->stream()); handle->AfterClose();