]> sourceware.org Git - lvm2.git/commitdiff
bcache: add invalidate_bytes function
authorDavid Teigland <teigland@redhat.com>
Tue, 26 Nov 2019 21:46:49 +0000 (15:46 -0600)
committerDavid Teigland <teigland@redhat.com>
Tue, 26 Nov 2019 22:52:28 +0000 (16:52 -0600)
lib/device/bcache-utils.c
lib/device/bcache.h
lib/label/label.c
lib/label/label.h

index 25535547c2cde010a5e6285f3f091c5bf20251af..cf741445779b3e630d70ff45fa5f3d4204f54a82 100644 (file)
@@ -79,6 +79,21 @@ bool bcache_read_bytes(struct bcache *cache, int fd, uint64_t start, size_t len,
        return true;
 }
 
+bool bcache_invalidate_bytes(struct bcache *cache, int fd, uint64_t start, size_t len)
+{
+       block_address bb, be;
+       bool result = true;
+
+       byte_range_to_block_range(cache, start, len, &bb, &be);
+
+       for (; bb != be; bb++) {
+               if (!bcache_invalidate(cache, fd, bb))
+                       result = false;
+       }
+
+       return result;
+}
+
 //----------------------------------------------------------------
 
 // Writing bytes and zeroing bytes are very similar, so we factor out
index 7622fd354f12d7a671708fbf0c33ed69a739a30d..4ef044c74edb261df660f508fb99026c0e1e90de 100644 (file)
@@ -163,6 +163,7 @@ bool bcache_read_bytes(struct bcache *cache, int fd, uint64_t start, size_t len,
 bool bcache_write_bytes(struct bcache *cache, int fd, uint64_t start, size_t len, void *data);
 bool bcache_zero_bytes(struct bcache *cache, int fd, uint64_t start, size_t len);
 bool bcache_set_bytes(struct bcache *cache, int fd, uint64_t start, size_t len, uint8_t val);
+bool bcache_invalidate_bytes(struct bcache *cache, int fd, uint64_t start, size_t len);
 
 void bcache_set_last_byte(struct bcache *cache, int fd, uint64_t offset, int sector_size);
 void bcache_unset_last_byte(struct bcache *cache, int fd);
index 05986cbe7086adfb9241e9e93cd28a367d4e2441..64b7ca097f757d7dedc3a1dbaf4dce77dff90b61 100644 (file)
@@ -1464,6 +1464,11 @@ bool dev_write_bytes(struct device *dev, uint64_t start, size_t len, void *data)
        return true;
 }
 
+bool dev_invalidate_bytes(struct device *dev, uint64_t start, size_t len)
+{
+       return bcache_invalidate_bytes(scan_bcache, dev->bcache_fd, start, len);
+}
+
 bool dev_write_zeros(struct device *dev, uint64_t start, size_t len)
 {
        if (test_mode())
index f06b7df6398f825c156afc1ba1a88ec1377ddf2f..33a91fa6ced6db13e0391fd196bbd682c8dccc56 100644 (file)
@@ -126,6 +126,7 @@ bool dev_read_bytes(struct device *dev, uint64_t start, size_t len, void *data);
 bool dev_write_bytes(struct device *dev, uint64_t start, size_t len, void *data);
 bool dev_write_zeros(struct device *dev, uint64_t start, size_t len);
 bool dev_set_bytes(struct device *dev, uint64_t start, size_t len, uint8_t val);
+bool dev_invalidate_bytes(struct device *dev, uint64_t start, size_t len);
 void dev_set_last_byte(struct device *dev, uint64_t offset);
 void dev_unset_last_byte(struct device *dev);
 
This page took 0.04469 seconds and 5 git commands to generate.