• Home
  • Raw
  • Download

Lines Matching +full:sync +full:- +full:token

2  * block2mtd.c - create an mtd from a block device
5 * Copyright (C) 2004-2006 Joern Engel <joern@wh.fh-wedel.de>
23 #include <linux/backing-dev.h>
55 struct address_space *mapping = dev->blkdev->bd_inode->i_mapping; in _block2mtd_erase()
69 if (*p != -1UL) { in _block2mtd_erase()
79 pages--; in _block2mtd_erase()
86 struct block2mtd_dev *dev = mtd->priv; in block2mtd_erase()
87 size_t from = instr->addr; in block2mtd_erase()
88 size_t len = instr->len; in block2mtd_erase()
91 mutex_lock(&dev->write_mutex); in block2mtd_erase()
93 mutex_unlock(&dev->write_mutex); in block2mtd_erase()
104 struct block2mtd_dev *dev = mtd->priv; in block2mtd_read()
107 int offset = from & (PAGE_SIZE-1); in block2mtd_read()
112 cpylen = PAGE_SIZE - offset; // multiple pages in block2mtd_read()
115 len = len - cpylen; in block2mtd_read()
117 page = page_read(dev->blkdev->bd_inode->i_mapping, index); in block2mtd_read()
139 struct address_space *mapping = dev->blkdev->bd_inode->i_mapping; in _block2mtd_write()
146 cpylen = PAGE_SIZE - offset; // multiple pages in _block2mtd_write()
149 len = len - cpylen; in _block2mtd_write()
178 struct block2mtd_dev *dev = mtd->priv; in block2mtd_write()
181 mutex_lock(&dev->write_mutex); in block2mtd_write()
183 mutex_unlock(&dev->write_mutex); in block2mtd_write()
190 /* sync the device - wait until the write queue is empty */
193 struct block2mtd_dev *dev = mtd->priv; in block2mtd_sync()
194 sync_blockdev(dev->blkdev); in block2mtd_sync()
204 kfree(dev->mtd.name); in block2mtd_free_device()
206 if (dev->blkdev) { in block2mtd_free_device()
207 invalidate_mapping_pages(dev->blkdev->bd_inode->i_mapping, in block2mtd_free_device()
208 0, -1); in block2mtd_free_device()
209 blkdev_put(dev->blkdev, FMODE_READ|FMODE_WRITE|FMODE_EXCL); in block2mtd_free_device()
249 * go-arounds. in add_device()
265 dev->blkdev = bdev; in add_device()
267 if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) { in add_device()
272 if ((long)dev->blkdev->bd_inode->i_size % erase_size) { in add_device()
277 mutex_init(&dev->write_mutex); in add_device()
285 dev->mtd.name = name; in add_device()
287 dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK; in add_device()
288 dev->mtd.erasesize = erase_size; in add_device()
289 dev->mtd.writesize = 1; in add_device()
290 dev->mtd.writebufsize = PAGE_SIZE; in add_device()
291 dev->mtd.type = MTD_RAM; in add_device()
292 dev->mtd.flags = MTD_CAP_RAM; in add_device()
293 dev->mtd._erase = block2mtd_erase; in add_device()
294 dev->mtd._write = block2mtd_write; in add_device()
295 dev->mtd._sync = block2mtd_sync; in add_device()
296 dev->mtd._read = block2mtd_read; in add_device()
297 dev->mtd.priv = dev; in add_device()
298 dev->mtd.owner = THIS_MODULE; in add_device()
300 if (mtd_device_register(&dev->mtd, NULL, 0)) { in add_device()
305 list_add(&dev->list, &blkmtd_device_list); in add_device()
307 dev->mtd.index, in add_device()
308 dev->mtd.name + strlen("block2mtd: "), in add_device()
309 dev->mtd.erasesize >> 10, dev->mtd.erasesize); in add_device()
313 mutex_destroy(&dev->write_mutex); in add_device()
321 * allows some suffixes for a more human-readable number format:
322 * ki, Ki, kiB, KiB - multiply result with 1024
323 * Mi, MiB - multiply result with 1024^2
324 * Gi, GiB - multiply result with 1024^3
351 static int parse_num(size_t *num, const char *token) in parse_num() argument
356 n = (size_t) ustrtoul(token, &endp, 0); in parse_num()
358 return -EINVAL; in parse_num()
384 char *token[2]; in block2mtd_setup2() local
399 token[i] = strsep(&str, ","); in block2mtd_setup2()
406 if (!token[0]) { in block2mtd_setup2()
411 name = token[0]; in block2mtd_setup2()
417 if (token[1]) { in block2mtd_setup2()
418 ret = parse_num(&erase_size, token[1]); in block2mtd_setup2()
482 block2mtd_sync(&dev->mtd); in block2mtd_exit()
483 mtd_device_unregister(&dev->mtd); in block2mtd_exit()
484 mutex_destroy(&dev->write_mutex); in block2mtd_exit()
486 dev->mtd.index, in block2mtd_exit()
487 dev->mtd.name + strlen("block2mtd: ")); in block2mtd_exit()
488 list_del(&dev->list); in block2mtd_exit()