summaryrefslogtreecommitdiff
path: root/src/third_party/wiredtiger/src/os_common/os_fhandle.c
diff options
context:
space:
mode:
authorLuke Chen <luke.chen@mongodb.com>2018-12-17 15:19:04 +1100
committerLuke Chen <luke.chen@mongodb.com>2018-12-17 15:19:04 +1100
commit0a29c7a7c5737b0e6027cf4cb01828b1abd8f41c (patch)
treeb81a77c211f7e41a58a9eeb5612c4e38a796e682 /src/third_party/wiredtiger/src/os_common/os_fhandle.c
parent53d8b294b81f70ec183f5d95be6440ecc5f8a728 (diff)
downloadmongo-0a29c7a7c5737b0e6027cf4cb01828b1abd8f41c.tar.gz
Import wiredtiger: d5793d4dd57bb763079e3f79821444e7e666ff44 from branch mongodb-4.2
ref: 5812c92f5f..d5793d4dd5 for: 4.1.7 WT-4280 Add debugging to know which session has a hazard pointer WT-4430 Fix race between prepare and page instantiate with fast truncate WT-4482 lint
Diffstat (limited to 'src/third_party/wiredtiger/src/os_common/os_fhandle.c')
-rw-r--r--src/third_party/wiredtiger/src/os_common/os_fhandle.c61
1 files changed, 35 insertions, 26 deletions
diff --git a/src/third_party/wiredtiger/src/os_common/os_fhandle.c b/src/third_party/wiredtiger/src/os_common/os_fhandle.c
index 3e5ad67e031..c76bf8c3f14 100644
--- a/src/third_party/wiredtiger/src/os_common/os_fhandle.c
+++ b/src/third_party/wiredtiger/src/os_common/os_fhandle.c
@@ -128,16 +128,46 @@ __handle_search(
}
/*
+ * __open_verbose_file_type_tag --
+ * Return a string describing a file type.
+ */
+static const char *
+__open_verbose_file_type_tag(WT_FS_OPEN_FILE_TYPE file_type)
+{
+
+ /*
+ * WT_FS_OPEN_FILE_TYPE is an enum and the switch exhaustively lists the
+ * cases, but clang, lint and gcc argue over whether or not the switch
+ * is exhaustive, or if a temporary variable inserted into the mix is
+ * set but never read. Break out of the switch, returning some value in
+ * all cases, just to shut everybody up.
+ */
+ switch (file_type) {
+ case WT_FS_OPEN_FILE_TYPE_CHECKPOINT:
+ return ("checkpoint");
+ case WT_FS_OPEN_FILE_TYPE_DATA:
+ return ("data");
+ case WT_FS_OPEN_FILE_TYPE_DIRECTORY:
+ return ("directory");
+ case WT_FS_OPEN_FILE_TYPE_LOG:
+ return ("log");
+ case WT_FS_OPEN_FILE_TYPE_REGULAR:
+ break;
+ }
+ return ("regular");
+}
+
+/*
* __open_verbose --
* Optionally output a verbose message on handle open.
*/
static inline int
-__open_verbose(
- WT_SESSION_IMPL *session, const char *name, int file_type, u_int flags)
+__open_verbose(WT_SESSION_IMPL *session,
+ const char *name, WT_FS_OPEN_FILE_TYPE file_type, u_int flags)
{
WT_DECL_ITEM(tmp);
WT_DECL_RET;
- const char *file_type_tag, *sep;
+ const char *sep;
if (!WT_VERBOSE_ISSET(session, WT_VERB_FILEOPS))
return (0);
@@ -146,28 +176,6 @@ __open_verbose(
* It's useful to track file opens when debugging platforms, take some
* effort to output good tracking information.
*/
-
- switch (file_type) {
- case WT_FS_OPEN_FILE_TYPE_CHECKPOINT:
- file_type_tag = "checkpoint";
- break;
- case WT_FS_OPEN_FILE_TYPE_DATA:
- file_type_tag = "data";
- break;
- case WT_FS_OPEN_FILE_TYPE_DIRECTORY:
- file_type_tag = "directory";
- break;
- case WT_FS_OPEN_FILE_TYPE_LOG:
- file_type_tag = "log";
- break;
- case WT_FS_OPEN_FILE_TYPE_REGULAR:
- file_type_tag = "regular";
- break;
- default:
- file_type_tag = "unknown open type";
- break;
- }
-
WT_RET(__wt_scr_alloc(session, 0, &tmp));
sep = " (";
#define WT_FS_OPEN_VERBOSE_FLAG(f, name) \
@@ -188,7 +196,8 @@ __open_verbose(
__wt_verbose(session, WT_VERB_FILEOPS,
"%s: file-open: type %s%s",
- name, file_type_tag, tmp->size == 0 ? "" : (char *)tmp->data);
+ name, __open_verbose_file_type_tag(file_type),
+ tmp->size == 0 ? "" : (char *)tmp->data);
err: __wt_scr_free(session, &tmp);
return (ret);