block fs API: /hdc1/download/2.6/linux-2.6/fs>grep EXPORT block_dev.c EXPORT_SYMBOL(I_BDEV); EXPORT_SYMBOL(set_blocksize); EXPORT_SYMBOL(sb_set_blocksize); EXPORT_SYMBOL(sb_min_blocksize); EXPORT_SYMBOL(bdget); EXPORT_SYMBOL(bdput); example: int invalidate_partition(struct gendisk *disk, int index) { int res = 0; struct block_device *bdev = bdget_disk(disk, index); if (bdev) { fsync_bdev(bdev); res = __invalidate_device(bdev); bdput(bdev); } return res; } EXPORT_SYMBOL(bd_claim); EXPORT_SYMBOL(bd_release); EXPORT_SYMBOL_GPL(bd_claim_by_disk); EXPORT_SYMBOL_GPL(bd_release_from_disk); EXPORT_SYMBOL(open_by_devnum); EXPORT_SYMBOL(check_disk_change); EXPORT_SYMBOL(bd_set_size); EXPORT_SYMBOL(blkdev_get); EXPORT_SYMBOL(blkdev_put); EXPORT_SYMBOL(ioctl_by_bdev); EXPORT_SYMBOL(lookup_bdev); EXPORT_SYMBOL(open_bdev_excl); EXPORT_SYMBOL(close_bdev_excl); EXPORT_SYMBOL(__invalidate_device);" block device API: /hdc1/download/2.6/linux-2.6/block>grep EXPORT genhd.c EXPORT_SYMBOL(register_blkdev); EXPORT_SYMBOL(unregister_blkdev); EXPORT_SYMBOL(blk_register_region); EXPORT_SYMBOL(blk_unregister_region); EXPORT_SYMBOL(add_disk); EXPORT_SYMBOL(del_gendisk); /* in partitions/check.c */ EXPORT_SYMBOL_GPL(genhd_media_change_notify); EXPORT_SYMBOL(blk_lookup_devt); EXPORT_SYMBOL(alloc_disk); EXPORT_SYMBOL(alloc_disk_node); EXPORT_SYMBOL(get_disk); EXPORT_SYMBOL(put_disk); EXPORT_SYMBOL(set_device_ro); EXPORT_SYMBOL(set_disk_ro); EXPORT_SYMBOL(bdev_read_only); EXPORT_SYMBOL(invalidate_partition); static void handle_bad_sector(struct bio *bio) { char b[BDEVNAME_SIZE]; printk(KERN_INFO "attempt to access beyond end of device\n"); printk(KERN_INFO "%s: rw=%ld, want=%Lu, limit=%Lu\n", bdevname(bio->bi_bdev, b), bio->bi_rw, (unsigned long long)bio->bi_sector + bio_sectors(bio), (long long)(bio->bi_bdev->bd_inode->i_size >> 9)); set_bit(BIO_EOF, &bio->bi_flags); } blk core structures API: /hdc1/download/2.6/linux-2.6/block>grep EXPORT blk-core.c EXPORT_SYMBOL(blk_get_backing_dev_info); EXPORT_SYMBOL(blk_rq_init); EXPORT_SYMBOL(blk_dump_rq_flags); EXPORT_SYMBOL(blk_plug_device); EXPORT_SYMBOL(blk_plug_device_unlocked); EXPORT_SYMBOL(blk_remove_plug); EXPORT_SYMBOL(__generic_unplug_device); EXPORT_SYMBOL(generic_unplug_device); EXPORT_SYMBOL(blk_unplug); EXPORT_SYMBOL(blk_start_queue); EXPORT_SYMBOL(blk_stop_queue); EXPORT_SYMBOL(blk_sync_queue); EXPORT_SYMBOL(__blk_run_queue); EXPORT_SYMBOL(blk_run_queue); EXPORT_SYMBOL(blk_cleanup_queue); EXPORT_SYMBOL(blk_alloc_queue); EXPORT_SYMBOL(blk_alloc_queue_node); EXPORT_SYMBOL(blk_init_queue); EXPORT_SYMBOL(blk_init_queue_node); EXPORT_SYMBOL(blk_get_request); EXPORT_SYMBOL(blk_start_queueing); EXPORT_SYMBOL(blk_requeue_request); EXPORT_SYMBOL(blk_insert_request); EXPORT_SYMBOL_GPL(disk_round_stats); EXPORT_SYMBOL_GPL(__blk_put_request); EXPORT_SYMBOL(blk_put_request); EXPORT_SYMBOL(generic_make_request); EXPORT_SYMBOL(submit_bio); EXPORT_SYMBOL(blk_complete_request); EXPORT_SYMBOL_GPL(blk_rq_bytes); EXPORT_SYMBOL_GPL(blk_rq_cur_bytes); EXPORT_SYMBOL(end_queued_request); EXPORT_SYMBOL(end_dequeued_request); EXPORT_SYMBOL(end_request); EXPORT_SYMBOL_GPL(blk_end_request); EXPORT_SYMBOL_GPL(__blk_end_request); EXPORT_SYMBOL_GPL(blk_end_bidi_request); EXPORT_SYMBOL_GPL(blk_end_request_callback); EXPORT_SYMBOL(kblockd_schedule_work); EXPORT_SYMBOL(kblockd_flush_work); |