[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations
From: |
Matthew Wilcox |
Subject: |
Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations |
Date: |
Fri, 15 Dec 2017 11:22:03 -0800 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Fri, Dec 15, 2017 at 10:49:15AM -0800, Matthew Wilcox wrote:
> Here's the API I'm looking at right now. The user need take no lock;
> the locking (spinlock) is handled internally to the implementation.
I looked at the API some more and found some flaws:
- how does xbit_alloc communicate back which bit it allocated?
- What if xbit_find_set() is called on a completely empty array with
a range of 0, ULONG_MAX -- there's no invalid number to return.
- xbit_clear() can't return an error. Neither can xbit_zero().
- Need to add __must_check to various return values to discourage sloppy
programming
So I modify the proposed API we compete with thusly:
bool xbit_test(struct xbitmap *, unsigned long bit);
int __must_check xbit_set(struct xbitmap *, unsigned long bit, gfp_t);
void xbit_clear(struct xbitmap *, unsigned long bit);
int __must_check xbit_alloc(struct xbitmap *, unsigned long *bit, gfp_t);
int __must_check xbit_fill(struct xbitmap *, unsigned long start,
unsigned long nbits, gfp_t);
void xbit_zero(struct xbitmap *, unsigned long start, unsigned long nbits);
int __must_check xbit_alloc_range(struct xbitmap *, unsigned long *bit,
unsigned long nbits, gfp_t);
bool xbit_find_clear(struct xbitmap *, unsigned long *start, unsigned long max);
bool xbit_find_set(struct xbitmap *, unsigned long *start, unsigned long max);
(I'm a little sceptical about the API accepting 'max' for the find
functions and 'nbits' in the fill/zero/alloc_range functions, but I think
that matches how people want to use it, and it matches how bitmap.h works)
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, (continued)
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Wei Wang, 2017/12/13
- Re: [Qemu-devel] [virtio-dev] Re: [PATCH v19 3/7] xbitmap: add more operations, Wei Wang, 2017/12/14
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Tetsuo Handa, 2017/12/14
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/14
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Tetsuo Handa, 2017/12/15
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Michael S. Tsirkin, 2017/12/15
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Tetsuo Handa, 2017/12/15
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/16
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Tetsuo Handa, 2017/12/16
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/15
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations,
Matthew Wilcox <=
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Wang, Wei W, 2017/12/17
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/17
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Wei Wang, 2017/12/17
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/17
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Wei Wang, 2017/12/16
- Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/14
Re: [Qemu-devel] [PATCH v19 3/7] xbitmap: add more operations, Matthew Wilcox, 2017/12/15