1083bd7e5SJosef Bacik // SPDX-License-Identifier: GPL-2.0 2083bd7e5SJosef Bacik 3083bd7e5SJosef Bacik #include "fs.h" 4083bd7e5SJosef Bacik #include "messages.h" 5083bd7e5SJosef Bacik #include "discard.h" 6083bd7e5SJosef Bacik #include "transaction.h" 7083bd7e5SJosef Bacik #include "space-info.h" 8*7f0add25SJosef Bacik #include "super.h" 9083bd7e5SJosef Bacik 10083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK 11083bd7e5SJosef Bacik 12083bd7e5SJosef Bacik #define STATE_STRING_PREFACE ": state " 13083bd7e5SJosef Bacik #define STATE_STRING_BUF_LEN (sizeof(STATE_STRING_PREFACE) + BTRFS_FS_STATE_COUNT) 14083bd7e5SJosef Bacik 15083bd7e5SJosef Bacik /* 16083bd7e5SJosef Bacik * Characters to print to indicate error conditions or uncommon filesystem state. 17083bd7e5SJosef Bacik * RO is not an error. 18083bd7e5SJosef Bacik */ 19083bd7e5SJosef Bacik static const char fs_state_chars[] = { 20083bd7e5SJosef Bacik [BTRFS_FS_STATE_ERROR] = 'E', 21083bd7e5SJosef Bacik [BTRFS_FS_STATE_REMOUNTING] = 'M', 22083bd7e5SJosef Bacik [BTRFS_FS_STATE_RO] = 0, 23083bd7e5SJosef Bacik [BTRFS_FS_STATE_TRANS_ABORTED] = 'A', 24083bd7e5SJosef Bacik [BTRFS_FS_STATE_DEV_REPLACING] = 'R', 25083bd7e5SJosef Bacik [BTRFS_FS_STATE_DUMMY_FS_INFO] = 0, 26083bd7e5SJosef Bacik [BTRFS_FS_STATE_NO_CSUMS] = 'C', 27083bd7e5SJosef Bacik [BTRFS_FS_STATE_LOG_CLEANUP_ERROR] = 'L', 28083bd7e5SJosef Bacik }; 29083bd7e5SJosef Bacik 30083bd7e5SJosef Bacik static void btrfs_state_to_string(const struct btrfs_fs_info *info, char *buf) 31083bd7e5SJosef Bacik { 32083bd7e5SJosef Bacik unsigned int bit; 33083bd7e5SJosef Bacik bool states_printed = false; 34083bd7e5SJosef Bacik unsigned long fs_state = READ_ONCE(info->fs_state); 35083bd7e5SJosef Bacik char *curr = buf; 36083bd7e5SJosef Bacik 37083bd7e5SJosef Bacik memcpy(curr, STATE_STRING_PREFACE, sizeof(STATE_STRING_PREFACE)); 38083bd7e5SJosef Bacik curr += sizeof(STATE_STRING_PREFACE) - 1; 39083bd7e5SJosef Bacik 40083bd7e5SJosef Bacik for_each_set_bit(bit, &fs_state, sizeof(fs_state)) { 41083bd7e5SJosef Bacik WARN_ON_ONCE(bit >= BTRFS_FS_STATE_COUNT); 42083bd7e5SJosef Bacik if ((bit < BTRFS_FS_STATE_COUNT) && fs_state_chars[bit]) { 43083bd7e5SJosef Bacik *curr++ = fs_state_chars[bit]; 44083bd7e5SJosef Bacik states_printed = true; 45083bd7e5SJosef Bacik } 46083bd7e5SJosef Bacik } 47083bd7e5SJosef Bacik 48083bd7e5SJosef Bacik /* If no states were printed, reset the buffer */ 49083bd7e5SJosef Bacik if (!states_printed) 50083bd7e5SJosef Bacik curr = buf; 51083bd7e5SJosef Bacik 52083bd7e5SJosef Bacik *curr++ = 0; 53083bd7e5SJosef Bacik } 54083bd7e5SJosef Bacik #endif 55083bd7e5SJosef Bacik 56083bd7e5SJosef Bacik /* 57083bd7e5SJosef Bacik * Generally the error codes correspond to their respective errors, but there 58083bd7e5SJosef Bacik * are a few special cases. 59083bd7e5SJosef Bacik * 60083bd7e5SJosef Bacik * EUCLEAN: Any sort of corruption that we encounter. The tree-checker for 61083bd7e5SJosef Bacik * instance will return EUCLEAN if any of the blocks are corrupted in 62083bd7e5SJosef Bacik * a way that is problematic. We want to reserve EUCLEAN for these 63083bd7e5SJosef Bacik * sort of corruptions. 64083bd7e5SJosef Bacik * 65083bd7e5SJosef Bacik * EROFS: If we check BTRFS_FS_STATE_ERROR and fail out with a return error, we 66083bd7e5SJosef Bacik * need to use EROFS for this case. We will have no idea of the 67083bd7e5SJosef Bacik * original failure, that will have been reported at the time we tripped 68083bd7e5SJosef Bacik * over the error. Each subsequent error that doesn't have any context 69083bd7e5SJosef Bacik * of the original error should use EROFS when handling BTRFS_FS_STATE_ERROR. 70083bd7e5SJosef Bacik */ 71083bd7e5SJosef Bacik const char * __attribute_const__ btrfs_decode_error(int errno) 72083bd7e5SJosef Bacik { 73083bd7e5SJosef Bacik char *errstr = "unknown"; 74083bd7e5SJosef Bacik 75083bd7e5SJosef Bacik switch (errno) { 76083bd7e5SJosef Bacik case -ENOENT: /* -2 */ 77083bd7e5SJosef Bacik errstr = "No such entry"; 78083bd7e5SJosef Bacik break; 79083bd7e5SJosef Bacik case -EIO: /* -5 */ 80083bd7e5SJosef Bacik errstr = "IO failure"; 81083bd7e5SJosef Bacik break; 82083bd7e5SJosef Bacik case -ENOMEM: /* -12*/ 83083bd7e5SJosef Bacik errstr = "Out of memory"; 84083bd7e5SJosef Bacik break; 85083bd7e5SJosef Bacik case -EEXIST: /* -17 */ 86083bd7e5SJosef Bacik errstr = "Object already exists"; 87083bd7e5SJosef Bacik break; 88083bd7e5SJosef Bacik case -ENOSPC: /* -28 */ 89083bd7e5SJosef Bacik errstr = "No space left"; 90083bd7e5SJosef Bacik break; 91083bd7e5SJosef Bacik case -EROFS: /* -30 */ 92083bd7e5SJosef Bacik errstr = "Readonly filesystem"; 93083bd7e5SJosef Bacik break; 94083bd7e5SJosef Bacik case -EOPNOTSUPP: /* -95 */ 95083bd7e5SJosef Bacik errstr = "Operation not supported"; 96083bd7e5SJosef Bacik break; 97083bd7e5SJosef Bacik case -EUCLEAN: /* -117 */ 98083bd7e5SJosef Bacik errstr = "Filesystem corrupted"; 99083bd7e5SJosef Bacik break; 100083bd7e5SJosef Bacik case -EDQUOT: /* -122 */ 101083bd7e5SJosef Bacik errstr = "Quota exceeded"; 102083bd7e5SJosef Bacik break; 103083bd7e5SJosef Bacik } 104083bd7e5SJosef Bacik 105083bd7e5SJosef Bacik return errstr; 106083bd7e5SJosef Bacik } 107083bd7e5SJosef Bacik 108083bd7e5SJosef Bacik /* 109083bd7e5SJosef Bacik * __btrfs_handle_fs_error decodes expected errors from the caller and 110083bd7e5SJosef Bacik * invokes the appropriate error response. 111083bd7e5SJosef Bacik */ 112083bd7e5SJosef Bacik __cold 113083bd7e5SJosef Bacik void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function, 114083bd7e5SJosef Bacik unsigned int line, int errno, const char *fmt, ...) 115083bd7e5SJosef Bacik { 116083bd7e5SJosef Bacik struct super_block *sb = fs_info->sb; 117083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK 118083bd7e5SJosef Bacik char statestr[STATE_STRING_BUF_LEN]; 119083bd7e5SJosef Bacik const char *errstr; 120083bd7e5SJosef Bacik #endif 121083bd7e5SJosef Bacik 122083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK_INDEX 123083bd7e5SJosef Bacik printk_index_subsys_emit( 124083bd7e5SJosef Bacik "BTRFS: error (device %s%s) in %s:%d: errno=%d %s", KERN_CRIT, fmt); 125083bd7e5SJosef Bacik #endif 126083bd7e5SJosef Bacik 127083bd7e5SJosef Bacik /* 128083bd7e5SJosef Bacik * Special case: if the error is EROFS, and we're already under 129083bd7e5SJosef Bacik * SB_RDONLY, then it is safe here. 130083bd7e5SJosef Bacik */ 131083bd7e5SJosef Bacik if (errno == -EROFS && sb_rdonly(sb)) 132083bd7e5SJosef Bacik return; 133083bd7e5SJosef Bacik 134083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK 135083bd7e5SJosef Bacik errstr = btrfs_decode_error(errno); 136083bd7e5SJosef Bacik btrfs_state_to_string(fs_info, statestr); 137083bd7e5SJosef Bacik if (fmt) { 138083bd7e5SJosef Bacik struct va_format vaf; 139083bd7e5SJosef Bacik va_list args; 140083bd7e5SJosef Bacik 141083bd7e5SJosef Bacik va_start(args, fmt); 142083bd7e5SJosef Bacik vaf.fmt = fmt; 143083bd7e5SJosef Bacik vaf.va = &args; 144083bd7e5SJosef Bacik 145083bd7e5SJosef Bacik pr_crit("BTRFS: error (device %s%s) in %s:%d: errno=%d %s (%pV)\n", 146083bd7e5SJosef Bacik sb->s_id, statestr, function, line, errno, errstr, &vaf); 147083bd7e5SJosef Bacik va_end(args); 148083bd7e5SJosef Bacik } else { 149083bd7e5SJosef Bacik pr_crit("BTRFS: error (device %s%s) in %s:%d: errno=%d %s\n", 150083bd7e5SJosef Bacik sb->s_id, statestr, function, line, errno, errstr); 151083bd7e5SJosef Bacik } 152083bd7e5SJosef Bacik #endif 153083bd7e5SJosef Bacik 154083bd7e5SJosef Bacik /* 155083bd7e5SJosef Bacik * Today we only save the error info to memory. Long term we'll also 156083bd7e5SJosef Bacik * send it down to the disk. 157083bd7e5SJosef Bacik */ 158083bd7e5SJosef Bacik set_bit(BTRFS_FS_STATE_ERROR, &fs_info->fs_state); 159083bd7e5SJosef Bacik 160083bd7e5SJosef Bacik /* Don't go through full error handling during mount. */ 161083bd7e5SJosef Bacik if (!(sb->s_flags & SB_BORN)) 162083bd7e5SJosef Bacik return; 163083bd7e5SJosef Bacik 164083bd7e5SJosef Bacik if (sb_rdonly(sb)) 165083bd7e5SJosef Bacik return; 166083bd7e5SJosef Bacik 167083bd7e5SJosef Bacik btrfs_discard_stop(fs_info); 168083bd7e5SJosef Bacik 169083bd7e5SJosef Bacik /* Handle error by forcing the filesystem readonly. */ 170083bd7e5SJosef Bacik btrfs_set_sb_rdonly(sb); 171083bd7e5SJosef Bacik btrfs_info(fs_info, "forced readonly"); 172083bd7e5SJosef Bacik /* 173083bd7e5SJosef Bacik * Note that a running device replace operation is not canceled here 174083bd7e5SJosef Bacik * although there is no way to update the progress. It would add the 175083bd7e5SJosef Bacik * risk of a deadlock, therefore the canceling is omitted. The only 176083bd7e5SJosef Bacik * penalty is that some I/O remains active until the procedure 177083bd7e5SJosef Bacik * completes. The next time when the filesystem is mounted writable 178083bd7e5SJosef Bacik * again, the device replace operation continues. 179083bd7e5SJosef Bacik */ 180083bd7e5SJosef Bacik } 181083bd7e5SJosef Bacik 182083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK 183083bd7e5SJosef Bacik static const char * const logtypes[] = { 184083bd7e5SJosef Bacik "emergency", 185083bd7e5SJosef Bacik "alert", 186083bd7e5SJosef Bacik "critical", 187083bd7e5SJosef Bacik "error", 188083bd7e5SJosef Bacik "warning", 189083bd7e5SJosef Bacik "notice", 190083bd7e5SJosef Bacik "info", 191083bd7e5SJosef Bacik "debug", 192083bd7e5SJosef Bacik }; 193083bd7e5SJosef Bacik 194083bd7e5SJosef Bacik /* 195083bd7e5SJosef Bacik * Use one ratelimit state per log level so that a flood of less important 196083bd7e5SJosef Bacik * messages doesn't cause more important ones to be dropped. 197083bd7e5SJosef Bacik */ 198083bd7e5SJosef Bacik static struct ratelimit_state printk_limits[] = { 199083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[0], DEFAULT_RATELIMIT_INTERVAL, 100), 200083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[1], DEFAULT_RATELIMIT_INTERVAL, 100), 201083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[2], DEFAULT_RATELIMIT_INTERVAL, 100), 202083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[3], DEFAULT_RATELIMIT_INTERVAL, 100), 203083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[4], DEFAULT_RATELIMIT_INTERVAL, 100), 204083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[5], DEFAULT_RATELIMIT_INTERVAL, 100), 205083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[6], DEFAULT_RATELIMIT_INTERVAL, 100), 206083bd7e5SJosef Bacik RATELIMIT_STATE_INIT(printk_limits[7], DEFAULT_RATELIMIT_INTERVAL, 100), 207083bd7e5SJosef Bacik }; 208083bd7e5SJosef Bacik 209083bd7e5SJosef Bacik void __cold _btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...) 210083bd7e5SJosef Bacik { 211083bd7e5SJosef Bacik char lvl[PRINTK_MAX_SINGLE_HEADER_LEN + 1] = "\0"; 212083bd7e5SJosef Bacik struct va_format vaf; 213083bd7e5SJosef Bacik va_list args; 214083bd7e5SJosef Bacik int kern_level; 215083bd7e5SJosef Bacik const char *type = logtypes[4]; 216083bd7e5SJosef Bacik struct ratelimit_state *ratelimit = &printk_limits[4]; 217083bd7e5SJosef Bacik 218083bd7e5SJosef Bacik #ifdef CONFIG_PRINTK_INDEX 219083bd7e5SJosef Bacik printk_index_subsys_emit("%sBTRFS %s (device %s): ", NULL, fmt); 220083bd7e5SJosef Bacik #endif 221083bd7e5SJosef Bacik 222083bd7e5SJosef Bacik va_start(args, fmt); 223083bd7e5SJosef Bacik 224083bd7e5SJosef Bacik while ((kern_level = printk_get_level(fmt)) != 0) { 225083bd7e5SJosef Bacik size_t size = printk_skip_level(fmt) - fmt; 226083bd7e5SJosef Bacik 227083bd7e5SJosef Bacik if (kern_level >= '0' && kern_level <= '7') { 228083bd7e5SJosef Bacik memcpy(lvl, fmt, size); 229083bd7e5SJosef Bacik lvl[size] = '\0'; 230083bd7e5SJosef Bacik type = logtypes[kern_level - '0']; 231083bd7e5SJosef Bacik ratelimit = &printk_limits[kern_level - '0']; 232083bd7e5SJosef Bacik } 233083bd7e5SJosef Bacik fmt += size; 234083bd7e5SJosef Bacik } 235083bd7e5SJosef Bacik 236083bd7e5SJosef Bacik vaf.fmt = fmt; 237083bd7e5SJosef Bacik vaf.va = &args; 238083bd7e5SJosef Bacik 239083bd7e5SJosef Bacik if (__ratelimit(ratelimit)) { 240083bd7e5SJosef Bacik if (fs_info) { 241083bd7e5SJosef Bacik char statestr[STATE_STRING_BUF_LEN]; 242083bd7e5SJosef Bacik 243083bd7e5SJosef Bacik btrfs_state_to_string(fs_info, statestr); 244083bd7e5SJosef Bacik _printk("%sBTRFS %s (device %s%s): %pV\n", lvl, type, 245083bd7e5SJosef Bacik fs_info->sb->s_id, statestr, &vaf); 246083bd7e5SJosef Bacik } else { 247083bd7e5SJosef Bacik _printk("%sBTRFS %s: %pV\n", lvl, type, &vaf); 248083bd7e5SJosef Bacik } 249083bd7e5SJosef Bacik } 250083bd7e5SJosef Bacik 251083bd7e5SJosef Bacik va_end(args); 252083bd7e5SJosef Bacik } 253083bd7e5SJosef Bacik #endif 254083bd7e5SJosef Bacik 255083bd7e5SJosef Bacik #ifdef CONFIG_BTRFS_ASSERT 256083bd7e5SJosef Bacik void __cold btrfs_assertfail(const char *expr, const char *file, int line) 257083bd7e5SJosef Bacik { 258083bd7e5SJosef Bacik pr_err("assertion failed: %s, in %s:%d\n", expr, file, line); 259083bd7e5SJosef Bacik BUG(); 260083bd7e5SJosef Bacik } 261083bd7e5SJosef Bacik #endif 262083bd7e5SJosef Bacik 263083bd7e5SJosef Bacik void __cold btrfs_print_v0_err(struct btrfs_fs_info *fs_info) 264083bd7e5SJosef Bacik { 265083bd7e5SJosef Bacik btrfs_err(fs_info, 266083bd7e5SJosef Bacik "Unsupported V0 extent filesystem detected. Aborting. Please re-create your filesystem with a newer kernel"); 267083bd7e5SJosef Bacik } 268083bd7e5SJosef Bacik 269083bd7e5SJosef Bacik #if BITS_PER_LONG == 32 270083bd7e5SJosef Bacik void __cold btrfs_warn_32bit_limit(struct btrfs_fs_info *fs_info) 271083bd7e5SJosef Bacik { 272083bd7e5SJosef Bacik if (!test_and_set_bit(BTRFS_FS_32BIT_WARN, &fs_info->flags)) { 273083bd7e5SJosef Bacik btrfs_warn(fs_info, "reaching 32bit limit for logical addresses"); 274083bd7e5SJosef Bacik btrfs_warn(fs_info, 275083bd7e5SJosef Bacik "due to page cache limit on 32bit systems, btrfs can't access metadata at or beyond %lluT", 276083bd7e5SJosef Bacik BTRFS_32BIT_MAX_FILE_SIZE >> 40); 277083bd7e5SJosef Bacik btrfs_warn(fs_info, 278083bd7e5SJosef Bacik "please consider upgrading to 64bit kernel/hardware"); 279083bd7e5SJosef Bacik } 280083bd7e5SJosef Bacik } 281083bd7e5SJosef Bacik 282083bd7e5SJosef Bacik void __cold btrfs_err_32bit_limit(struct btrfs_fs_info *fs_info) 283083bd7e5SJosef Bacik { 284083bd7e5SJosef Bacik if (!test_and_set_bit(BTRFS_FS_32BIT_ERROR, &fs_info->flags)) { 285083bd7e5SJosef Bacik btrfs_err(fs_info, "reached 32bit limit for logical addresses"); 286083bd7e5SJosef Bacik btrfs_err(fs_info, 287083bd7e5SJosef Bacik "due to page cache limit on 32bit systems, metadata beyond %lluT can't be accessed", 288083bd7e5SJosef Bacik BTRFS_32BIT_MAX_FILE_SIZE >> 40); 289083bd7e5SJosef Bacik btrfs_err(fs_info, 290083bd7e5SJosef Bacik "please consider upgrading to 64bit kernel/hardware"); 291083bd7e5SJosef Bacik } 292083bd7e5SJosef Bacik } 293083bd7e5SJosef Bacik #endif 294083bd7e5SJosef Bacik 295083bd7e5SJosef Bacik /* 296083bd7e5SJosef Bacik * We only mark the transaction aborted and then set the file system read-only. 297083bd7e5SJosef Bacik * This will prevent new transactions from starting or trying to join this 298083bd7e5SJosef Bacik * one. 299083bd7e5SJosef Bacik * 300083bd7e5SJosef Bacik * This means that error recovery at the call site is limited to freeing 301083bd7e5SJosef Bacik * any local memory allocations and passing the error code up without 302083bd7e5SJosef Bacik * further cleanup. The transaction should complete as it normally would 303083bd7e5SJosef Bacik * in the call path but will return -EIO. 304083bd7e5SJosef Bacik * 305083bd7e5SJosef Bacik * We'll complete the cleanup in btrfs_end_transaction and 306083bd7e5SJosef Bacik * btrfs_commit_transaction. 307083bd7e5SJosef Bacik */ 308083bd7e5SJosef Bacik __cold 309083bd7e5SJosef Bacik void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, 310083bd7e5SJosef Bacik const char *function, 311083bd7e5SJosef Bacik unsigned int line, int errno, bool first_hit) 312083bd7e5SJosef Bacik { 313083bd7e5SJosef Bacik struct btrfs_fs_info *fs_info = trans->fs_info; 314083bd7e5SJosef Bacik 315083bd7e5SJosef Bacik WRITE_ONCE(trans->aborted, errno); 316083bd7e5SJosef Bacik WRITE_ONCE(trans->transaction->aborted, errno); 317083bd7e5SJosef Bacik if (first_hit && errno == -ENOSPC) 318083bd7e5SJosef Bacik btrfs_dump_space_info_for_trans_abort(fs_info); 319083bd7e5SJosef Bacik /* Wake up anybody who may be waiting on this transaction */ 320083bd7e5SJosef Bacik wake_up(&fs_info->transaction_wait); 321083bd7e5SJosef Bacik wake_up(&fs_info->transaction_blocked_wait); 322083bd7e5SJosef Bacik __btrfs_handle_fs_error(fs_info, function, line, errno, NULL); 323083bd7e5SJosef Bacik } 324083bd7e5SJosef Bacik 325083bd7e5SJosef Bacik /* 326083bd7e5SJosef Bacik * __btrfs_panic decodes unexpected, fatal errors from the caller, issues an 327083bd7e5SJosef Bacik * alert, and either panics or BUGs, depending on mount options. 328083bd7e5SJosef Bacik */ 329083bd7e5SJosef Bacik __cold 330083bd7e5SJosef Bacik void __btrfs_panic(struct btrfs_fs_info *fs_info, const char *function, 331083bd7e5SJosef Bacik unsigned int line, int errno, const char *fmt, ...) 332083bd7e5SJosef Bacik { 333083bd7e5SJosef Bacik char *s_id = "<unknown>"; 334083bd7e5SJosef Bacik const char *errstr; 335083bd7e5SJosef Bacik struct va_format vaf = { .fmt = fmt }; 336083bd7e5SJosef Bacik va_list args; 337083bd7e5SJosef Bacik 338083bd7e5SJosef Bacik if (fs_info) 339083bd7e5SJosef Bacik s_id = fs_info->sb->s_id; 340083bd7e5SJosef Bacik 341083bd7e5SJosef Bacik va_start(args, fmt); 342083bd7e5SJosef Bacik vaf.va = &args; 343083bd7e5SJosef Bacik 344083bd7e5SJosef Bacik errstr = btrfs_decode_error(errno); 345083bd7e5SJosef Bacik if (fs_info && (btrfs_test_opt(fs_info, PANIC_ON_FATAL_ERROR))) 346083bd7e5SJosef Bacik panic(KERN_CRIT "BTRFS panic (device %s) in %s:%d: %pV (errno=%d %s)\n", 347083bd7e5SJosef Bacik s_id, function, line, &vaf, errno, errstr); 348083bd7e5SJosef Bacik 349083bd7e5SJosef Bacik btrfs_crit(fs_info, "panic in %s:%d: %pV (errno=%d %s)", 350083bd7e5SJosef Bacik function, line, &vaf, errno, errstr); 351083bd7e5SJosef Bacik va_end(args); 352083bd7e5SJosef Bacik /* Caller calls BUG() */ 353083bd7e5SJosef Bacik } 354