From: Johannes Thumshirn <jthumshirn@suse.de>
To: Christoph Hellwig <hch@lst.de>, Sagi Grimberg <sagi@grimberg.me>,
Keith Busch <keith.busch@intel.com>
Cc: Hannes Reinecke <hare@suse.de>, Max Gurtovoy <maxg@mellanox.com>,
Linux NVMe Mailinglist <linux-nvme@lists.infradead.org>,
Linux Kernel Mailinglist <linux-kernel@vger.kernel.org>,
Johannes Thumshirn <jthumshirn@suse.de>
Subject: [PATCH v6 01/10] scatterlist: add sg_zeroout_area() helper
Date: Wed, 7 Jun 2017 11:45:28 +0200 [thread overview]
Message-ID: <20170607094536.32419-2-jthumshirn@suse.de> (raw)
In-Reply-To: <20170607094536.32419-1-jthumshirn@suse.de>
The sg_zeroout_area() helper is used to zero fill an area in a SG
list.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
---
include/linux/scatterlist.h | 3 +++
lib/scatterlist.c | 37 +++++++++++++++++++++++++++++++++++++
2 files changed, 40 insertions(+)
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index cb3c8fe6acd7..a38ce9f4e78a 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -279,6 +279,9 @@ size_t sg_pcopy_from_buffer(struct scatterlist *sgl, unsigned int nents,
size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents,
void *buf, size_t buflen, off_t skip);
+size_t sg_zeroout_area(struct scatterlist *sgl, unsigned int nents,
+ size_t buflen, off_t skip);
+
/*
* Maximum number of entries that will be allocated in one piece, if
* a list larger than this is required then chaining will be utilized.
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
index c6cf82242d65..584f50c94fce 100644
--- a/lib/scatterlist.c
+++ b/lib/scatterlist.c
@@ -751,3 +751,40 @@ size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents,
return sg_copy_buffer(sgl, nents, buf, buflen, skip, true);
}
EXPORT_SYMBOL(sg_pcopy_to_buffer);
+
+/**
+ * sg_zeroout_area - Zero-out a part of a SG list
+ * @sgl: The SG list
+ * @nents: Number of SG entries
+ * @buflen: The number of bytes to zero out
+ * @skip: Number of bytes to skip before zeroing
+ *
+ * Returns the number of bytes zeroed.
+ *
+ **/
+size_t sg_zeroout_area(struct scatterlist *sgl, unsigned int nents,
+ size_t buflen, off_t skip)
+{
+ unsigned int offset = 0;
+ struct sg_mapping_iter miter;
+ unsigned int sg_flags = SG_MITER_ATOMIC | SG_MITER_TO_SG;
+
+ sg_miter_start(&miter, sgl, nents, sg_flags);
+
+ if (!sg_miter_skip(&miter, skip))
+ return false;
+
+ while ((offset < buflen) && sg_miter_next(&miter)) {
+ unsigned int len;
+
+ len = min(miter.length, buflen - offset);
+ memset(miter.addr, 0, len);
+
+ offset += len;
+ }
+
+ sg_miter_stop(&miter);
+
+ return offset;
+}
+EXPORT_SYMBOL(sg_zeroout_area);
--
2.12.3
next prev parent reply other threads:[~2017-06-07 9:49 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-07 9:45 [PATCH v6 00/10] Implement NVMe Namespace Descriptor Identification Johannes Thumshirn
2017-06-07 9:45 ` Johannes Thumshirn [this message]
2017-06-07 9:49 ` [PATCH v6 01/10] scatterlist: add sg_zeroout_area() helper Sagi Grimberg
2017-06-08 7:41 ` Christoph Hellwig
2017-06-08 7:46 ` Johannes Thumshirn
2017-06-07 9:45 ` [PATCH v6 02/10] nvmet: use NVME_IDENTIFY_DATA_SIZE Johannes Thumshirn
2017-06-08 7:42 ` Christoph Hellwig
2017-06-07 9:45 ` [PATCH v6 03/10] nvme: introduce NVMe Namespace Identification Descriptor structures Johannes Thumshirn
2017-06-08 7:42 ` Christoph Hellwig
2017-06-07 9:45 ` [PATCH v6 04/10] nvme: rename uuid to nguid in nvme_ns Johannes Thumshirn
2017-06-07 9:45 ` [PATCH v6 05/10] nvmet: implement namespace identify descriptor list Johannes Thumshirn
2017-06-07 9:50 ` Sagi Grimberg
2017-06-08 7:44 ` Christoph Hellwig
2017-06-08 7:49 ` Johannes Thumshirn
2017-06-08 7:52 ` Christoph Hellwig
2017-06-08 7:55 ` Johannes Thumshirn
2017-06-08 7:57 ` Christoph Hellwig
[not found] ` <MWHPR04MB10088151BCB7D7A209A739E686CD0@MWHPR04MB1008.namprd04.prod.outlook.com>
2017-06-12 16:19 ` Christoph Hellwig
2017-06-07 9:45 ` [PATCH v6 06/10] nvmet: add uuid field to nvme_ns and populate via configfs Johannes Thumshirn
2017-06-08 7:44 ` Christoph Hellwig
2017-06-07 9:45 ` [PATCH v6 07/10] nvme: get list of namespace descriptors Johannes Thumshirn
2017-06-08 7:46 ` Christoph Hellwig
2017-06-07 9:45 ` [PATCH v6 08/10] nvme: provide UUID value to userspace Johannes Thumshirn
2017-06-07 9:45 ` [PATCH v6 09/10] nvmet: allow overriding the NVMe VS via configfs Johannes Thumshirn
2017-06-08 7:47 ` Christoph Hellwig
2017-06-15 16:31 ` [PATCH v6 00/10] Implement NVMe Namespace Descriptor Identification Christoph Hellwig
2017-06-16 8:20 ` Johannes Thumshirn
2017-06-16 9:40 ` Christoph Hellwig
2017-06-16 9:48 ` Johannes Thumshirn
2017-06-16 9:58 ` Christoph Hellwig
2017-06-16 9:59 ` Johannes Thumshirn
2017-06-16 13:28 ` Linus Torvalds
2017-06-22 0:06 ` Eric W. Biederman
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=20170607094536.32419-2-jthumshirn@suse.de \
--to=jthumshirn@suse.de \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=keith.busch@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=maxg@mellanox.com \
--cc=sagi@grimberg.me \
/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
all inboxes | Powered by JetHome®