lkml.org 
[lkml]   [2010]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] udf: use ext2_find_next_bit
    Date
    Use ext2_find_next_bit (generic_find_next_le_bit) to find the set bit
    in little endian bitmap region.

    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Cc: Jan Kara <jack@suse.cz>
    ---
    fs/udf/balloc.c | 50 ++------------------------------------------------
    1 files changed, 2 insertions(+), 48 deletions(-)

    diff --git a/fs/udf/balloc.c b/fs/udf/balloc.c
    index 82372e3..05347f4 100644
    --- a/fs/udf/balloc.c
    +++ b/fs/udf/balloc.c
    @@ -31,55 +31,9 @@
    #define udf_clear_bit(nr, addr) ext2_clear_bit(nr, addr)
    #define udf_set_bit(nr, addr) ext2_set_bit(nr, addr)
    #define udf_test_bit(nr, addr) ext2_test_bit(nr, addr)
    -#define udf_find_first_one_bit(addr, size) find_first_one_bit(addr, size)
    +#define udf_find_first_one_bit(addr, size) ext2_find_first_bit(addr, size)
    #define udf_find_next_one_bit(addr, size, offset) \
    - find_next_one_bit(addr, size, offset)
    -
    -#define leBPL_to_cpup(x) leNUM_to_cpup(BITS_PER_LONG, x)
    -#define leNUM_to_cpup(x, y) xleNUM_to_cpup(x, y)
    -#define xleNUM_to_cpup(x, y) (le ## x ## _to_cpup(y))
    -#define uintBPL_t uint(BITS_PER_LONG)
    -#define uint(x) xuint(x)
    -#define xuint(x) __le ## x
    -
    -static inline int find_next_one_bit(void *addr, int size, int offset)
    -{
    - uintBPL_t *p = ((uintBPL_t *) addr) + (offset / BITS_PER_LONG);
    - int result = offset & ~(BITS_PER_LONG - 1);
    - unsigned long tmp;
    -
    - if (offset >= size)
    - return size;
    - size -= result;
    - offset &= (BITS_PER_LONG - 1);
    - if (offset) {
    - tmp = leBPL_to_cpup(p++);
    - tmp &= ~0UL << offset;
    - if (size < BITS_PER_LONG)
    - goto found_first;
    - if (tmp)
    - goto found_middle;
    - size -= BITS_PER_LONG;
    - result += BITS_PER_LONG;
    - }
    - while (size & ~(BITS_PER_LONG - 1)) {
    - tmp = leBPL_to_cpup(p++);
    - if (tmp)
    - goto found_middle;
    - result += BITS_PER_LONG;
    - size -= BITS_PER_LONG;
    - }
    - if (!size)
    - return result;
    - tmp = leBPL_to_cpup(p);
    -found_first:
    - tmp &= ~0UL >> (BITS_PER_LONG - size);
    -found_middle:
    - return result + ffz(~tmp);
    -}
    -
    -#define find_first_one_bit(addr, size)\
    - find_next_one_bit((addr), (size), 0)
    + ext2_find_next_bit(addr, size, offset)

    static int read_block_bitmap(struct super_block *sb,
    struct udf_bitmap *bitmap, unsigned int block,
    --
    1.6.0.6


    \
     
     \ /
      Last update: 2010-02-23 15:19    [W:0.023 / U:0.500 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site