At 2015-05-29 13:14:18 -0400, t...@sss.pgh.pa.us 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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers