]> granicus.if.org Git - postgresql/blobdiff - src/backend/utils/init/miscinit.c
Phase 2 of pgindent updates.
[postgresql] / src / backend / utils / init / miscinit.c
index e0298ee35ff99e4b64b6c8a9a115c24a9b4fc065..1c75e6357ec2607f1aaf030b8951d84322b3e425 100644 (file)
@@ -35,6 +35,7 @@
 #include "libpq/libpq.h"
 #include "mb/pg_wchar.h"
 #include "miscadmin.h"
+#include "pgstat.h"
 #include "postmaster/autovacuum.h"
 #include "postmaster/postmaster.h"
 #include "storage/fd.h"
@@ -856,11 +857,13 @@ CreateLockFile(const char *filename, bool amPostmaster,
                                         errmsg("could not open lock file \"%s\": %m",
                                                        filename)));
                }
+               pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_CREATE_READ);
                if ((len = read(fd, buffer, sizeof(buffer) - 1)) < 0)
                        ereport(FATAL,
                                        (errcode_for_file_access(),
                                         errmsg("could not read lock file \"%s\": %m",
                                                        filename)));
+               pgstat_report_wait_end();
                close(fd);
 
                if (len == 0)
@@ -1009,6 +1012,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
                strlcat(buffer, "\n", sizeof(buffer));
 
        errno = 0;
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_CREATE_WRITE);
        if (write(fd, buffer, strlen(buffer)) != strlen(buffer))
        {
                int                     save_errno = errno;
@@ -1021,6 +1025,9 @@ CreateLockFile(const char *filename, bool amPostmaster,
                                (errcode_for_file_access(),
                                 errmsg("could not write lock file \"%s\": %m", filename)));
        }
+       pgstat_report_wait_end();
+
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_CREATE_SYNC);
        if (pg_fsync(fd) != 0)
        {
                int                     save_errno = errno;
@@ -1032,6 +1039,7 @@ CreateLockFile(const char *filename, bool amPostmaster,
                                (errcode_for_file_access(),
                                 errmsg("could not write lock file \"%s\": %m", filename)));
        }
+       pgstat_report_wait_end();
        if (close(fd) != 0)
        {
                int                     save_errno = errno;
@@ -1129,8 +1137,8 @@ TouchSocketLockFiles(void)
                        read(fd, buffer, sizeof(buffer));
                        close(fd);
                }
-#endif   /* HAVE_UTIMES */
-#endif   /* HAVE_UTIME */
+#endif                                                 /* HAVE_UTIMES */
+#endif                                                 /* HAVE_UTIME */
        }
 }
 
@@ -1164,7 +1172,9 @@ AddToDataDirLockFile(int target_line, const char *str)
                                                DIRECTORY_LOCK_FILE)));
                return;
        }
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_ADDTODATADIR_READ);
        len = read(fd, srcbuffer, sizeof(srcbuffer) - 1);
+       pgstat_report_wait_end();
        if (len < 0)
        {
                ereport(LOG,
@@ -1217,9 +1227,11 @@ AddToDataDirLockFile(int target_line, const char *str)
         */
        len = strlen(destbuffer);
        errno = 0;
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_ADDTODATADIR_WRITE);
        if (lseek(fd, (off_t) 0, SEEK_SET) != 0 ||
                (int) write(fd, destbuffer, len) != len)
        {
+               pgstat_report_wait_end();
                /* if write didn't set errno, assume problem is no disk space */
                if (errno == 0)
                        errno = ENOSPC;
@@ -1230,6 +1242,8 @@ AddToDataDirLockFile(int target_line, const char *str)
                close(fd);
                return;
        }
+       pgstat_report_wait_end();
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_ADDTODATADIR_SYNC);
        if (pg_fsync(fd) != 0)
        {
                ereport(LOG,
@@ -1237,6 +1251,7 @@ AddToDataDirLockFile(int target_line, const char *str)
                                 errmsg("could not write to file \"%s\": %m",
                                                DIRECTORY_LOCK_FILE)));
        }
+       pgstat_report_wait_end();
        if (close(fd) != 0)
        {
                ereport(LOG,
@@ -1293,7 +1308,9 @@ RecheckDataDirLockFile(void)
                                return true;
                }
        }
+       pgstat_report_wait_start(WAIT_EVENT_LOCK_FILE_RECHECKDATADIR_READ);
        len = read(fd, buffer, sizeof(buffer) - 1);
+       pgstat_report_wait_end();
        if (len < 0)
        {
                ereport(LOG,
@@ -1418,12 +1435,12 @@ load_libraries(const char *libraries, const char *gucname, bool restricted)
        /* Need a modifiable copy of string */
        rawstring = pstrdup(libraries);
 
-       /* Parse string into list of identifiers */
-       if (!SplitIdentifierString(rawstring, ',', &elemlist))
+       /* Parse string into list of filename paths */
+       if (!SplitDirectoriesString(rawstring, ',', &elemlist))
        {
                /* syntax error in list */
+               list_free_deep(elemlist);
                pfree(rawstring);
-               list_free(elemlist);
                ereport(LOG,
                                (errcode(ERRCODE_SYNTAX_ERROR),
                                 errmsg("invalid list syntax in parameter \"%s\"",
@@ -1433,28 +1450,25 @@ load_libraries(const char *libraries, const char *gucname, bool restricted)
 
        foreach(l, elemlist)
        {
-               char       *tok = (char *) lfirst(l);
-               char       *filename;
+               /* Note that filename was already canonicalized */
+               char       *filename = (char *) lfirst(l);
+               char       *expanded = NULL;
 
-               filename = pstrdup(tok);
-               canonicalize_path(filename);
                /* If restricting, insert $libdir/plugins if not mentioned already */
                if (restricted && first_dir_separator(filename) == NULL)
                {
-                       char       *expanded;
-
                        expanded = psprintf("$libdir/plugins/%s", filename);
-                       pfree(filename);
                        filename = expanded;
                }
                load_file(filename, restricted);
                ereport(DEBUG1,
                                (errmsg("loaded library \"%s\"", filename)));
-               pfree(filename);
+               if (expanded)
+                       pfree(expanded);
        }
 
+       list_free_deep(elemlist);
        pfree(rawstring);
-       list_free(elemlist);
 }
 
 /*