Inspired by bug 3663 - does not fix it, but then I'm not sure the report
is a squid bug or if it is regular filesystem permissions error.
This patch seeks to improve the messages output by UFS swap log
management. It also includes a small local variable symbol change from
"new_path" to "from_path" to prevent future developer mistakes like the
one seen in bug 3663 (mistaking "new_path" for the new destination path
of xrename() ).
Amos
=== modified file 'src/fs/ufs/UFSSwapDir.cc'
--- src/fs/ufs/UFSSwapDir.cc 2012-10-16 00:18:09 +0000
+++ src/fs/ufs/UFSSwapDir.cc 2012-11-19 05:07:31 +0000
@@ -802,27 +802,26 @@
void
Fs::Ufs::UFSSwapDir::closeTmpSwapLog()
{
- char *swaplog_path = xstrdup(logFile(NULL));
- char *new_path = xstrdup(logFile(".new"));
+ char *swaplog_path = xstrdup(logFile(NULL)); // where the swaplog should be
+ char *from_path = xstrdup(logFile(".new")); // the temporary file we have
generated
int fd;
file_close(swaplog_fd);
- if (xrename(new_path, swaplog_path) < 0) {
- debugs(50, DBG_IMPORTANT, HERE << "ERROR: " << swaplog_path << ": " <<
xstrerror());
- fatalf("Failed to rename log file %s to %s.new", swaplog_path,
swaplog_path);
+ if (xrename(from_path, swaplog_path) < 0) {
+ fatalf("Failed to rename log file %s to %s", from_path, swaplog_path);
}
fd = file_open(swaplog_path, O_WRONLY | O_CREAT | O_BINARY);
if (fd < 0) {
- debugs(50, DBG_IMPORTANT, HERE << "ERROR: " << swaplog_path << ": " <<
xstrerror());
+ debugs(50, DBG_IMPORTANT, "ERROR: " << swaplog_path << ": " <<
xstrerror());
fatalf("Failed to open swap log %s", swaplog_path);
}
safe_free(swaplog_path);
- safe_free(new_path);
+ safe_free(from_path);
swaplog_fd = fd;
- debugs(47, 3, HERE << "Cache Dir #" << index << " log opened on FD " <<
fd);
+ debugs(47, 3, "Cache Dir #" << index << " log opened on FD " << fd);
}
FILE *
@@ -839,7 +838,7 @@
int fd;
if (::stat(swaplog_path, &log_sb) < 0) {
- debugs(47, DBG_IMPORTANT, HERE << "Cache Dir #" << index << ": No log
file");
+ debugs(47, DBG_IMPORTANT, "Cache Dir #" << index << ": No log file");
safe_free(swaplog_path);
safe_free(clean_path);
safe_free(new_path);
@@ -857,7 +856,7 @@
if (fd < 0) {
debugs(50, DBG_IMPORTANT, "ERROR: while opening swap log" << new_path
<< ": " << xstrerror());
- fatal("UFSSwapDir::openTmpSwapLog: Failed to open swap log.");
+ fatalf("Failed to open swap log %s", new_path);
}
swaplog_fd = fd;
@@ -879,7 +878,7 @@
if (fp == NULL) {
debugs(50, DBG_CRITICAL, "ERROR: while opening " << swaplog_path << ":
" << xstrerror());
- fatal("Failed to open swap log for reading");
+ fatalf("Failed to open swap log for reading %s", swaplog_path);
}
memset(&clean_sb, '\0', sizeof(struct stat));