1 #include <lunaix/block.h>
2 #include <lunaix/fs/twifs.h>
4 static struct twifs_node* blk_root;
9 blk_root = twifs_dir_node(NULL, "block");
13 __blk_rd_size(struct twimap* map)
15 struct block_dev* bdev = twimap_data(map, struct block_dev*);
16 size_t secsize = bdev->hd_dev->block_size;
17 twimap_printf(map, "%u", (bdev->end_lba - bdev->base_lba) * secsize);
21 __blk_rd_secsize(struct twimap* map)
23 struct block_dev* bdev = twimap_data(map, struct block_dev*);
24 size_t secsize = bdev->hd_dev->block_size;
25 twimap_printf(map, "%u", secsize);
29 __blk_rd_range(struct twimap* map)
31 struct block_dev* bdev = twimap_data(map, struct block_dev*);
33 map, "%u,%u", (uint32_t)bdev->base_lba, (uint32_t)bdev->end_lba);
37 __blk_rd_model(struct twimap* map)
39 struct block_dev* bdev = twimap_data(map, struct block_dev*);
40 twimap_printf(map, "%s", bdev->hd_dev->model);
44 __blk_rd_serial(struct twimap* map)
46 struct block_dev* bdev = twimap_data(map, struct block_dev*);
47 twimap_printf(map, "%s", bdev->hd_dev->serial_num);
51 __blk_rd_status(struct twimap* map)
53 struct block_dev* bdev = twimap_data(map, struct block_dev*);
54 twimap_printf(map, "%p", bdev->hd_dev->last_result.status);
58 __blk_rd_error(struct twimap* map)
60 struct block_dev* bdev = twimap_data(map, struct block_dev*);
61 twimap_printf(map, "%p", bdev->hd_dev->last_result.error);
65 __blk_rd_sense_key(struct twimap* map)
67 struct block_dev* bdev = twimap_data(map, struct block_dev*);
68 twimap_printf(map, "%p", bdev->hd_dev->last_result.sense_key);
72 __blk_rd_wwid(struct twimap* map)
74 struct block_dev* bdev = twimap_data(map, struct block_dev*);
75 uint32_t h = bdev->hd_dev->wwn >> 32;
76 uint32_t l = (uint32_t)bdev->hd_dev->wwn;
77 twimap_printf(map, "%x%x", h, l);
81 blk_set_blkmapping(struct block_dev* bdev)
83 struct twifs_node* dev_root = twifs_dir_node(blk_root, bdev->bdev_id);
85 struct twimap* map = twifs_mapping(dev_root, bdev, "size");
86 map->read = __blk_rd_size;
88 map = twifs_mapping(dev_root, bdev, "secsize");
89 map->read = __blk_rd_secsize;
91 map = twifs_mapping(dev_root, bdev, "range");
92 map->read = __blk_rd_range;
94 map = twifs_mapping(dev_root, bdev, "model");
95 map->read = __blk_rd_model;
97 map = twifs_mapping(dev_root, bdev, "serial");
98 map->read = __blk_rd_serial;
100 map = twifs_mapping(dev_root, bdev, "status");
101 map->read = __blk_rd_status;
103 map = twifs_mapping(dev_root, bdev, "error");
104 map->read = __blk_rd_error;
106 map = twifs_mapping(dev_root, bdev, "sense-key");
107 map->read = __blk_rd_sense_key;
109 map = twifs_mapping(dev_root, bdev, "wwid");
110 map->read = __blk_rd_wwid;