summaryrefslogtreecommitdiff
path: root/yaffs_vfs_single.c
diff options
context:
space:
mode:
authorCharles Manning <cdhmanning@gmail.com>2010-11-03 16:01:12 +1300
committerCharles Manning <cdhmanning@gmail.com>2010-11-03 16:01:12 +1300
commit73c54aa8c1de3f61a4c211cd47431293a6092f18 (patch)
tree2f060614008f76909d3e2ac444c5372e2fcf8635 /yaffs_vfs_single.c
parent3ecea787c3d99a5e13bf3b826dd3ad772fbad810 (diff)
yaffs: Switch from semaphores to mutexes
Mutex is faster and init_MUTEX has been deprecated, so we'll just switch to mutexes. Signed-off-by: Charles Manning <cdhmanning@gmail.com>
Diffstat (limited to 'yaffs_vfs_single.c')
-rw-r--r--yaffs_vfs_single.c27
1 files changed, 13 insertions, 14 deletions
diff --git a/yaffs_vfs_single.c b/yaffs_vfs_single.c
index 176dea7..a17262c 100644
--- a/yaffs_vfs_single.c
+++ b/yaffs_vfs_single.c
@@ -289,14 +289,14 @@ static unsigned yaffs_gc_control_callback(struct yaffs_dev *dev)
static void yaffs_gross_lock(struct yaffs_dev *dev)
{
T(YAFFS_TRACE_LOCK, (TSTR("yaffs locking %p\n"), current));
- down(&(yaffs_dev_to_lc(dev)->gross_lock));
+ mutex_lock(&(yaffs_dev_to_lc(dev)->gross_lock));
T(YAFFS_TRACE_LOCK, (TSTR("yaffs locked %p\n"), current));
}
static void yaffs_gross_unlock(struct yaffs_dev *dev)
{
T(YAFFS_TRACE_LOCK, (TSTR("yaffs unlocking %p\n"), current));
- up(&(yaffs_dev_to_lc(dev)->gross_lock));
+ mutex_unlock(&(yaffs_dev_to_lc(dev)->gross_lock));
}
/* ExportFS support */
@@ -2007,7 +2007,7 @@ static struct inode *yaffs_iget(struct super_block *sb, unsigned long ino)
}
static LIST_HEAD(yaffs_context_list);
-struct semaphore yaffs_context_lock;
+struct mutex yaffs_context_lock;
static void yaffs_put_super(struct super_block *sb)
{
@@ -2031,10 +2031,9 @@ static void yaffs_put_super(struct super_block *sb)
yaffs_deinitialise(dev);
yaffs_gross_unlock(dev);
-
- down(&yaffs_context_lock);
+ mutex_lock(&yaffs_context_lock);
list_del_init(&(yaffs_dev_to_lc(dev)->context_list));
- up(&yaffs_context_lock);
+ mutex_unlock(&yaffs_context_lock);
if (yaffs_dev_to_lc(dev)->spare_buffer) {
YFREE(yaffs_dev_to_lc(dev)->spare_buffer);
@@ -2438,7 +2437,7 @@ static struct super_block *yaffs_internal_read_super(int yaffs_version,
param->skip_checkpt_rd = options.skip_checkpoint_read;
param->skip_checkpt_wr = options.skip_checkpoint_write;
- down(&yaffs_context_lock);
+ mutex_lock(&yaffs_context_lock);
/* Get a mount id */
found = 0;
for (mount_id = 0; !found; mount_id++) {
@@ -2455,13 +2454,13 @@ static struct super_block *yaffs_internal_read_super(int yaffs_version,
list_add_tail(&(yaffs_dev_to_lc(dev)->context_list),
&yaffs_context_list);
- up(&yaffs_context_lock);
+ mutex_unlock(&yaffs_context_lock);
/* Directory search handling... */
INIT_LIST_HEAD(&(yaffs_dev_to_lc(dev)->search_contexts));
param->remove_obj_fn = yaffs_remove_obj_callback;
- init_MUTEX(&(yaffs_dev_to_lc(dev)->gross_lock));
+ mutex_init(&(yaffs_dev_to_lc(dev)->gross_lock));
yaffs_gross_lock(dev);
@@ -2676,7 +2675,7 @@ static int yaffs_proc_read(char *page,
else {
step -= 2;
- down(&yaffs_context_lock);
+ mutex_lock(&yaffs_context_lock);
/* Locate and print the Nth entry. Order N-squared but N is small. */
list_for_each(item, &yaffs_context_list) {
@@ -2699,7 +2698,7 @@ static int yaffs_proc_read(char *page,
break;
}
- up(&yaffs_context_lock);
+ mutex_unlock(&yaffs_context_lock);
}
return buf - page < count ? buf - page : count;
@@ -2713,7 +2712,7 @@ static int yaffs_stats_proc_read(char *page,
char *buf = page;
int n = 0;
- down(&yaffs_context_lock);
+ mutex_lock(&yaffs_context_lock);
/* Locate and print the Nth entry. Order N-squared but N is small. */
list_for_each(item, &yaffs_context_list) {
@@ -2731,7 +2730,7 @@ static int yaffs_stats_proc_read(char *page,
dev->bg_gcs, dev->oldest_dirty_gc_count,
dev->n_obj, dev->n_tnodes);
}
- up(&yaffs_context_lock);
+ mutex_unlock(&yaffs_context_lock);
return buf - page < count ? buf - page : count;
}
@@ -2905,7 +2904,7 @@ static int __init init_yaffs_fs(void)
(" \n\n\n\nYAFFS-WARNING CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED selected.\n\n\n\n")));
#endif
- init_MUTEX(&yaffs_context_lock);
+ mutex_init(&yaffs_context_lock);
/* Install the proc_fs entries */
my_proc_entry = create_proc_entry("yaffs",