From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:42520 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760378AbdEVQJZ (ORCPT ); Mon, 22 May 2017 12:09:25 -0400 Subject: Patch "dm cache metadata: fail operations if fail_io mode has been established" has been added to the 4.9-stable tree To: snitzer@redhat.com, gregkh@linuxfoundation.org, mpatocka@redhat.com Cc: , From: Date: Mon, 22 May 2017 18:08:34 +0200 Message-ID: <1495469314177238@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled dm cache metadata: fail operations if fail_io mode has been established to the 4.9-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: dm-cache-metadata-fail-operations-if-fail_io-mode-has-been-established.patch and it can be found in the queue-4.9 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From 10add84e276432d9dd8044679a1028dd4084117e Mon Sep 17 00:00:00 2001 From: Mike Snitzer Date: Fri, 5 May 2017 14:40:13 -0400 Subject: dm cache metadata: fail operations if fail_io mode has been established From: Mike Snitzer commit 10add84e276432d9dd8044679a1028dd4084117e upstream. Otherwise it is possible to trigger crashes due to the metadata being inaccessible yet these methods don't safely account for that possibility without these checks. Reported-by: Mikulas Patocka Signed-off-by: Mike Snitzer Signed-off-by: Greg Kroah-Hartman --- drivers/md/dm-cache-metadata.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) --- a/drivers/md/dm-cache-metadata.c +++ b/drivers/md/dm-cache-metadata.c @@ -1383,17 +1383,19 @@ void dm_cache_metadata_set_stats(struct int dm_cache_commit(struct dm_cache_metadata *cmd, bool clean_shutdown) { - int r; + int r = -EINVAL; flags_mutator mutator = (clean_shutdown ? set_clean_shutdown : clear_clean_shutdown); WRITE_LOCK(cmd); + if (cmd->fail_io) + goto out; + r = __commit_transaction(cmd, mutator); if (r) goto out; r = __begin_transaction(cmd); - out: WRITE_UNLOCK(cmd); return r; @@ -1405,7 +1407,8 @@ int dm_cache_get_free_metadata_block_cou int r = -EINVAL; READ_LOCK(cmd); - r = dm_sm_get_nr_free(cmd->metadata_sm, result); + if (!cmd->fail_io) + r = dm_sm_get_nr_free(cmd->metadata_sm, result); READ_UNLOCK(cmd); return r; @@ -1417,7 +1420,8 @@ int dm_cache_get_metadata_dev_size(struc int r = -EINVAL; READ_LOCK(cmd); - r = dm_sm_get_nr_blocks(cmd->metadata_sm, result); + if (!cmd->fail_io) + r = dm_sm_get_nr_blocks(cmd->metadata_sm, result); READ_UNLOCK(cmd); return r; Patches currently in stable-queue which might be from snitzer@redhat.com are queue-4.9/dm-btree-fix-for-dm_btree_find_lowest_key.patch queue-4.9/dm-bufio-avoid-a-possible-abba-deadlock.patch queue-4.9/dm-cache-metadata-fail-operations-if-fail_io-mode-has-been-established.patch queue-4.9/dm-raid-select-the-kconfig-option-config_md_raid0.patch queue-4.9/dm-bufio-make-the-parameter-retain_bytes-unsigned-long.patch queue-4.9/dm-space-map-disk-fix-some-book-keeping-in-the-disk-space-map.patch queue-4.9/dm-mpath-split-and-rename-activate_path-to-prepare-for-its-expanded-use.patch queue-4.9/dm-bufio-check-new-buffer-allocation-watermark-every-30-seconds.patch queue-4.9/dm-thin-metadata-call-precommit-before-saving-the-roots.patch