Lines Matching refs:dev

70 static void simdisk_transfer(struct simdisk *dev, unsigned long sector,  in simdisk_transfer()  argument
76 if (offset > dev->size || dev->size - offset < nbytes) { in simdisk_transfer()
82 spin_lock(&dev->lock); in simdisk_transfer()
86 simc_lseek(dev->fd, offset, SEEK_SET); in simdisk_transfer()
89 io = simc_write(dev->fd, buffer, nbytes); in simdisk_transfer()
91 io = simc_read(dev->fd, buffer, nbytes); in simdisk_transfer()
100 spin_unlock(&dev->lock); in simdisk_transfer()
105 struct simdisk *dev = bio->bi_bdev->bd_disk->private_data; in simdisk_submit_bio() local
114 simdisk_transfer(dev, sector, len, buffer, in simdisk_submit_bio()
125 struct simdisk *dev = disk->private_data; in simdisk_open() local
127 spin_lock(&dev->lock); in simdisk_open()
128 ++dev->users; in simdisk_open()
129 spin_unlock(&dev->lock); in simdisk_open()
135 struct simdisk *dev = disk->private_data; in simdisk_release() local
136 spin_lock(&dev->lock); in simdisk_release()
137 --dev->users; in simdisk_release()
138 spin_unlock(&dev->lock); in simdisk_release()
151 static int simdisk_attach(struct simdisk *dev, const char *filename) in simdisk_attach() argument
159 spin_lock(&dev->lock); in simdisk_attach()
161 if (dev->fd != -1) { in simdisk_attach()
165 dev->fd = simc_open(filename, O_RDWR, 0); in simdisk_attach()
166 if (dev->fd == -1) { in simdisk_attach()
171 dev->size = simc_lseek(dev->fd, 0, SEEK_END); in simdisk_attach()
172 set_capacity(dev->gd, dev->size >> SECTOR_SHIFT); in simdisk_attach()
173 dev->filename = filename; in simdisk_attach()
174 pr_info("SIMDISK: %s=%s\n", dev->gd->disk_name, dev->filename); in simdisk_attach()
178 spin_unlock(&dev->lock); in simdisk_attach()
183 static int simdisk_detach(struct simdisk *dev) in simdisk_detach() argument
187 spin_lock(&dev->lock); in simdisk_detach()
189 if (dev->users != 0) { in simdisk_detach()
191 } else if (dev->fd != -1) { in simdisk_detach()
192 if (simc_close(dev->fd)) { in simdisk_detach()
194 dev->filename, errno); in simdisk_detach()
198 dev->gd->disk_name, dev->filename); in simdisk_detach()
199 dev->fd = -1; in simdisk_detach()
200 kfree(dev->filename); in simdisk_detach()
201 dev->filename = NULL; in simdisk_detach()
204 spin_unlock(&dev->lock); in simdisk_detach()
211 struct simdisk *dev = pde_data(file_inode(file)); in proc_read_simdisk() local
212 const char *s = dev->filename; in proc_read_simdisk()
234 struct simdisk *dev = pde_data(file_inode(file)); in proc_write_simdisk() local
240 err = simdisk_detach(dev); in proc_write_simdisk()
248 err = simdisk_attach(dev, tmp); in proc_write_simdisk()
263 static int __init simdisk_setup(struct simdisk *dev, int which, in simdisk_setup() argument
269 dev->fd = -1; in simdisk_setup()
270 dev->filename = NULL; in simdisk_setup()
271 spin_lock_init(&dev->lock); in simdisk_setup()
272 dev->users = 0; in simdisk_setup()
274 dev->gd = blk_alloc_disk(NUMA_NO_NODE); in simdisk_setup()
275 if (!dev->gd) in simdisk_setup()
277 dev->gd->major = simdisk_major; in simdisk_setup()
278 dev->gd->first_minor = which; in simdisk_setup()
279 dev->gd->minors = SIMDISK_MINORS; in simdisk_setup()
280 dev->gd->fops = &simdisk_ops; in simdisk_setup()
281 dev->gd->private_data = dev; in simdisk_setup()
282 snprintf(dev->gd->disk_name, 32, "simdisk%d", which); in simdisk_setup()
283 set_capacity(dev->gd, 0); in simdisk_setup()
284 err = add_disk(dev->gd); in simdisk_setup()
288 dev->procfile = proc_create_data(tmp, 0644, procdir, &simdisk_proc_ops, dev); in simdisk_setup()
293 put_disk(dev->gd); in simdisk_setup()
339 static void simdisk_teardown(struct simdisk *dev, int which, in simdisk_teardown() argument
344 simdisk_detach(dev); in simdisk_teardown()
345 if (dev->gd) { in simdisk_teardown()
346 del_gendisk(dev->gd); in simdisk_teardown()
347 put_disk(dev->gd); in simdisk_teardown()