[PATCH][EOAN] UBUNTU: SAUCE: Revert "s390/dasd: Add discard support for ESE volumes"

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH][EOAN] UBUNTU: SAUCE: Revert "s390/dasd: Add discard support for ESE volumes"

Dimitri John Ledkov
BugLink: https://bugs.launchpad.net/bugs/1846219

This reverts commit 7e64db1597fe114b83fe17d0ba96c6aa5fca419a.

Signed-off-by: Dimitri John Ledkov <[hidden email]>
---
 drivers/s390/block/dasd_eckd.c | 57 ++--------------------------------
 1 file changed, 3 insertions(+), 54 deletions(-)

diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
index b213c40d1a51..c94184d080f8 100644
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -2055,9 +2055,6 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
  if (readonly)
  set_bit(DASD_FLAG_DEVICE_RO, &device->flags);
 
- if (dasd_eckd_is_ese(device))
- dasd_set_feature(device->cdev, DASD_FEATURE_DISCARD, 1);
-
  dev_info(&device->cdev->dev, "New DASD %04X/%02X (CU %04X/%02X) "
  "with %d cylinders, %d heads, %d sectors%s\n",
  private->rdc_data.dev_type,
@@ -3691,14 +3688,6 @@ static int dasd_eckd_release_space(struct dasd_device *device,
  return -EINVAL;
 }
 
-static struct dasd_ccw_req *
-dasd_eckd_build_cp_discard(struct dasd_device *device, struct dasd_block *block,
-   struct request *req, sector_t first_trk,
-   sector_t last_trk)
-{
- return dasd_eckd_dso_ras(device, block, req, first_trk, last_trk, 1);
-}
-
 static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single(
        struct dasd_device *startdev,
        struct dasd_block *block,
@@ -4443,10 +4432,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev,
  cmdwtd = private->features.feature[12] & 0x40;
  use_prefix = private->features.feature[8] & 0x01;
 
- if (req_op(req) == REQ_OP_DISCARD)
- return dasd_eckd_build_cp_discard(startdev, block, req,
-  first_trk, last_trk);
-
  cqr = NULL;
  if (cdlspecial || dasd_page_cache) {
  /* do nothing, just fall through to the cmd mode single case */
@@ -4725,14 +4710,12 @@ static struct dasd_ccw_req *dasd_eckd_build_alias_cp(struct dasd_device *base,
      struct dasd_block *block,
      struct request *req)
 {
- struct dasd_device *startdev = NULL;
  struct dasd_eckd_private *private;
- struct dasd_ccw_req *cqr;
+ struct dasd_device *startdev;
  unsigned long flags;
+ struct dasd_ccw_req *cqr;
 
- /* Discard requests can only be processed on base devices */
- if (req_op(req) != REQ_OP_DISCARD)
- startdev = dasd_alias_get_start_dev(base);
+ startdev = dasd_alias_get_start_dev(base);
  if (!startdev)
  startdev = base;
  private = startdev->private;
@@ -6513,20 +6496,8 @@ static void dasd_eckd_setup_blk_queue(struct dasd_block *block)
  unsigned int logical_block_size = block->bp_block;
  struct request_queue *q = block->request_queue;
  struct dasd_device *device = block->base;
- struct dasd_eckd_private *private;
- unsigned int max_discard_sectors;
- unsigned int max_bytes;
- unsigned int ext_bytes; /* Extent Size in Bytes */
- int recs_per_trk;
- int trks_per_cyl;
- int ext_limit;
- int ext_size; /* Extent Size in Cylinders */
  int max;
 
- private = device->private;
- trks_per_cyl = private->rdc_data.trk_per_cyl;
- recs_per_trk = recs_per_track(&private->rdc_data, 0, logical_block_size);
-
  if (device->features & DASD_FEATURE_USERAW) {
  /*
  * the max_blocks value for raw_track access is 256
@@ -6547,28 +6518,6 @@ static void dasd_eckd_setup_blk_queue(struct dasd_block *block)
  /* With page sized segments each segment can be translated into one idaw/tidaw */
  blk_queue_max_segment_size(q, PAGE_SIZE);
  blk_queue_segment_boundary(q, PAGE_SIZE - 1);
-
- if (dasd_eckd_is_ese(device)) {
- /*
- * Depending on the extent size, up to UINT_MAX bytes can be
- * accepted. However, neither DASD_ECKD_RAS_EXTS_MAX nor the
- * device limits should be exceeded.
- */
- ext_size = dasd_eckd_ext_size(device);
- ext_limit = min(private->real_cyl / ext_size, DASD_ECKD_RAS_EXTS_MAX);
- ext_bytes = ext_size * trks_per_cyl * recs_per_trk *
- logical_block_size;
- max_bytes = UINT_MAX - (UINT_MAX % ext_bytes);
- if (max_bytes / ext_bytes > ext_limit)
- max_bytes = ext_bytes * ext_limit;
-
- max_discard_sectors = max_bytes / 512;
-
- blk_queue_max_discard_sectors(q, max_discard_sectors);
- blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
- q->limits.discard_granularity = ext_bytes;
- q->limits.discard_alignment = ext_bytes;
- }
 }
 
 static struct ccw_driver dasd_eckd_driver = {
--
2.20.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/cmt: [PATCH][EOAN] UBUNTU: SAUCE: Revert "s390/dasd: Add discard support for ESE volumes"

Seth Forshee
On Tue, Oct 01, 2019 at 04:19:07PM +0100, Dimitri John Ledkov wrote:
> BugLink: https://bugs.launchpad.net/bugs/1846219
>
> This reverts commit 7e64db1597fe114b83fe17d0ba96c6aa5fca419a.
>
> Signed-off-by: Dimitri John Ledkov <[hidden email]>

The commit message could be more informative ...

I think we should copy some of the information from the bug into the
commit message when applying. But given that it fixes data corruption,
scope is limited to s390, and IBM has tested internally:

Acked-by: Seth Forshee <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/Cmnt: [PATCH][EOAN] UBUNTU: SAUCE: Revert "s390/dasd: Add discard support for ESE volumes"

Stefan Bader-2
In reply to this post by Dimitri John Ledkov
On 01.10.19 17:19, Dimitri John Ledkov wrote:
> BugLink: https://bugs.launchpad.net/bugs/1846219
>
> This reverts commit 7e64db1597fe114b83fe17d0ba96c6aa5fca419a.
>
> Signed-off-by: Dimitri John Ledkov <[hidden email]>
Acked-by: Stefan Bader <[hidden email]>
> ---

I agree with Seth on the verbosity (can be done when applying, though).

-Stefan

>  drivers/s390/block/dasd_eckd.c | 57 ++--------------------------------
>  1 file changed, 3 insertions(+), 54 deletions(-)
>
> diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c
> index b213c40d1a51..c94184d080f8 100644
> --- a/drivers/s390/block/dasd_eckd.c
> +++ b/drivers/s390/block/dasd_eckd.c
> @@ -2055,9 +2055,6 @@ dasd_eckd_check_characteristics(struct dasd_device *device)
>   if (readonly)
>   set_bit(DASD_FLAG_DEVICE_RO, &device->flags);
>  
> - if (dasd_eckd_is_ese(device))
> - dasd_set_feature(device->cdev, DASD_FEATURE_DISCARD, 1);
> -
>   dev_info(&device->cdev->dev, "New DASD %04X/%02X (CU %04X/%02X) "
>   "with %d cylinders, %d heads, %d sectors%s\n",
>   private->rdc_data.dev_type,
> @@ -3691,14 +3688,6 @@ static int dasd_eckd_release_space(struct dasd_device *device,
>   return -EINVAL;
>  }
>  
> -static struct dasd_ccw_req *
> -dasd_eckd_build_cp_discard(struct dasd_device *device, struct dasd_block *block,
> -   struct request *req, sector_t first_trk,
> -   sector_t last_trk)
> -{
> - return dasd_eckd_dso_ras(device, block, req, first_trk, last_trk, 1);
> -}
> -
>  static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single(
>         struct dasd_device *startdev,
>         struct dasd_block *block,
> @@ -4443,10 +4432,6 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev,
>   cmdwtd = private->features.feature[12] & 0x40;
>   use_prefix = private->features.feature[8] & 0x01;
>  
> - if (req_op(req) == REQ_OP_DISCARD)
> - return dasd_eckd_build_cp_discard(startdev, block, req,
> -  first_trk, last_trk);
> -
>   cqr = NULL;
>   if (cdlspecial || dasd_page_cache) {
>   /* do nothing, just fall through to the cmd mode single case */
> @@ -4725,14 +4710,12 @@ static struct dasd_ccw_req *dasd_eckd_build_alias_cp(struct dasd_device *base,
>       struct dasd_block *block,
>       struct request *req)
>  {
> - struct dasd_device *startdev = NULL;
>   struct dasd_eckd_private *private;
> - struct dasd_ccw_req *cqr;
> + struct dasd_device *startdev;
>   unsigned long flags;
> + struct dasd_ccw_req *cqr;
>  
> - /* Discard requests can only be processed on base devices */
> - if (req_op(req) != REQ_OP_DISCARD)
> - startdev = dasd_alias_get_start_dev(base);
> + startdev = dasd_alias_get_start_dev(base);
>   if (!startdev)
>   startdev = base;
>   private = startdev->private;
> @@ -6513,20 +6496,8 @@ static void dasd_eckd_setup_blk_queue(struct dasd_block *block)
>   unsigned int logical_block_size = block->bp_block;
>   struct request_queue *q = block->request_queue;
>   struct dasd_device *device = block->base;
> - struct dasd_eckd_private *private;
> - unsigned int max_discard_sectors;
> - unsigned int max_bytes;
> - unsigned int ext_bytes; /* Extent Size in Bytes */
> - int recs_per_trk;
> - int trks_per_cyl;
> - int ext_limit;
> - int ext_size; /* Extent Size in Cylinders */
>   int max;
>  
> - private = device->private;
> - trks_per_cyl = private->rdc_data.trk_per_cyl;
> - recs_per_trk = recs_per_track(&private->rdc_data, 0, logical_block_size);
> -
>   if (device->features & DASD_FEATURE_USERAW) {
>   /*
>   * the max_blocks value for raw_track access is 256
> @@ -6547,28 +6518,6 @@ static void dasd_eckd_setup_blk_queue(struct dasd_block *block)
>   /* With page sized segments each segment can be translated into one idaw/tidaw */
>   blk_queue_max_segment_size(q, PAGE_SIZE);
>   blk_queue_segment_boundary(q, PAGE_SIZE - 1);
> -
> - if (dasd_eckd_is_ese(device)) {
> - /*
> - * Depending on the extent size, up to UINT_MAX bytes can be
> - * accepted. However, neither DASD_ECKD_RAS_EXTS_MAX nor the
> - * device limits should be exceeded.
> - */
> - ext_size = dasd_eckd_ext_size(device);
> - ext_limit = min(private->real_cyl / ext_size, DASD_ECKD_RAS_EXTS_MAX);
> - ext_bytes = ext_size * trks_per_cyl * recs_per_trk *
> - logical_block_size;
> - max_bytes = UINT_MAX - (UINT_MAX % ext_bytes);
> - if (max_bytes / ext_bytes > ext_limit)
> - max_bytes = ext_bytes * ext_limit;
> -
> - max_discard_sectors = max_bytes / 512;
> -
> - blk_queue_max_discard_sectors(q, max_discard_sectors);
> - blk_queue_flag_set(QUEUE_FLAG_DISCARD, q);
> - q->limits.discard_granularity = ext_bytes;
> - q->limits.discard_alignment = ext_bytes;
> - }
>  }
>  
>  static struct ccw_driver dasd_eckd_driver = {
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

APPLIED: [PATCH][EOAN] UBUNTU: SAUCE: Revert "s390/dasd: Add discard support for ESE volumes"

Seth Forshee
In reply to this post by Dimitri John Ledkov
On Tue, Oct 01, 2019 at 04:19:07PM +0100, Dimitri John Ledkov wrote:
> BugLink: https://bugs.launchpad.net/bugs/1846219
>
> This reverts commit 7e64db1597fe114b83fe17d0ba96c6aa5fca419a.
>
> Signed-off-by: Dimitri John Ledkov <[hidden email]>

Applied to eoan/master-next, thanks!

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team