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);

Reply via email to