aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mtd
diff options
context:
space:
mode:
authorMaxim Levitsky <maximlevitsky@gmail.com>2010-02-22 13:39:30 -0500
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-02-26 12:05:26 -0500
commit048d87199566663e4edc4880df3703c04bcf41d9 (patch)
treeda875d4f7802d6ca8a7db9f2cdba57b74d6c3672 /include/linux/mtd
parenta863862257b7dd08d855bafcb0aedd9ad848ed91 (diff)
mtd: blktrans: Hotplug fixes
* Add locking where it was missing. * Don't do a get_mtd_device in blktrans_open because it would lead to a deadlock; instead do that in add_mtd_blktrans_dev. * Only free the mtd_blktrans_dev structure when the last user exits. * Flush request queue on device removal. * Track users, and call tr->release in del_mtd_blktrans_dev Due to that ->open and release aren't called more that once. Now it is safe to call del_mtd_blktrans_dev while the device is still in use. Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Diffstat (limited to 'include/linux/mtd')
-rw-r--r--include/linux/mtd/blktrans.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/mtd/blktrans.h b/include/linux/mtd/blktrans.h
index a4b392868b54..d89b8fbba4c9 100644
--- a/include/linux/mtd/blktrans.h
+++ b/include/linux/mtd/blktrans.h
@@ -9,6 +9,7 @@
9#define __MTD_TRANS_H__ 9#define __MTD_TRANS_H__
10 10
11#include <linux/mutex.h> 11#include <linux/mutex.h>
12#include <linux/kref.h>
12 13
13struct hd_geometry; 14struct hd_geometry;
14struct mtd_info; 15struct mtd_info;
@@ -24,6 +25,8 @@ struct mtd_blktrans_dev {
24 int devnum; 25 int devnum;
25 unsigned long size; 26 unsigned long size;
26 int readonly; 27 int readonly;
28 int open;
29 struct kref ref;
27 struct gendisk *disk; 30 struct gendisk *disk;
28 struct task_struct *thread; 31 struct task_struct *thread;
29 struct request_queue *rq; 32 struct request_queue *rq;