diff options
author | Luke Chen <luke.chen@mongodb.com> | 2018-12-17 15:19:04 +1100 |
---|---|---|
committer | Luke Chen <luke.chen@mongodb.com> | 2018-12-17 15:19:04 +1100 |
commit | 0a29c7a7c5737b0e6027cf4cb01828b1abd8f41c (patch) | |
tree | b81a77c211f7e41a58a9eeb5612c4e38a796e682 /src/third_party/wiredtiger/src/os_common/os_fhandle.c | |
parent | 53d8b294b81f70ec183f5d95be6440ecc5f8a728 (diff) | |
download | mongo-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.c | 61 |
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); |