search for: bitmap_set_blk

Displaying 20 results from an estimated 27 matches for "bitmap_set_blk".

Did you mean: bitmap_get_blk
2019 Jan 01
0
[PATCH nbdkit v2 3/4] cache: Implement LRU structure.
...mp;bm); + + lru_free (); } int @@ -128,6 +133,9 @@ blk_set_size (uint64_t new_size) return -1; } + if (lru_set_size (new_size) == -1) + return -1; + return 0; } @@ -163,6 +171,7 @@ blk_read (struct nbdkit_next_ops *next_ops, void *nxdata, return -1; } bitmap_set_blk (&bm, blknum, BLOCK_CLEAN); + lru_set_recently_accessed (blknum); } return 0; } @@ -172,6 +181,7 @@ blk_read (struct nbdkit_next_ops *next_ops, void *nxdata, nbdkit_error ("pread: %m"); return -1; } + lru_set_recently_accessed (blknum); ret...
2019 Jan 03
0
[PATCH nbdkit v4 1/2] cache: Implement LRU structure.
...mp;bm); + + lru_free (); } int @@ -128,6 +133,9 @@ blk_set_size (uint64_t new_size) return -1; } + if (lru_set_size (new_size) == -1) + return -1; + return 0; } @@ -163,6 +171,7 @@ blk_read (struct nbdkit_next_ops *next_ops, void *nxdata, return -1; } bitmap_set_blk (&bm, blknum, BLOCK_CLEAN); + lru_set_recently_accessed (blknum); } return 0; } @@ -172,6 +181,7 @@ blk_read (struct nbdkit_next_ops *next_ops, void *nxdata, nbdkit_error ("pread: %m"); return -1; } + lru_set_recently_accessed (blknum); ret...
2018 Dec 02
2
[PATCH nbdkit v2] common: Move shared bitmap code to a common library.
This is exactly the same as v1: https://www.redhat.com/archives/libguestfs/2018-December/msg00004.html except that it now frees the bitmap on unload (which the old code did not - there was always a memory leak). Rich.
2018 Dec 01
0
[PATCH nbdkit] common: Move shared bitmap code to a common library.
...in bytes. */ +static inline unsigned +bitmap_get (const struct bitmap *bm, uint64_t offset, unsigned default_) +{ + return bitmap_get_blk (bm, offset / bm->blksize, default_); +} + +/* Set the bit(s) associated with the given block. + * If out of range, it is ignored. + */ +static inline void +bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) +{ + uint64_t blk_offset = blk / (8 / bm->bpb); + unsigned blk_bit = bm->bpb * (blk % (8 / bm->bpb)); + + if (blk_offset >= bm->size) { + nbdkit_debug ("bitmap_set: block number is out of range"); + return; + } +...
2018 Dec 02
0
[PATCH nbdkit v2] common: Move shared bitmap code to a common library.
...in bytes. */ +static inline unsigned +bitmap_get (const struct bitmap *bm, uint64_t offset, unsigned default_) +{ + return bitmap_get_blk (bm, offset / bm->blksize, default_); +} + +/* Set the bit(s) associated with the given block. + * If out of range, it is ignored. + */ +static inline void +bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) +{ + uint64_t blk_offset = blk / (8 / bm->bpb); + unsigned blk_bit = bm->bpb * (blk % (8 / bm->bpb)); + + if (blk_offset >= bm->size) { + nbdkit_debug ("bitmap_set: block number is out of range"); + return; + } +...
2018 Dec 03
0
[PATCH nbdkit v3] common: Move shared bitmap code to a common library.
...in bytes. */ +static inline unsigned +bitmap_get (const struct bitmap *bm, uint64_t offset, unsigned default_) +{ + return bitmap_get_blk (bm, offset / bm->blksize, default_); +} + +/* Set the bit(s) associated with the given block. + * If out of range, it is ignored. + */ +static inline void +bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) +{ + BITMAP_OFFSET_BIT_MASK (bm, blk); + + if (blk_offset >= bm->size) { + nbdkit_debug ("bitmap_set: block number is out of range"); + return; + } + + bm->bitmap[blk_offset] &= ~mask; + bm->bitmap[blk_offset]...
2018 Dec 01
2
[PATCH nbdkit] common: Move shared bitmap code to a common library.
I have some patches I'm working on to fix the cache filter. However this is a prelude. It should be simply pure refactoring. All tests pass still. Rich.
2018 Dec 03
3
[PATCH nbdkit v3] common: Move shared bitmap code to a common library.
v2: https://www.redhat.com/archives/libguestfs/2018-December/msg00039.html v2 -> v3: - Fix all the issues raised in Eric's review. - Precompute some numbers to make the calculations easier. - Calculations now use bitshifts and masks in preference to division and modulo. - Clear existing bits before setting (which fixes a bug in the cache filter). Rich.
2018 Dec 03
1
Re: [PATCH nbdkit v2] common: Move shared bitmap code to a common library.
...;< and >> instead of / and % aid the compiler, since we know we have powers of 2 based on initialization, but the compiler might not see it locally? > +/* Set the bit(s) associated with the given block. > + * If out of range, it is ignored. > + */ > +static inline void > +bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) > +{ > + uint64_t blk_offset = blk / (8 / bm->bpb); > + unsigned blk_bit = bm->bpb * (blk % (8 / bm->bpb)); > + > + if (blk_offset >= bm->size) { > + nbdkit_debug ("bitmap_set: block number is out of ran...
2019 Jan 03
3
[PATCH nbdkit v3 0/2] cache: Implement cache-max-size and method of reclaiming space from the cache.
Patch 1 is the same as last time, except for a minor comment fix. Patch 2 should address everything that Eric mentioned in his review, and has been retested. Rich.
2018 Dec 28
12
[PATCH nbdkit 0/9] cache: Implement cache-max-size and method of reclaiming space from the cache.
This patch series enhances the cache filter in a few ways, primarily adding a "cache-on-read" feature (similar to qemu's copyonread); and adding the ability to limit the cache size and the antecedent of that which is having a method to reclaim cache blocks. As the cache is stored as a sparse temporary file, reclaiming cache blocks simply means punching holes in the temporary file.
2019 Jan 01
3
[PATCH nbdkit] include: Annotate function parameters with attribute((nonnull)).
Should we use attribute((nonnull)) at all? There's a very interesting history of this in libvirt -- try looking at commit eefb881 plus the commits referencing eefb881 -- but it does seem to work for me using recent GCC and Clang. I only did a few functions because annotating them gets old quickly... Rich.
2019 Jan 01
7
[PATCH nbdkit v2 0/4] cache: Implement cache-max-size etc.
These are essentially identical to what was previously posted as patches 6/9 through 9/9 here: https://www.redhat.com/archives/libguestfs/2018-December/msg00145.html except that it has been rebased onto the current git master and retested thoroughly. Rich.
2019 Jan 03
4
[PATCH nbdkit v4 0/2] cache: Implement cache-max-size and method of
v3 was broken by a bad rebase, so let's forget about that one. Compared to v2: - Patch 1 is the same except for a minor comment change. - Patch 2 splits the reclaim code into a separate file (filters/cache/reclaim.c) - Addressed Eric's comments from his review of v2. - Retested on Linux and FreeBSD.
2019 Jan 02
0
[PATCH nbdkit v2 1/2] Annotate internal function parameters with attribute((nonnull)).
...bm, offset / bm->blksize, default_); @@ -148,7 +149,7 @@ bitmap_get (const struct bitmap *bm, uint64_t offset, unsigned default_) /* Set the bit(s) associated with the given block. * If out of range, it is ignored. */ -static inline void +static inline void __attribute__((__nonnull__ (1))) bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) { BITMAP_OFFSET_BIT_MASK (bm, blk); @@ -163,7 +164,7 @@ bitmap_set_blk (const struct bitmap *bm, uint64_t blk, unsigned v) } /* As above bit works with virtual disk offset in bytes. */ -static inline void +static inline void __attribute__(...
2019 Jan 04
5
[PATCH nbdkit v5 3/3] cache: Implement cache-max-size and cache space reclaim.
v4: https://www.redhat.com/archives/libguestfs/2019-January/msg00032.html v5: - Now we set the block size at run time. I'd like to say that I was able to test this change, but unfortunately I couldn't find any easy way to create a filesystem on x86-64 with a block size > 4K. Ext4 doesn't support it at all, and XFS doesn't support block size > page size (and I
2019 Jan 02
4
[PATCH nbdkit v2 0/2] Use of attribute(()).
v1 was here: https://www.redhat.com/archives/libguestfs/2019-January/msg00008.html In v2 I have provided two patches: The first patch extends attribute((nonnull)) to most internal functions, but not to the external API. The second patch uses a macro so that attribute((format)) is only used in the public API on GCC or Clang. At least in theory these headers could be used by a C compiler which
2019 Jan 03
1
Re: [PATCH nbdkit v2 3/4] cache: Implement LRU structure.
...+ /* If the block is already set in the first bitmap, don't need to do > + * anything. > + */ > + if (bitmap_get_blk (&bm[0], blknum, false)) > + return; And this implements the latter (the most recent N blocks accessed, not the most recent N accesses). > + > + bitmap_set_blk (&bm[0], blknum, true); > + c0++; > + > + /* If we've reached N/2 then we need to swap over the bitmaps. */ > + if (c0 >= N/2) { > + struct bitmap tmp; > + > + tmp = bm[0]; > + bm[0] = bm[1]; > + bm[1] = tmp; > + c1 = c0; > + > + b...
2018 Dec 28
0
[PATCH nbdkit 2/9] cache: Add cache-on-read mode.
...lock %" PRIu64 + " (offset %" PRIu64 ")", + blknum, (uint64_t) offset); + + if (pwrite (fd, block, BLKSIZE, offset) == -1) { + *err = errno; + nbdkit_error ("pwrite: %m"); + return -1; + } + bitmap_set_blk (&bm, blknum, BLOCK_CLEAN); + } + return 0; + } + else { /* Read cache. */ if (pread (fd, block, BLKSIZE, offset) == -1) { *err = errno; nbdkit_error ("pread: %m"); diff --git a/tests/Makefile.am b/tests/Makefile.am index 79b723a..ccd5...
2019 Jan 04
0
[PATCH nbdkit v5 3/3] cache: Implement cache-max-size and cache space reclaim.
..., block, blksize, offset) == -1) { *err = errno; nbdkit_error ("pwrite: %m"); return -1; } - if (next_ops->pwrite (nxdata, block, BLKSIZE, offset, flags, err) == -1) + if (next_ops->pwrite (nxdata, block, blksize, offset, flags, err) == -1) return -1; bitmap_set_blk (&bm, blknum, BLOCK_CLEAN); @@ -222,12 +244,14 @@ blk_write (struct nbdkit_next_ops *next_ops, void *nxdata, (cache_mode == CACHE_MODE_WRITEBACK && (flags & NBDKIT_FLAG_FUA))) return blk_writethrough (next_ops, nxdata, blknum, block, flags, err); - offset = blknum * B...