aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/blk-integrity.c2
-rw-r--r--block/blk-merge.c2
-rw-r--r--include/linux/scatterlist.h16
3 files changed, 18 insertions, 2 deletions
diff --git a/block/blk-integrity.c b/block/blk-integrity.c
index dabd221857e1..03cf7179e8ef 100644
--- a/block/blk-integrity.c
+++ b/block/blk-integrity.c
@@ -110,7 +110,7 @@ new_segment:
110 if (!sg) 110 if (!sg)
111 sg = sglist; 111 sg = sglist;
112 else { 112 else {
113 sg->page_link &= ~0x02; 113 sg_unmark_end(sg);
114 sg = sg_next(sg); 114 sg = sg_next(sg);
115 } 115 }
116 116
diff --git a/block/blk-merge.c b/block/blk-merge.c
index 936a110de0b9..5f2448253797 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -143,7 +143,7 @@ new_segment:
143 * termination bit to avoid doing a full 143 * termination bit to avoid doing a full
144 * sg_init_table() in drivers for each command. 144 * sg_init_table() in drivers for each command.
145 */ 145 */
146 (*sg)->page_link &= ~0x02; 146 sg_unmark_end(*sg);
147 *sg = sg_next(*sg); 147 *sg = sg_next(*sg);
148 } 148 }
149 149
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
index 2d8bdaef9611..bfc47e0de81c 100644
--- a/include/linux/scatterlist.h
+++ b/include/linux/scatterlist.h
@@ -172,6 +172,22 @@ static inline void sg_mark_end(struct scatterlist *sg)
172} 172}
173 173
174/** 174/**
175 * sg_unmark_end - Undo setting the end of the scatterlist
176 * @sg: SG entryScatterlist
177 *
178 * Description:
179 * Removes the termination marker from the given entry of the scatterlist.
180 *
181 **/
182static inline void sg_unmark_end(struct scatterlist *sg)
183{
184#ifdef CONFIG_DEBUG_SG
185 BUG_ON(sg->sg_magic != SG_MAGIC);
186#endif
187 sg->page_link &= ~0x02;
188}
189
190/**
175 * sg_phys - Return physical address of an sg entry 191 * sg_phys - Return physical address of an sg entry
176 * @sg: SG entry 192 * @sg: SG entry
177 * 193 *