Message ID | 547E7348.5020204@cn.fujitsu.com |
---|---|
State | Accepted |
Commit | 362376a7c65936835f39ff29b082a646d522efbc |
Headers | show |
On Wed, Dec 03, 2014 at 10:19:52AM +0800, Gu Zheng wrote: > The global lock mtdblks_lock was used to protect the original mtdblks > array to avoid race conditions. As the mtdblks array was already gone, > but the mtdblks_lock is left, and it causes latency when open/release dev. > So we need to remove it here. > > Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com> Pushed this first patch to l2-mtd.git. Thanks! I'm kinda ambivalent about the next two. They don't seem like necessary cleanups, really. With the third patch, I think it's actually pretty important that the caller understand that it's using container_of(). I could be convinced otherwise though... Brian
Hi Brian, On 01/08/2015 04:59 AM, Brian Norris wrote: > On Wed, Dec 03, 2014 at 10:19:52AM +0800, Gu Zheng wrote: >> The global lock mtdblks_lock was used to protect the original mtdblks >> array to avoid race conditions. As the mtdblks array was already gone, >> but the mtdblks_lock is left, and it causes latency when open/release dev. >> So we need to remove it here. >> >> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com> > > Pushed this first patch to l2-mtd.git. Thanks! Thanks. > > I'm kinda ambivalent about the next two. They don't seem like necessary > cleanups, really. With the third patch, I think it's actually pretty > important that the caller understand that it's using container_of(). I > could be convinced otherwise though... OK. Regards, Gu > > Brian >
diff --git a/drivers/mtd/mtdblock.c b/drivers/mtd/mtdblock.c index 485ea75..bb4c14f 100644 --- a/drivers/mtd/mtdblock.c +++ b/drivers/mtd/mtdblock.c @@ -45,8 +45,6 @@ struct mtdblk_dev { enum { STATE_EMPTY, STATE_CLEAN, STATE_DIRTY } cache_state; }; -static DEFINE_MUTEX(mtdblks_lock); - /* * Cache stuff... * @@ -286,10 +284,8 @@ static int mtdblock_open(struct mtd_blktrans_dev *mbd) pr_debug("mtdblock_open\n"); - mutex_lock(&mtdblks_lock); if (mtdblk->count) { mtdblk->count++; - mutex_unlock(&mtdblks_lock); return 0; } @@ -302,8 +298,6 @@ static int mtdblock_open(struct mtd_blktrans_dev *mbd) mtdblk->cache_data = NULL; } - mutex_unlock(&mtdblks_lock); - pr_debug("ok\n"); return 0; @@ -315,8 +309,6 @@ static void mtdblock_release(struct mtd_blktrans_dev *mbd) pr_debug("mtdblock_release\n"); - mutex_lock(&mtdblks_lock); - mutex_lock(&mtdblk->cache_mutex); write_cached_data(mtdblk); mutex_unlock(&mtdblk->cache_mutex); @@ -331,8 +323,6 @@ static void mtdblock_release(struct mtd_blktrans_dev *mbd) vfree(mtdblk->cache_data); } - mutex_unlock(&mtdblks_lock); - pr_debug("ok\n"); }
The global lock mtdblks_lock was used to protect the original mtdblks array to avoid race conditions. As the mtdblks array was already gone, but the mtdblks_lock is left, and it causes latency when open/release dev. So we need to remove it here. Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com> --- drivers/mtd/mtdblock.c | 10 ---------- 1 files changed, 0 insertions(+), 10 deletions(-)