All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vishal Verma <vishal.l.verma@intel.com>
To: linux-nvdimm@lists.01.org
Cc: Jens Axboe <axboe@fb.com>, Jan Kara <jack@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	Dave Chinner <david@fromorbit.com>,
	xfs@oss.sgi.com, linux-block@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <matthew.r.wilcox@intel.com>,
	linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH 3/5] dax: enable dax in the presence of known media errors (badblocks)
Date: Thu, 24 Mar 2016 17:17:28 -0600	[thread overview]
Message-ID: <1458861450-17705-4-git-send-email-vishal.l.verma@intel.com> (raw)
In-Reply-To: <1458861450-17705-1-git-send-email-vishal.l.verma@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

1/ If a mapping overlaps a bad sector fail the request.

2/ Do not opportunistically report more dax-capable capacity than is
   requested when errors present.

[vishal: fix a conflict with system RAM collision patches]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 block/ioctl.c         | 9 ---------
 drivers/nvdimm/pmem.c | 8 ++++++++
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/block/ioctl.c b/block/ioctl.c
index d8996bb..cd7f392 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -423,15 +423,6 @@ bool blkdev_dax_capable(struct block_device *bdev)
 			|| (bdev->bd_part->nr_sects % (PAGE_SIZE / 512)))
 		return false;
 
-	/*
-	 * If the device has known bad blocks, force all I/O through the
-	 * driver / page cache.
-	 *
-	 * TODO: support finer grained dax error handling
-	 */
-	if (disk->bb && disk->bb->count)
-		return false;
-
 	return true;
 }
 #endif
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index da10554..eac5f93 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -174,9 +174,17 @@ static long pmem_direct_access(struct block_device *bdev,
 	struct pmem_device *pmem = bdev->bd_disk->private_data;
 	resource_size_t offset = sector * 512 + pmem->data_offset;
 
+	if (unlikely(is_bad_pmem(&pmem->bb, sector, dax->size)))
+		return -EIO;
 	dax->addr = pmem->virt_addr + offset;
 	dax->pfn = phys_to_pfn_t(pmem->phys_addr + offset, pmem->pfn_flags);
 
+	/*
+	 * If badblocks are present, limit known good range to the
+	 * requested range.
+	 */
+	if (unlikely(pmem->bb.count))
+		return dax->size;
 	return pmem->size - pmem->pfn_pad - offset;
 }
 
-- 
2.5.5

_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm

WARNING: multiple messages have this Message-ID (diff)
From: Vishal Verma <vishal.l.verma@intel.com>
To: linux-nvdimm@lists.01.org
Cc: Dan Williams <dan.j.williams@intel.com>,
	linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org,
	xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <matthew.r.wilcox@intel.com>,
	Ross Zwisler <ross.zwisler@linux.intel.com>,
	Dave Chinner <david@fromorbit.com>, Jan Kara <jack@suse.cz>,
	Jens Axboe <axboe@fb.com>, Al Viro <viro@zeniv.linux.org.uk>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH 3/5] dax: enable dax in the presence of known media errors (badblocks)
Date: Thu, 24 Mar 2016 17:17:28 -0600	[thread overview]
Message-ID: <1458861450-17705-4-git-send-email-vishal.l.verma@intel.com> (raw)
In-Reply-To: <1458861450-17705-1-git-send-email-vishal.l.verma@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

1/ If a mapping overlaps a bad sector fail the request.

2/ Do not opportunistically report more dax-capable capacity than is
   requested when errors present.

[vishal: fix a conflict with system RAM collision patches]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 block/ioctl.c         | 9 ---------
 drivers/nvdimm/pmem.c | 8 ++++++++
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/block/ioctl.c b/block/ioctl.c
index d8996bb..cd7f392 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -423,15 +423,6 @@ bool blkdev_dax_capable(struct block_device *bdev)
 			|| (bdev->bd_part->nr_sects % (PAGE_SIZE / 512)))
 		return false;
 
-	/*
-	 * If the device has known bad blocks, force all I/O through the
-	 * driver / page cache.
-	 *
-	 * TODO: support finer grained dax error handling
-	 */
-	if (disk->bb && disk->bb->count)
-		return false;
-
 	return true;
 }
 #endif
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index da10554..eac5f93 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -174,9 +174,17 @@ static long pmem_direct_access(struct block_device *bdev,
 	struct pmem_device *pmem = bdev->bd_disk->private_data;
 	resource_size_t offset = sector * 512 + pmem->data_offset;
 
+	if (unlikely(is_bad_pmem(&pmem->bb, sector, dax->size)))
+		return -EIO;
 	dax->addr = pmem->virt_addr + offset;
 	dax->pfn = phys_to_pfn_t(pmem->phys_addr + offset, pmem->pfn_flags);
 
+	/*
+	 * If badblocks are present, limit known good range to the
+	 * requested range.
+	 */
+	if (unlikely(pmem->bb.count))
+		return dax->size;
 	return pmem->size - pmem->pfn_pad - offset;
 }
 
-- 
2.5.5

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Vishal Verma <vishal.l.verma@intel.com>
To: linux-nvdimm@lists.01.org
Cc: Jens Axboe <axboe@fb.com>, Jan Kara <jack@suse.cz>,
	Andrew Morton <akpm@linux-foundation.org>,
	xfs@oss.sgi.com, linux-block@vger.kernel.org, linux-mm@kvack.org,
	Matthew Wilcox <matthew.r.wilcox@intel.com>,
	linux-fsdevel@vger.kernel.org,
	Dan Williams <dan.j.williams@intel.com>,
	linux-ext4@vger.kernel.org,
	Ross Zwisler <ross.zwisler@linux.intel.com>,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: [PATCH 3/5] dax: enable dax in the presence of known media errors (badblocks)
Date: Thu, 24 Mar 2016 17:17:28 -0600	[thread overview]
Message-ID: <1458861450-17705-4-git-send-email-vishal.l.verma@intel.com> (raw)
In-Reply-To: <1458861450-17705-1-git-send-email-vishal.l.verma@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

From: Dan Williams <dan.j.williams@intel.com>

1/ If a mapping overlaps a bad sector fail the request.

2/ Do not opportunistically report more dax-capable capacity than is
   requested when errors present.

[vishal: fix a conflict with system RAM collision patches]
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 block/ioctl.c         | 9 ---------
 drivers/nvdimm/pmem.c | 8 ++++++++
 2 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/block/ioctl.c b/block/ioctl.c
index d8996bb..cd7f392 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -423,15 +423,6 @@ bool blkdev_dax_capable(struct block_device *bdev)
 			|| (bdev->bd_part->nr_sects % (PAGE_SIZE / 512)))
 		return false;
 
-	/*
-	 * If the device has known bad blocks, force all I/O through the
-	 * driver / page cache.
-	 *
-	 * TODO: support finer grained dax error handling
-	 */
-	if (disk->bb && disk->bb->count)
-		return false;
-
 	return true;
 }
 #endif
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index da10554..eac5f93 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -174,9 +174,17 @@ static long pmem_direct_access(struct block_device *bdev,
 	struct pmem_device *pmem = bdev->bd_disk->private_data;
 	resource_size_t offset = sector * 512 + pmem->data_offset;
 
+	if (unlikely(is_bad_pmem(&pmem->bb, sector, dax->size)))
+		return -EIO;
 	dax->addr = pmem->virt_addr + offset;
 	dax->pfn = phys_to_pfn_t(pmem->phys_addr + offset, pmem->pfn_flags);
 
+	/*
+	 * If badblocks are present, limit known good range to the
+	 * requested range.
+	 */
+	if (unlikely(pmem->bb.count))
+		return dax->size;
 	return pmem->size - pmem->pfn_pad - offset;
 }
 
-- 
2.5.5

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

  parent reply	other threads:[~2016-03-24 23:18 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-24 23:17 [PATCH 0/5] dax: handling of media errors Vishal Verma
2016-03-24 23:17 ` Vishal Verma
2016-03-24 23:17 ` Vishal Verma
2016-03-24 23:17 ` Vishal Verma
2016-03-24 23:17 ` [PATCH 1/5] block, dax: pass blk_dax_ctl through to drivers Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:17 ` [PATCH 2/5] dax: fallback from pmd to pte on error Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:17 ` Vishal Verma [this message]
2016-03-24 23:17   ` [PATCH 3/5] dax: enable dax in the presence of known media errors (badblocks) Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:23   ` Verma, Vishal L
2016-03-24 23:23     ` Verma, Vishal L
2016-03-24 23:23     ` Verma, Vishal L
2016-03-24 23:17 ` [PATCH 4/5] dax: use sb_issue_zerout instead of calling dax_clear_sectors Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-25 10:44   ` Christoph Hellwig
2016-03-25 10:44     ` Christoph Hellwig
2016-03-25 21:01     ` Verma, Vishal L
2016-03-25 21:01       ` Verma, Vishal L
2016-03-25 18:47   ` Dan Williams
2016-03-25 18:47     ` Dan Williams
2016-03-25 18:47     ` Dan Williams
2016-03-25 21:03     ` Verma, Vishal L
2016-03-25 21:03       ` Verma, Vishal L
2016-03-25 21:03       ` Verma, Vishal L
2016-03-25 21:20       ` Dan Williams
2016-03-25 21:20         ` Dan Williams
2016-03-25 21:20         ` Dan Williams
2016-03-28 20:01         ` Verma, Vishal L
2016-03-28 20:01           ` Verma, Vishal L
2016-03-28 20:01           ` Verma, Vishal L
2016-03-28 23:34           ` Dan Williams
2016-03-28 23:34             ` Dan Williams
2016-03-28 23:34             ` Dan Williams
2016-03-28 23:34             ` Dan Williams
2016-03-29 18:57             ` Verma, Vishal L
2016-03-29 18:57               ` Verma, Vishal L
2016-03-29 18:57               ` Verma, Vishal L
2016-03-29 18:57               ` Verma, Vishal L
2016-03-29 19:37               ` Dan Williams
2016-03-29 19:37                 ` Dan Williams
2016-03-29 19:37                 ` Dan Williams
2016-03-29 19:37                 ` Dan Williams
2016-03-30  7:49               ` Jan Kara
2016-03-30  7:49                 ` Jan Kara
2016-03-30  7:49                 ` Jan Kara
2016-03-30  7:49                 ` Jan Kara
2016-03-30  7:49                 ` Jan Kara
2016-04-01 19:17                 ` Verma, Vishal L
2016-04-01 19:17                   ` Verma, Vishal L
2016-04-01 19:17                   ` Verma, Vishal L
2016-04-04 12:09                   ` Jan Kara
2016-04-04 12:09                     ` Jan Kara
2016-04-04 12:09                     ` Jan Kara
2016-04-04 12:09                     ` Jan Kara
2016-04-04 12:09                     ` Jan Kara
2016-03-24 23:17 ` [PATCH 5/5] dax: handle media errors in dax_do_io Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-24 23:17   ` Vishal Verma
2016-03-25 10:45   ` Christoph Hellwig
2016-03-25 10:45     ` Christoph Hellwig
2016-03-25 10:45     ` Christoph Hellwig
2016-03-25 20:59     ` Verma, Vishal L
2016-03-25 20:59       ` Verma, Vishal L
2016-03-25 21:42       ` Dan Williams
2016-03-25 21:42         ` Dan Williams
2016-03-25 22:36         ` Verma, Vishal L
2016-03-25 22:36           ` Verma, Vishal L
2016-03-25 22:36           ` Verma, Vishal L
2016-03-26 16:53         ` hch
2016-03-26 16:53           ` hch

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=1458861450-17705-4-git-send-email-vishal.l.verma@intel.com \
    --to=vishal.l.verma@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@fb.com \
    --cc=david@fromorbit.com \
    --cc=jack@suse.cz \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-nvdimm@lists.01.org \
    --cc=matthew.r.wilcox@intel.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xfs@oss.sgi.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.