Re: [PATCH] rbd: flush dcache after zeroing page data

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Josh Durgin <josh.durgin@xxxxxxxxxxx>

On 05/23/2013 05:11 AM, Alex Elder wrote:
Neither zero_bio_chain() nor zero_pages() contains a call to flush
caches after zeroing a portion of a page.  This can cause problems
on architectures that have caches that allow virtual address
aliasing.

This resolves:
     http://tracker.ceph.com/issues/4777

Signed-off-by: Alex Elder <elder@xxxxxxxxxxx>
---
  drivers/block/rbd.c |    2 ++
  1 file changed, 2 insertions(+)

diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 6e377a0..f860dd6 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -1124,6 +1124,7 @@ static void zero_bio_chain(struct bio *chain, int
start_ofs)
  				buf = bvec_kmap_irq(bv, &flags);
  				memset(buf + remainder, 0,
  				       bv->bv_len - remainder);
+				flush_dcache_page(bv->bv_page);
  				bvec_kunmap_irq(buf, &flags);
  			}
  			pos += bv->bv_len;
@@ -1156,6 +1157,7 @@ static void zero_pages(struct page **pages, u64
offset, u64 end)
  		local_irq_save(flags);
  		kaddr = kmap_atomic(*page);
  		memset(kaddr + page_offset, 0, length);
+		flush_dcache_page(*page);
  		kunmap_atomic(kaddr);
  		local_irq_restore(flags);


--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux