void ext3_free_data (handle_t * handle, struct inode * inode, struct buffer_head * this_bh, u32 * first, u32 * last);
We are freeing all blocks refered from that array (numbers are stored as little-endian 32-bit) and updating inode->i_blocks appropriately.
We accumulate contiguous runs of blocks to free. Conveniently, if these blocks are contiguous then releasing them at one time will only affect one or two bitmap blocks (+ group descriptor(s) and superblock) and we won't actually use a lot of journal space.
this_bh will be NULL if first and last point into the inode's direct block pointers.