Search Postgresql Archives

[PATCH] Add some debugging around mdzeroextend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is all new code, so it could have bugs.
---
 src/backend/storage/file/fd.c |  7 +++++++
 src/backend/storage/smgr/md.c | 12 ++++++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index 16b3e8f9058..a5db22b9b37 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -2347,6 +2347,13 @@ retry:
 	 */
 	if (returnCode != EINVAL && returnCode != EOPNOTSUPP)
 		return -1;
+
+	if (returnCode != EOPNOTSUPP)
+		ereport(WARNING,
+				errcode(ERRCODE_WARNING),
+				errmsg("could not allocate additional %lld bytes from position %lld in file \"%s\", retrying by zeroing: %m",
+					   (long long) amount, (long long) offset,
+					   VfdCache[file].fileName));
 #endif
 
 	return FileZero(file, offset, amount, wait_event_info);
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
index fdecbad1709..ac5e325f8ec 100644
--- a/src/backend/storage/smgr/md.c
+++ b/src/backend/storage/smgr/md.c
@@ -580,15 +580,17 @@ mdzeroextend(SMgrRelation reln, ForkNumber forknum,
 		if (numblocks > 8)
 		{
 			int			ret;
+			off_t		addbytes = (off_t) BLCKSZ * numblocks;
 
 			ret = FileFallocate(v->mdfd_vfd,
-								seekpos, (off_t) BLCKSZ * numblocks,
+								seekpos, addbytes,
 								WAIT_EVENT_DATA_FILE_EXTEND);
 			if (ret != 0)
 			{
 				ereport(ERROR,
 						errcode_for_file_access(),
-						errmsg("could not extend file \"%s\" with FileFallocate(): %m",
+						errmsg("could not allocate additional %lld bytes from position %lld in file \"%s\": %m",
+							   (long long) addbytes, (long long) seekpos,
 							   FilePathName(v->mdfd_vfd)),
 						errhint("Check free disk space."));
 			}
@@ -596,6 +598,7 @@ mdzeroextend(SMgrRelation reln, ForkNumber forknum,
 		else
 		{
 			int			ret;
+			off_t		addbytes = (off_t) BLCKSZ * numblocks;
 
 			/*
 			 * Even if we don't want to use fallocate, we can still extend a
@@ -605,12 +608,13 @@ mdzeroextend(SMgrRelation reln, ForkNumber forknum,
 			 * whole length of the extension.
 			 */
 			ret = FileZero(v->mdfd_vfd,
-						   seekpos, (off_t) BLCKSZ * numblocks,
+						   seekpos, addbytes,
 						   WAIT_EVENT_DATA_FILE_EXTEND);
 			if (ret < 0)
 				ereport(ERROR,
 						errcode_for_file_access(),
-						errmsg("could not extend file \"%s\": %m",
+						errmsg("could not zero additional %lld bytes from position %lld file \"%s\": %m",
+							   (long long) addbytes, (long long) seekpos,
 							   FilePathName(v->mdfd_vfd)),
 						errhint("Check free disk space."));
 		}
-- 
2.39.2


--rjbc3qehavvp44am--





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux