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

2  * block2mtd.c - create an mtd from a block device
5 * Copyright (C) 2004-2006 Joern Engel <[email protected]-wedel.de>
23 #include <linux/backing-dev.h>
34 /* Maximum number of comma-separated items in the 'block2mtd=' parameter */
58 struct address_space *mapping = dev->bdev_file->f_mapping; in _block2mtd_erase()
72 if (*p != -1UL) { in _block2mtd_erase()
82 pages--; in _block2mtd_erase()
89 struct block2mtd_dev *dev = mtd->priv; in block2mtd_erase()
90 size_t from = instr->addr; in block2mtd_erase()
91 size_t len = instr->len; in block2mtd_erase()
94 mutex_lock(&dev->write_mutex); in block2mtd_erase()
96 mutex_unlock(&dev->write_mutex); in block2mtd_erase()
107 struct block2mtd_dev *dev = mtd->priv; in block2mtd_read()
108 struct address_space *mapping = dev->bdev_file->f_mapping; in block2mtd_read()
111 int offset = from & (PAGE_SIZE-1); in block2mtd_read()
116 cpylen = PAGE_SIZE - offset; // multiple pages in block2mtd_read()
119 len = len - cpylen; in block2mtd_read()
143 struct address_space *mapping = dev->bdev_file->f_mapping; in _block2mtd_write()
150 cpylen = PAGE_SIZE - offset; // multiple pages in _block2mtd_write()
153 len = len - cpylen; in _block2mtd_write()
182 struct block2mtd_dev *dev = mtd->priv; in block2mtd_write()
185 mutex_lock(&dev->write_mutex); in block2mtd_write()
187 mutex_unlock(&dev->write_mutex); in block2mtd_write()
194 /* sync the device - wait until the write queue is empty */
197 struct block2mtd_dev *dev = mtd->priv; in block2mtd_sync()
198 sync_blockdev(file_bdev(dev->bdev_file)); in block2mtd_sync()
208 kfree(dev->mtd.name); in block2mtd_free_device()
210 if (dev->bdev_file) { in block2mtd_free_device()
211 invalidate_mapping_pages(dev->bdev_file->f_mapping, 0, -1); in block2mtd_free_device()
212 bdev_fput(dev->bdev_file); in block2mtd_free_device()
225 struct file *bdev_file = ERR_PTR(-ENODEV); in mdtblock_early_get_bdev()
246 * go-arounds. in mdtblock_early_get_bdev()
287 dev->bdev_file = bdev_file; in add_device()
290 if (MAJOR(bdev->bd_dev) == MTD_BLOCK_MAJOR) { in add_device()
301 mutex_init(&dev->write_mutex); in add_device()
312 dev->mtd.name = name; in add_device()
314 dev->mtd.size = size & PAGE_MASK; in add_device()
315 dev->mtd.erasesize = erase_size; in add_device()
316 dev->mtd.writesize = 1; in add_device()
317 dev->mtd.writebufsize = PAGE_SIZE; in add_device()
318 dev->mtd.type = MTD_RAM; in add_device()
319 dev->mtd.flags = MTD_CAP_RAM; in add_device()
320 dev->mtd._erase = block2mtd_erase; in add_device()
321 dev->mtd._write = block2mtd_write; in add_device()
322 dev->mtd._sync = block2mtd_sync; in add_device()
323 dev->mtd._read = block2mtd_read; in add_device()
324 dev->mtd.priv = dev; in add_device()
325 dev->mtd.owner = THIS_MODULE; in add_device()
327 if (mtd_device_register(&dev->mtd, NULL, 0)) { in add_device()
332 list_add(&dev->list, &blkmtd_device_list); in add_device()
334 dev->mtd.index, in add_device()
335 label ? label : dev->mtd.name + strlen("block2mtd: "), in add_device()
336 dev->mtd.erasesize >> 10, dev->mtd.erasesize); in add_device()
340 mutex_destroy(&dev->write_mutex); in add_device()
348 * allows some suffixes for a more human-readable number format:
349 * ki, Ki, kiB, KiB - multiply result with 1024
350 * Mi, MiB - multiply result with 1024^2
351 * Gi, GiB - multiply result with 1024^3
378 static int parse_num(size_t *num, const char *token) in parse_num() argument
383 n = (size_t) ustrtoul(token, &endp, 0); in parse_num()
385 return -EINVAL; in parse_num()
411 char *token[BLOCK2MTD_PARAM_MAX_COUNT]; in block2mtd_setup2() local
427 token[i] = strsep(&str, ","); in block2mtd_setup2()
434 if (!token[0]) { in block2mtd_setup2()
439 name = token[0]; in block2mtd_setup2()
446 if (token[1] && strlen(token[1])) { in block2mtd_setup2()
447 ret = parse_num(&erase_size, token[1]); in block2mtd_setup2()
454 if (token[2]) { in block2mtd_setup2()
455 label = token[2]; in block2mtd_setup2()
516 block2mtd_sync(&dev->mtd); in block2mtd_exit()
517 mtd_device_unregister(&dev->mtd); in block2mtd_exit()
518 mutex_destroy(&dev->write_mutex); in block2mtd_exit()
520 dev->mtd.index, in block2mtd_exit()
521 dev->mtd.name + strlen("block2mtd: ")); in block2mtd_exit()
522 list_del(&dev->list); in block2mtd_exit()