]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/mtd/mtdpart.c
mm: bdi: expose the BDI object in sysfs for NFS
[linux-2.6-omap-h63xx.git] / drivers / mtd / mtdpart.c
index 9c6236852942ec7e98441c5a333c1786a0e83a0c..c66902df3171aef08e1066fde0157992f456ffdc 100644 (file)
@@ -151,6 +151,20 @@ static int part_write (struct mtd_info *mtd, loff_t to, size_t len,
                                    len, retlen, buf);
 }
 
+static int part_panic_write (struct mtd_info *mtd, loff_t to, size_t len,
+                       size_t *retlen, const u_char *buf)
+{
+       struct mtd_part *part = PART(mtd);
+       if (!(mtd->flags & MTD_WRITEABLE))
+               return -EROFS;
+       if (to >= mtd->size)
+               len = 0;
+       else if (to + len > mtd->size)
+               len = mtd->size - to;
+       return part->master->panic_write (part->master, to + part->offset,
+                                   len, retlen, buf);
+}
+
 static int part_write_oob(struct mtd_info *mtd, loff_t to,
                         struct mtd_oob_ops *ops)
 {
@@ -352,6 +366,9 @@ int add_mtd_partitions(struct mtd_info *master,
                slave->mtd.read = part_read;
                slave->mtd.write = part_write;
 
+               if (master->panic_write)
+                       slave->mtd.panic_write = part_panic_write;
+
                if(master->point && master->unpoint){
                        slave->mtd.point = part_point;
                        slave->mtd.unpoint = part_unpoint;
@@ -560,7 +577,3 @@ int parse_mtd_partitions(struct mtd_info *master, const char **types,
 EXPORT_SYMBOL_GPL(parse_mtd_partitions);
 EXPORT_SYMBOL_GPL(register_mtd_parser);
 EXPORT_SYMBOL_GPL(deregister_mtd_parser);
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("Nicolas Pitre <nico@cam.org>");
-MODULE_DESCRIPTION("Generic support for partitioning of MTD devices");