Clarify tablespace.c::TablespaceCreateDbspace() comments.

This commit is contained in:
Bruce Momjian 2010-01-07 04:05:39 +00:00
parent 814c8a03ba
commit 85fcbd8655
1 changed files with 9 additions and 6 deletions

View File

@ -37,7 +37,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.68 2010/01/06 23:23:51 momjian Exp $ * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.69 2010/01/07 04:05:39 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
@ -89,7 +89,7 @@ static void write_version_file(const char *path);
* Each database using a table space is isolated into its own name space * Each database using a table space is isolated into its own name space
* by a subdirectory named for the database OID. On first creation of an * by a subdirectory named for the database OID. On first creation of an
* object in the tablespace, create the subdirectory. If the subdirectory * object in the tablespace, create the subdirectory. If the subdirectory
* already exists, just fall through quietly. * already exists, fall through quietly.
* *
* isRedo indicates that we are creating an object during WAL replay. * isRedo indicates that we are creating an object during WAL replay.
* In this case we will cope with the possibility of the tablespace * In this case we will cope with the possibility of the tablespace
@ -137,29 +137,32 @@ TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo)
*/ */
if (stat(dir, &st) == 0 && S_ISDIR(st.st_mode)) if (stat(dir, &st) == 0 && S_ISDIR(st.st_mode))
{ {
/* need not do anything */ /* Directory was created. */
} }
else else
{ {
/* OK, go for it */ /* Directory creation failed? */
if (mkdir(dir, S_IRWXU) < 0) if (mkdir(dir, S_IRWXU) < 0)
{ {
char *parentdir; char *parentdir;
/* Failure other than not exists? */
if (errno != ENOENT || !isRedo) if (errno != ENOENT || !isRedo)
ereport(ERROR, ereport(ERROR,
(errcode_for_file_access(), (errcode_for_file_access(),
errmsg("could not create directory \"%s\": %m", errmsg("could not create directory \"%s\": %m",
dir))); dir)));
/* Try to make parent directory too */ /* Parent directory must be missing */
parentdir = pstrdup(dir); parentdir = pstrdup(dir);
get_parent_directory(parentdir); get_parent_directory(parentdir);
/* Can't create parent either? */
if (mkdir(parentdir, S_IRWXU) < 0) if (mkdir(parentdir, S_IRWXU) < 0)
ereport(ERROR, ereport(ERROR,
(errcode_for_file_access(), (errcode_for_file_access(),
errmsg("could not create directory \"%s\": %m", errmsg("could not create directory \"%s\": %m",
parentdir))); parentdir)));
pfree(parentdir); pfree(parentdir);
/* Create database directory */
if (mkdir(dir, S_IRWXU) < 0) if (mkdir(dir, S_IRWXU) < 0)
ereport(ERROR, ereport(ERROR,
(errcode_for_file_access(), (errcode_for_file_access(),
@ -179,7 +182,7 @@ TablespaceCreateDbspace(Oid spcNode, Oid dbNode, bool isRedo)
} }
else else
{ {
/* be paranoid */ /* Is it not a directory? */
if (!S_ISDIR(st.st_mode)) if (!S_ISDIR(st.st_mode))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_WRONG_OBJECT_TYPE), (errcode(ERRCODE_WRONG_OBJECT_TYPE),