Hi, all
when I read the source code of function do_mpage_readpage(struct bio
*bio, struct page *page, unsigned nr_pages,
                sector_t *last_block_in_bio, struct buffer_head *map_bh,
                unsigned long *first_logical_block, get_block_t get_block)
, there are following codes I can not understand:

        block_in_file = (sector_t)page->index << (PAGE_CACHE_SHIFT - blkbits);
        last_block = block_in_file + nr_pages * blocks_per_page;
        last_block_in_file = (i_size_read(inode) + blocksize - 1) >> blkbits;
        if (last_block > last_block_in_file)
                last_block = last_block_in_file;
        page_block = 0;

        /*
         * Map blocks using the result from the previous get_blocks call first.
         */
        nblocks = map_bh->b_size >> blkbits;
        if (buffer_mapped(map_bh) && block_in_file > *first_logical_block &&
                        block_in_file < (*first_logical_block + nblocks)) {
                unsigned map_offset = block_in_file - *first_logical_block;
                unsigned last = nblocks - map_offset;

                for (relative_block = 0; ; relative_block++) {
                        if (relative_block == last) {
                                clear_buffer_mapped(map_bh);
                                break;
                        }
                        if (page_block == blocks_per_page)
                                break;
                        blocks[page_block] = map_bh->b_blocknr + map_offset +
                                                relative_block;
                        page_block++;
                        block_in_file++;
                }
                bdev = map_bh->b_bdev;
        }
parameter *first_logical_block is 0 when calling this function.
Since block_in_file is the file block number of the first block in the
parameter page,  in the if statement, what is the meaning of
block_in_file > *first_logical_block &&
                        block_in_file < (*first_logical_block + nblocks)? I 
will be so
appreciated if someone will interpret the meaning of above codes!
Thanks!
Best regards


-- 
National Research Center for Intelligent Computing Systems
Institute of Computing Technology, Chinese Academy of Sciences

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to