X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_bitmap.c;h=481558041ddfe5b80f708215c9c82b9e10aaedfd;hp=b2542660b22a5ee12c86a662cedbe45c7abec3af;hb=9d9b662225f9b3684bb4ebd3646216f3ab190ed9;hpb=7620f7d1207e72dc6b3c58bc452000b9ec82b57b diff --git a/yaffs_bitmap.c b/yaffs_bitmap.c index b254266..4815580 100644 --- a/yaffs_bitmap.c +++ b/yaffs_bitmap.c @@ -1,8 +1,7 @@ /* * YAFFS: Yet Another Flash File System. A NAND-flash specific file system. * - * Copyright (C) 2002-2010 Aleph One Ltd. - * for Toby Churchill Ltd and Brightstar Engineering + * Copyright (C) 2002-2018 Aleph One Ltd. * * Created by Charles Manning * @@ -17,13 +16,14 @@ * Chunk bitmap manipulations */ -static Y_INLINE u8 *yaffs_block_bits(struct yaffs_dev *dev, int blk) +static inline u8 *yaffs_block_bits(struct yaffs_dev *dev, int blk) { - if (blk < dev->internal_start_block || blk > dev->internal_end_block) { - T(YAFFS_TRACE_ERROR, - (TSTR("**>> yaffs: BlockBits block %d is not valid" TENDSTR), - blk)); - YBUG(); + if (blk < (int)dev->internal_start_block || + blk > (int)dev->internal_end_block) { + yaffs_trace(YAFFS_TRACE_ERROR, + "BlockBits block %d is not valid", + blk); + BUG(); } return dev->chunk_bits + (dev->chunk_bit_stride * (blk - dev->internal_start_block)); @@ -31,12 +31,13 @@ static Y_INLINE u8 *yaffs_block_bits(struct yaffs_dev *dev, int blk) void yaffs_verify_chunk_bit_id(struct yaffs_dev *dev, int blk, int chunk) { - if (blk < dev->internal_start_block || blk > dev->internal_end_block || - chunk < 0 || chunk >= dev->param.chunks_per_block) { - T(YAFFS_TRACE_ERROR, - (TSTR("**>> yaffs: Chunk Id (%d:%d) invalid" TENDSTR), - blk, chunk)); - YBUG(); + if (blk < (int)dev->internal_start_block || + blk > (int)dev->internal_end_block || + chunk < 0 || chunk >= (int)dev->param.chunks_per_block) { + yaffs_trace(YAFFS_TRACE_ERROR, + "Chunk Id (%d:%d) invalid", + blk, chunk); + BUG(); } } @@ -52,7 +53,6 @@ void yaffs_clear_chunk_bit(struct yaffs_dev *dev, int blk, int chunk) u8 *blk_bits = yaffs_block_bits(dev, blk); yaffs_verify_chunk_bit_id(dev, blk, chunk); - blk_bits[chunk / 8] &= ~(1 << (chunk & 7)); } @@ -61,15 +61,14 @@ void yaffs_set_chunk_bit(struct yaffs_dev *dev, int blk, int chunk) u8 *blk_bits = yaffs_block_bits(dev, blk); yaffs_verify_chunk_bit_id(dev, blk, chunk); - blk_bits[chunk / 8] |= (1 << (chunk & 7)); } int yaffs_check_chunk_bit(struct yaffs_dev *dev, int blk, int chunk) { u8 *blk_bits = yaffs_block_bits(dev, blk); - yaffs_verify_chunk_bit_id(dev, blk, chunk); + yaffs_verify_chunk_bit_id(dev, blk, chunk); return (blk_bits[chunk / 8] & (1 << (chunk & 7))) ? 1 : 0; } @@ -77,6 +76,7 @@ int yaffs_still_some_chunks(struct yaffs_dev *dev, int blk) { u8 *blk_bits = yaffs_block_bits(dev, blk); int i; + for (i = 0; i < dev->chunk_bit_stride; i++) { if (*blk_bits) return 1;