aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mtd/devices/block2mtd.c2
-rw-r--r--drivers/mtd/mtdcore.c26
-rw-r--r--fs/jffs2/writev.c6
-rw-r--r--include/linux/mtd/mtd.h16
4 files changed, 27 insertions, 23 deletions
diff --git a/drivers/mtd/devices/block2mtd.c b/drivers/mtd/devices/block2mtd.c
index b78f23169d4e..c16f6b4e8938 100644
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -288,7 +288,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size)
288 dev->mtd.flags = MTD_CAP_RAM; 288 dev->mtd.flags = MTD_CAP_RAM;
289 dev->mtd.erase = block2mtd_erase; 289 dev->mtd.erase = block2mtd_erase;
290 dev->mtd.write = block2mtd_write; 290 dev->mtd.write = block2mtd_write;
291 dev->mtd.writev = default_mtd_writev; 291 dev->mtd.writev = mtd_writev;
292 dev->mtd.sync = block2mtd_sync; 292 dev->mtd.sync = block2mtd_sync;
293 dev->mtd.read = block2mtd_read; 293 dev->mtd.read = block2mtd_read;
294 dev->mtd.priv = dev; 294 dev->mtd.priv = dev;
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
index 53a200f722b6..4d0f3e557bd1 100644
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
@@ -696,8 +696,8 @@ EXPORT_SYMBOL_GPL(__put_mtd_device);
696 * This function returns zero in case of success and a negative error code in 696 * This function returns zero in case of success and a negative error code in
697 * case of failure. 697 * case of failure.
698 */ 698 */
699int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs, 699static int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
700 unsigned long count, loff_t to, size_t *retlen) 700 unsigned long count, loff_t to, size_t *retlen)
701{ 701{
702 unsigned long i; 702 unsigned long i;
703 size_t totlen = 0, thislen; 703 size_t totlen = 0, thislen;
@@ -716,7 +716,27 @@ int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
716 *retlen = totlen; 716 *retlen = totlen;
717 return ret; 717 return ret;
718} 718}
719EXPORT_SYMBOL_GPL(default_mtd_writev); 719
720/*
721 * mtd_writev - the vector-based MTD write method
722 * @mtd: mtd device description object pointer
723 * @vecs: the vectors to write
724 * @count: count of vectors in @vecs
725 * @to: the MTD device offset to write to
726 * @retlen: on exit contains the count of bytes written to the MTD device.
727 *
728 * This function returns zero in case of success and a negative error code in
729 * case of failure.
730 */
731int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
732 unsigned long count, loff_t to, size_t *retlen)
733{
734 *retlen = 0;
735 if (!mtd->writev)
736 return default_mtd_writev(mtd, vecs, count, to, retlen);
737 return mtd->writev(mtd, vecs, count, to, retlen);
738}
739EXPORT_SYMBOL_GPL(mtd_writev);
720 740
721/** 741/**
722 * mtd_kmalloc_up_to - allocate a contiguous buffer up to the specified size 742 * mtd_kmalloc_up_to - allocate a contiguous buffer up to the specified size
diff --git a/fs/jffs2/writev.c b/fs/jffs2/writev.c
index 8d704073f8b0..a1bda9dab3f8 100644
--- a/fs/jffs2/writev.c
+++ b/fs/jffs2/writev.c
@@ -26,11 +26,7 @@ int jffs2_flash_direct_writev(struct jffs2_sb_info *c, const struct kvec *vecs,
26 } 26 }
27 } 27 }
28 28
29 if (c->mtd->writev) 29 return mtd_writev(c->mtd, vecs, count, to, retlen);
30 return mtd_writev(c->mtd, vecs, count, to, retlen);
31 else {
32 return default_mtd_writev(c->mtd, vecs, count, to, retlen);
33 }
34} 30}
35 31
36int jffs2_flash_direct_write(struct jffs2_sb_info *c, loff_t ofs, size_t len, 32int jffs2_flash_direct_write(struct jffs2_sb_info *c, loff_t ofs, size_t len,
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index a994129ede55..a58ecf4d1f80 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -394,16 +394,8 @@ static inline int mtd_lock_user_prot_reg(struct mtd_info *mtd, loff_t from,
394 return mtd->lock_user_prot_reg(mtd, from, len); 394 return mtd->lock_user_prot_reg(mtd, from, len);
395} 395}
396 396
397/* 397int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
398 * kvec-based read/write method. NB: The 'count' parameter is the number of 398 unsigned long count, loff_t to, size_t *retlen);
399 * _vectors_, each of which contains an (ofs, len) tuple.
400 */
401static inline int mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
402 unsigned long count, loff_t to, size_t *retlen)
403{
404 *retlen = 0;
405 return mtd->writev(mtd, vecs, count, to, retlen);
406}
407 399
408static inline void mtd_sync(struct mtd_info *mtd) 400static inline void mtd_sync(struct mtd_info *mtd)
409{ 401{
@@ -510,10 +502,6 @@ struct mtd_notifier {
510 502
511extern void register_mtd_user (struct mtd_notifier *new); 503extern void register_mtd_user (struct mtd_notifier *new);
512extern int unregister_mtd_user (struct mtd_notifier *old); 504extern int unregister_mtd_user (struct mtd_notifier *old);
513
514int default_mtd_writev(struct mtd_info *mtd, const struct kvec *vecs,
515 unsigned long count, loff_t to, size_t *retlen);
516
517void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size); 505void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size);
518 506
519void mtd_erase_callback(struct erase_info *instr); 507void mtd_erase_callback(struct erase_info *instr);