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));

Reply via email to