Changeset 1d8cdb1 in mainline for uspace/lib/libblock/libblock.c


Ignore:
Timestamp:
2008-11-18T20:28:17Z (16 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
18c485a
Parents:
26fa0f9f
Message:

Avoid unnecessary block reads in block_get().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/libblock/libblock.c

    r26fa0f9f r1d8cdb1  
    297297 * @param dev_handle            Device handle of the block device.
    298298 * @param boff                  Block offset.
     299 * @param flags                 If BLOCK_FLAGS_NOREAD is specified, block_get()
     300 *                              will not read the contents of the block from the
     301 *                              device.
    299302 *
    300303 * @return                      Block structure.
    301304 */
    302 block_t *block_get(dev_handle_t dev_handle, bn_t boff)
     305block_t *block_get(dev_handle_t dev_handle, bn_t boff, int flags)
    303306{
    304307        devcon_t *devcon;
     
    386389                        abort();        /* TODO: block_write() */
    387390                }
    388                 /*
    389                  * The block contains old or no data. We need to read the new
    390                  * contents from the device.
    391                  */
    392                 rc = block_read(dev_handle, &bufpos, &buflen, &pos, b->data,
    393                     cache->block_size, cache->block_size);
    394                 assert(rc == EOK);
     391                if (!(flags & BLOCK_FLAGS_NOREAD)) {
     392                        /*
     393                         * The block contains old or no data. We need to read
     394                         * the new contents from the device.
     395                         */
     396                        rc = block_read(dev_handle, &bufpos, &buflen, &pos,
     397                            b->data, cache->block_size, cache->block_size);
     398                        assert(rc == EOK);
     399                }
    395400
    396401                futex_up(&b->lock);
Note: See TracChangeset for help on using the changeset viewer.