From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: "Jan Höppner" <hoeppner@linux.ibm.com>,
"Stefan Haberland" <sth@linux.ibm.com>,
"Vasily Gorbik" <gor@linux.ibm.com>,
"Sasha Levin" <sashal@kernel.org>,
linux-s390@vger.kernel.org
Subject: [PATCH AUTOSEL 4.14 52/60] s390/dasd: Make layout analysis ESE compatible
Date: Fri, 19 Jul 2019 00:11:01 -0400 [thread overview]
Message-ID: <20190719041109.18262-52-sashal@kernel.org> (raw)
In-Reply-To: <20190719041109.18262-1-sashal@kernel.org>
From: Jan Höppner <hoeppner@linux.ibm.com>
[ Upstream commit ce6915f5343f5f2a2a937b683d8ffbf12dab3ad4 ]
The disk layout and volume information of a DASD reside in the first two
tracks of cylinder 0. When a DASD is set online, currently the first
three tracks are read and analysed to confirm an expected layout.
For CDL (Compatible Disk Layout) only count area data of the first track
is evaluated and checked against expected key and data lengths. For LDL
(Linux Disk Layout) the first and third track is evaluated. However,
an LDL formatted volume is expected to be in the same format across all
tracks. Checking the third track therefore doesn't have any more value
than checking any other track at random.
Now, an Extent Space Efficient (ESE) DASD is initialised by only
formatting the first two tracks, as those tracks always contain all
information necessarry.
Checking the third track on an ESE volume will therefore most likely
fail with a record not found error, as the third track will be empty.
This in turn leads to the device being recognised with a volume size of
0. Attempts to write volume information on the first two tracks then
fail with "no space left on device" errors.
Initialising the first three tracks for an ESE volume is not a viable
solution, because the third track is already a regular track and could
contain user data. With that there is potential for data corruption.
Instead, always only analyse the first two tracks, as it is sufficiant
for both CDL and LDL, and allow ESE volumes to be recognised as well.
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/block/dasd_eckd.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index 0d5e2d92e05b..090c312eae32 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -156,7 +156,7 @@ static const int sizes_trk0[] = { 28, 148, 84 };
#define LABEL_SIZE 140
/* head and record addresses of count_area read in analysis ccw */
-static const int count_area_head[] = { 0, 0, 0, 0, 2 };
+static const int count_area_head[] = { 0, 0, 0, 0, 1 };
static const int count_area_rec[] = { 1, 2, 3, 4, 1 };
static inline unsigned int
@@ -1820,8 +1820,8 @@ dasd_eckd_analysis_ccw(struct dasd_device *device)
if (IS_ERR(cqr))
return cqr;
ccw = cqr->cpaddr;
- /* Define extent for the first 3 tracks. */
- define_extent(ccw++, cqr->data, 0, 2,
+ /* Define extent for the first 2 tracks. */
+ define_extent(ccw++, cqr->data, 0, 1,
DASD_ECKD_CCW_READ_COUNT, device, 0);
LO_data = cqr->data + sizeof(struct DE_eckd_data);
/* Locate record for the first 4 records on track 0. */
@@ -1840,9 +1840,9 @@ dasd_eckd_analysis_ccw(struct dasd_device *device)
count_data++;
}
- /* Locate record for the first record on track 2. */
+ /* Locate record for the first record on track 1. */
ccw[-1].flags |= CCW_FLAG_CC;
- locate_record(ccw++, LO_data++, 2, 0, 1,
+ locate_record(ccw++, LO_data++, 1, 0, 1,
DASD_ECKD_CCW_READ_COUNT, device, 0);
/* Read count ccw. */
ccw[-1].flags |= CCW_FLAG_CC;
@@ -1964,7 +1964,7 @@ static int dasd_eckd_end_analysis(struct dasd_block *block)
}
}
if (i == 3)
- count_area = &private->count_area[4];
+ count_area = &private->count_area[3];
if (private->uses_cdl == 0) {
for (i = 0; i < 5; i++) {
--
2.20.1
next prev parent reply other threads:[~2019-07-19 4:20 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 4:10 [PATCH AUTOSEL 4.14 01/60] drm/panel: simple: Fix panel_simple_dsi_probe Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 02/60] usb: core: hub: Disable hub-initiated U1/U2 Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 03/60] tty: max310x: Fix invalid baudrate divisors calculator Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 04/60] pinctrl: rockchip: fix leaked of_node references Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 05/60] tty: serial: cpm_uart - fix init when SMC is relocated Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 06/60] drm/edid: Fix a missing-check bug in drm_load_edid_firmware() Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 07/60] PCI: Return error if cannot probe VF Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 08/60] drm/bridge: tc358767: read display_props in get_modes() Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 09/60] drm/bridge: sii902x: pixel clock unit is 10kHz instead of 1kHz Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 10/60] drm/crc-debugfs: User irqsafe spinlock in drm_crtc_add_crc_entry Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 11/60] memstick: Fix error cleanup path of memstick_init Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 12/60] tty/serial: digicolor: Fix digicolor-usart already registered warning Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 13/60] tty: serial: msm_serial: avoid system lockup condition Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 14/60] serial: 8250: Fix TX interrupt handling condition Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 15/60] drm/virtio: Add memory barriers for capset cache Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 16/60] phy: renesas: rcar-gen2: Fix memory leak at error paths Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 17/60] powerpc/pseries/mobility: prevent cpu hotplug during DT update Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 18/60] drm/rockchip: Properly adjust to a true clock in adjusted_mode Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 19/60] iio:core: Fix bug in length of event info_mask and catch unhandled bits set in masks Sasha Levin
2019-07-21 17:27 ` Jonathan Cameron
2019-07-28 15:38 ` Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 20/60] tty: serial_core: Set port active bit in uart_port_activate Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 21/60] usb: gadget: Zero ffs_io_data Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 22/60] usb: gadget: storage: Remove warning message Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 23/60] powerpc/pci/of: Fix OF flags parsing for 64bit BARs Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 24/60] drm/msm: Depopulate platform on probe failure Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 25/60] serial: mctrl_gpio: Check if GPIO property exisits before requesting it Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 26/60] PCI: sysfs: Ignore lockdep for remove attribute Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 27/60] iio: st_accel: fix iio_triggered_buffer_{pre,post}enable positions Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 28/60] kbuild: Add -Werror=unknown-warning-option to CLANG_FLAGS Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 29/60] PCI: xilinx-nwl: Fix Multi MSI data programming Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 30/60] iio: iio-utils: Fix possible incorrect mask calculation Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 31/60] powerpc/xmon: Fix disabling tracing while in xmon Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 32/60] recordmcount: Fix spurious mcount entries on powerpc Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 33/60] mfd: core: Set fwnode for created devices Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 34/60] mfd: arizona: Fix undefined behavior Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 35/60] mfd: hi655x-pmic: Fix missing return value check for devm_regmap_init_mmio_clk Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 36/60] um: Silence lockdep complaint about mmap_sem Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 37/60] powerpc/4xx/uic: clear pending interrupt after irq type/pol change Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 38/60] RDMA/i40iw: Set queue pair state when being queried Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 39/60] serial: sh-sci: Terminate TX DMA during buffer flushing Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 40/60] serial: sh-sci: Fix TX DMA buffer flushing and workqueue races Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 41/60] PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 Sasha Levin
2019-07-19 8:33 ` Jon Hunter
2019-07-19 13:31 ` Sasha Levin
2019-07-19 13:53 ` Lorenzo Pieralisi
2019-07-28 15:42 ` Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 42/60] kallsyms: exclude kasan local symbols on s390 Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 43/60] perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 44/60] perf session: Fix potential NULL pointer dereference found by the smatch tool Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 45/60] perf annotate: Fix dereferencing freed memory " Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 46/60] RDMA/rxe: Fill in wc byte_len with IB_WC_RECV_RDMA_WITH_IMM Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 47/60] PCI: dwc: pci-dra7xx: Fix compilation when !CONFIG_GPIOLIB Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 48/60] powerpc/boot: add {get, put}_unaligned_be32 to xz_config.h Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 49/60] f2fs: avoid out-of-range memory access Sasha Levin
2019-07-19 4:10 ` [PATCH AUTOSEL 4.14 50/60] mailbox: handle failed named mailbox channel request Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 51/60] powerpc/eeh: Handle hugepages in ioremap space Sasha Levin
2019-07-19 4:11 ` Sasha Levin [this message]
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 53/60] block/bio-integrity: fix a memory leak bug Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 54/60] sh: prevent warnings when using iounmap Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 55/60] mm/kmemleak.c: fix check for softirq context Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 56/60] 9p: pass the correct prototype to read_cache_page Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 57/60] mm/gup.c: mark undo_dev_pagemap as __maybe_unused Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 58/60] mm/gup.c: remove some BUG_ONs from get_gate_page() Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 59/60] mm/mmu_notifier: use hlist_add_head_rcu() Sasha Levin
2019-07-19 4:11 ` [PATCH AUTOSEL 4.14 60/60] locking/lockdep: Fix lock used or unused stats error Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190719041109.18262-52-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=gor@linux.ibm.com \
--cc=hoeppner@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=sth@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).