At 2015-05-29 13:14:18 -0400, [email protected] wrote:
>
> Pushed with minor revisions.
Thanks, looks good.
> Since we're only logging the failures anyway, I think it is reasonable
> to log a complaint for any unwritable file in the data directory.
Sounds reasonable, patch attached. ETXTBSY has no special meaning that I
can find under Windows, so I included that change as well.
-- Abhijit
diff --git a/src/backend/storage/file/fd.c b/src/backend/storage/file/fd.c
index b4f6590..70e2347 100644
--- a/src/backend/storage/file/fd.c
+++ b/src/backend/storage/file/fd.c
@@ -2646,11 +2646,12 @@ pre_sync_fname(const char *fname, bool isdir, int elevel)
if (fd < 0)
{
- if (errno == EACCES || (isdir && errno == EISDIR))
+ /* Some platforms don't support opening directories at all. */
+ if (isdir && errno == EISDIR)
return;
-#ifdef ETXTBSY
- if (errno == ETXTBSY)
+#ifdef WIN32
+ if (isdir && errno == EACCES)
return;
#endif
@@ -2701,11 +2702,12 @@ fsync_fname_ext(const char *fname, bool isdir, int elevel)
fd = OpenTransientFile((char *) fname, flags, 0);
if (fd < 0)
{
- if (errno == EACCES || (isdir && errno == EISDIR))
+ /* Some platforms don't support opening directories at all. */
+ if (isdir && errno == EISDIR)
return;
-#ifdef ETXTBSY
- if (errno == ETXTBSY)
+#ifdef WIN32
+ if (isdir && errno == EACCES)
return;
#endif
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index f0d66fa..f343168 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -617,11 +617,12 @@ pre_sync_fname(const char *fname, bool isdir)
if (fd < 0)
{
- if (errno == EACCES || (isdir && errno == EISDIR))
+ /* Some platforms don't support opening directories at all. */
+ if (isdir && errno == EISDIR)
return;
-#ifdef ETXTBSY
- if (errno == ETXTBSY)
+#ifdef WIN32
+ if (isdir && errno == EACCES)
return;
#endif
@@ -682,11 +683,12 @@ fsync_fname_ext(const char *fname, bool isdir)
fd = open(fname, flags);
if (fd < 0)
{
- if (errno == EACCES || (isdir && errno == EISDIR))
+ /* Some platforms don't support opening directories at all. */
+ if (isdir && errno == EISDIR)
return;
-#ifdef ETXTBSY
- if (errno == ETXTBSY)
+#ifdef WIN32
+ if (isdir && errno == EACCES)
return;
#endif
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers