mtd/fs/jffs2 README.Locking,1.4,1.5 background.c,1.33,1.34 erase.c,1.47,1.48 fs.c,1.21,1.22 gc.c,1.90,1.91 nodelist.c,1.72,1.73 nodemgmt.c,1.88,1.89 wbuf.c,1.22,1.23
David Woodhouse
dwmw2 at infradead.org
Tue Jan 14 09:54:34 EST 2003
- Previous message: mtd/fs/jffs2/ecos/src os-ecos.h,1.2,1.3
- Next message: mtd/fs/jffs2 build.c,1.43,1.44 gc.c,1.91,1.92 nodelist.c,1.73,1.74 nodelist.h,1.89,1.90 os-linux.h,1.22,1.23 readinode.c,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/mtd/fs/jffs2
In directory phoenix.infradead.org:/tmp/cvs-serv2685
Modified Files:
README.Locking background.c erase.c fs.c gc.c nodelist.c
nodemgmt.c wbuf.c
Log Message:
Drop spin_lock_bh(). We never get a callback from a timer anyway
Index: README.Locking
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/README.Locking,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- README.Locking 8 Mar 2002 16:20:06 -0000 1.4
+++ README.Locking 14 Jan 2003 14:54:31 -0000 1.5
@@ -80,10 +80,10 @@
(NB) the per-inode list of physical nodes. The latter is a special
case - see below.
-As the MTD API permits erase-completion callback functions to be
-called from bottom-half (timer) context, and these functions access
-the data structures protected by this lock, it must be locked with
-spin_lock_bh().
+As the MTD API no longer permits erase-completion callback functions
+to be called from bottom-half (timer) context (on the basis that nobody
+ever actually implemented such a thing), it's now sufficient to use
+a simple spin_lock() rather than spin_lock_bh().
Note that the per-inode list of physical nodes (f->nodes) is a special
case. Any changes to _valid_ nodes (i.e. ->flash_offset & 1 == 0) in
Index: background.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/background.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- background.c 12 Nov 2002 09:44:30 -0000 1.33
+++ background.c 14 Jan 2003 14:54:31 -0000 1.34
@@ -28,10 +28,10 @@
void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
{
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (c->gc_task && thread_should_wake(c))
send_sig(SIGHUP, c->gc_task, 1);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
}
/* This must only ever be called when no GC thread is currently running */
@@ -69,12 +69,12 @@
flush_scheduled_work();
}
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (c->gc_task) {
D1(printk(KERN_DEBUG "jffs2: Killing GC task %d\n", c->gc_task->pid));
send_sig(SIGKILL, c->gc_task, 1);
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
wait_for_completion(&c->gc_thread_exit);
}
@@ -128,9 +128,9 @@
case SIGKILL:
D1(printk(KERN_DEBUG "jffs2_garbage_collect_thread(): SIGKILL received.\n"));
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
c->gc_task = NULL;
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
complete_and_exit(&c->gc_thread_exit, 0);
case SIGHUP:
Index: erase.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/erase.c,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- erase.c 14 Jan 2003 14:06:22 -0000 1.47
+++ erase.c 14 Jan 2003 14:54:31 -0000 1.48
@@ -28,6 +28,7 @@
#ifndef __ECOS
static void jffs2_erase_callback(struct erase_info *);
#endif
+static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
static void jffs2_erase_succeeded(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
static void jffs2_free_all_node_refs(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb);
@@ -47,11 +48,11 @@
instr = kmalloc(sizeof(struct erase_info) + sizeof(struct erase_priv_struct), GFP_KERNEL);
if (!instr) {
printk(KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n");
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
list_del(&jeb->list);
list_add(&jeb->list, &c->erase_pending_list);
c->erasing_size -= c->sector_size;
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return;
}
@@ -80,11 +81,11 @@
if (ret == -ENOMEM || ret == -EAGAIN) {
/* Erase failed immediately. Refile it on the list */
D1(printk(KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n", jeb->offset, ret));
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
list_del(&jeb->list);
list_add(&jeb->list, &c->erase_pending_list);
c->erasing_size -= c->sector_size;
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return;
}
@@ -94,19 +95,12 @@
printk(KERN_WARNING "Erase at 0x%08x failed immediately: errno %d\n", jeb->offset, ret);
/* Note: This is almost identical to jffs2_erase_failed() except
- for the fact that we used spin_lock_bh() not spin_lock(). If
- we could use spin_lock_bh() from a BH, we could merge them.
+ for the fact that we used spin_lock() not spin_lock(). If
+ we could use spin_lock() from a BH, we could merge them.
Or if we abandon the idea that MTD drivers may call the erase
callback from a BH, I suppose :)
*/
- spin_lock_bh(&c->erase_completion_lock);
- c->erasing_size -= c->sector_size;
- c->bad_size += c->sector_size;
- list_del(&jeb->list);
- list_add(&jeb->list, &c->bad_list);
- c->nr_erasing_blocks--;
- spin_unlock_bh(&c->erase_completion_lock);
- wake_up(&c->erase_wait);
+ jffs2_erase_failed(c, jeb);
}
void jffs2_erase_pending_blocks(struct jffs2_sb_info *c)
@@ -115,7 +109,7 @@
down(&c->erase_free_sem);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
while (!list_empty(&c->erase_complete_list) ||
!list_empty(&c->erase_pending_list)) {
@@ -123,7 +117,7 @@
if (!list_empty(&c->erase_complete_list)) {
jeb = list_entry(c->erase_complete_list.next, struct jffs2_eraseblock, list);
list_del(&jeb->list);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_mark_erased_block(c, jeb);
} else if (!list_empty(&c->erase_pending_list)) {
@@ -137,7 +131,7 @@
jeb->used_size = jeb->dirty_size = jeb->free_size = 0;
jffs2_free_all_node_refs(c, jeb);
list_add(&jeb->list, &c->erasing_list);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_erase_block(c, jeb);
@@ -147,10 +141,10 @@
/* Be nice */
cond_resched();
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
D1(printk(KERN_DEBUG "jffs2_erase_pending_blocks completed\n"));
up(&c->erase_free_sem);
@@ -167,8 +161,7 @@
jffs2_erase_pending_trigger(c);
}
-#ifndef __ECOS
-static inline void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
+static void jffs2_erase_failed(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeb)
{
spin_lock(&c->erase_completion_lock);
c->erasing_size -= c->sector_size;
@@ -180,6 +173,7 @@
wake_up(&c->erase_wait);
}
+#ifndef __ECOS
static void jffs2_erase_callback(struct erase_info *instr)
{
struct erase_priv_struct *priv = (void *)instr->priv;
@@ -302,9 +296,9 @@
printk(KERN_WARNING "Failed to allocate raw node ref for clean marker\n");
/* Stick it back on the list from whence it came and come back later */
jffs2_erase_pending_trigger(c);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
list_add(&jeb->list, &c->erase_complete_list);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return;
}
}
@@ -340,13 +334,13 @@
jffs2_write_nand_badblock( c ,jeb );
kfree(ebuf);
bad2:
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
c->erasing_size -= c->sector_size;
c->bad_size += c->sector_size;
list_add_tail(&jeb->list, &c->bad_list);
c->nr_erasing_blocks--;
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
wake_up(&c->erase_wait);
return;
}
@@ -404,7 +398,7 @@
jeb->wasted_size = 0;
}
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
c->erasing_size -= c->sector_size;
c->free_size += jeb->free_size;
c->used_size += jeb->used_size;
@@ -415,7 +409,7 @@
list_add_tail(&jeb->list, &c->free_list);
c->nr_erasing_blocks--;
c->nr_free_blocks++;
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
wake_up(&c->erase_wait);
}
Index: fs.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/fs.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- fs.c 14 Jan 2003 14:06:22 -0000 1.21
+++ fs.c 14 Jan 2003 14:54:31 -0000 1.22
@@ -35,7 +35,7 @@
buf->f_ffree = 0;
buf->f_namelen = JFFS2_MAX_NAME_LEN;
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
avail = c->dirty_size + c->free_size;
if (avail > c->sector_size * JFFS2_RESERVED_BLOCKS_WRITE)
@@ -47,7 +47,7 @@
D1(jffs2_dump_block_lists(c));
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return 0;
}
Index: gc.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/gc.c,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- gc.c 14 Jan 2003 14:06:22 -0000 1.90
+++ gc.c 14 Jan 2003 14:54:32 -0000 1.91
@@ -122,7 +122,7 @@
if (down_interruptible(&c->alloc_sem))
return -EINTR;
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
while (c->unchecked_size) {
/* We can't start doing GC yet. We haven't finished checking
@@ -149,7 +149,7 @@
continue;
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
D1(printk(KERN_DEBUG "jffs2_garbage_collect_pass() triggering inode scan of ino#%d\n", ic->ino));
@@ -175,7 +175,7 @@
if (!jeb) {
printk(KERN_NOTICE "jffs2: Couldn't find erase block to garbage collect!\n");
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
up(&c->alloc_sem);
return -EIO;
}
@@ -198,7 +198,7 @@
printk(KERN_WARNING "eep. End of raw list while still supposedly nodes to GC\n");
printk(KERN_WARNING "erase block at 0x%08x. free_size 0x%08x, dirty_size 0x%08x, used_size 0x%08x\n",
jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
up(&c->alloc_sem);
BUG();
}
@@ -208,7 +208,7 @@
/* Inode-less node. Clean marker, snapshot or something like that */
/* FIXME: If it's something that needs to be copied, including something
we don't grok that has JFFS2_NODETYPE_RWCOMPAT_COPY, we should do so */
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_mark_node_obsolete(c, raw);
up(&c->alloc_sem);
goto eraseit_lock;
@@ -217,7 +217,7 @@
inum = jffs2_raw_ref_to_inum(raw);
D1(printk(KERN_DEBUG "Inode number is #%u\n", inum));
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
D1(printk(KERN_DEBUG "jffs2_garbage_collect_pass collecting from block @0x%08x. Node @0x%08x, ino #%u\n", jeb->offset, ref_offset(raw), inum));
@@ -311,7 +311,7 @@
eraseit_lock:
/* If we've finished this block, start it erasing */
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
eraseit:
if (c->gcblock && !c->gcblock->used_size) {
@@ -322,7 +322,7 @@
c->nr_erasing_blocks++;
jffs2_erase_pending_trigger(c);
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return ret;
}
Index: nodelist.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/nodelist.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- nodelist.c 14 Jan 2003 14:06:22 -0000 1.72
+++ nodelist.c 14 Jan 2003 14:54:32 -0000 1.73
@@ -117,7 +117,7 @@
printk(KERN_WARNING "Eep. no nodes for ino #%lu\n", (unsigned long)ino);
}
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
for (ref = f->inocache->nodes; ref && ref->next_in_ino; ref = ref->next_in_ino) {
/* Work out whether it's a data node or a dirent node */
@@ -129,7 +129,7 @@
/* We can hold a pointer to a non-obsolete node without the spinlock,
but _obsolete_ nodes may disappear at any time, if the block
they're in gets erased */
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
cond_resched();
@@ -246,7 +246,7 @@
printk(KERN_NOTICE "jffs2_get_inode_nodes(): CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
ref_offset(ref), je32_to_cpu(node.i.node_crc), crc);
jffs2_mark_node_obsolete(c, ref);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
continue;
}
@@ -292,14 +292,14 @@
printk(KERN_NOTICE "jffs2_get_inode_nodes(): Data CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n",
ref_offset(ref), je32_to_cpu(node.i.data_crc), crc);
jffs2_mark_node_obsolete(c, ref);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
continue;
}
}
/* Mark the node as having been checked and fix the accounting accordingly */
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
jeb = &c->blocks[ref->flash_offset / c->sector_size];
jeb->used_size += ref->totlen;
jeb->unchecked_size -= ref->totlen;
@@ -322,7 +322,7 @@
D1(printk(KERN_DEBUG "Marking node at 0x%08x REF_NORMAL\n", ref_offset(ref)));
ref->flash_offset = ref_offset(ref) | REF_NORMAL;
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
}
tn = jffs2_alloc_tmp_dnode_info();
@@ -362,7 +362,7 @@
je16_to_cpu(node.u.nodetype), ref_offset(ref));
/* Mark the node as having been checked and fix the accounting accordingly */
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
jeb = &c->blocks[ref->flash_offset / c->sector_size];
jeb->used_size += ref->totlen;
jeb->unchecked_size -= ref->totlen;
@@ -370,7 +370,7 @@
c->unchecked_size -= ref->totlen;
mark_ref_normal(ref);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
}
node.u.nodetype = cpu_to_je16(JFFS2_NODE_ACCURATE | je16_to_cpu(node.u.nodetype));
if (crc32(0, &node, sizeof(struct jffs2_unknown_node)-4) != je32_to_cpu(node.u.hdr_crc)) {
@@ -402,10 +402,10 @@
}
}
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
*tnp = ret_tn;
*fdp = ret_fd;
Index: nodemgmt.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/nodemgmt.c,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -r1.88 -r1.89
--- nodemgmt.c 14 Jan 2003 14:06:22 -0000 1.88
+++ nodemgmt.c 14 Jan 2003 14:54:32 -0000 1.89
@@ -56,7 +56,7 @@
D1(printk(KERN_DEBUG "jffs2_reserve_space(): alloc sem got\n"));
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
/* this needs a little more thought */
while(ret == -EAGAIN) {
@@ -68,14 +68,14 @@
if (c->dirty_size + c->unchecked_size < c->sector_size) {
D1(printk(KERN_DEBUG "dirty size 0x%08x + unchecked_size 0x%08x < sector size 0x%08x, returning -ENOSPC\n",
c->dirty_size, c->unchecked_size, c->sector_size));
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return -ENOSPC;
}
D1(printk(KERN_DEBUG "Triggering GC pass. nr_free_blocks %d, nr_erasing_blocks %d, free_size 0x%08x, dirty_size 0x%08x, wasted_size 0x%08x, used_size 0x%08x, erasing_size 0x%08x, bad_size 0x%08x (total 0x%08x of 0x%08x)\n",
c->nr_free_blocks, c->nr_erasing_blocks, c->free_size, c->dirty_size, c->wasted_size, c->used_size, c->erasing_size, c->bad_size,
c->free_size + c->dirty_size + c->wasted_size + c->used_size + c->erasing_size + c->bad_size, c->flash_size));
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
ret = jffs2_garbage_collect_pass(c);
if (ret)
@@ -87,7 +87,7 @@
return -EINTR;
down(&c->alloc_sem);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
}
ret = jffs2_do_reserve_space(c, minsize, ofs, len);
@@ -95,7 +95,7 @@
D1(printk(KERN_DEBUG "jffs2_reserve_space: ret is %d\n", ret));
}
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
if (ret)
up(&c->alloc_sem);
return ret;
@@ -108,14 +108,14 @@
D1(printk(KERN_DEBUG "jffs2_reserve_space_gc(): Requested 0x%x bytes\n", minsize));
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
while(ret == -EAGAIN) {
ret = jffs2_do_reserve_space(c, minsize, ofs, len);
if (ret) {
D1(printk(KERN_DEBUG "jffs2_reserve_space_gc: looping, ret is %d\n", ret));
}
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return ret;
}
@@ -129,10 +129,10 @@
/* Skip the end of this block and file it as having some dirty space */
/* If there's a pending write to it, flush now */
if (c->wbuf_len) {
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
D1(printk(KERN_DEBUG "jffs2_do_reserve_space: Flushing write buffer\n"));
jffs2_flush_wbuf(c, 1);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
/* We know nobody's going to have changed nextblock. Just continue */
}
c->wasted_size += jeb->free_size;
@@ -188,9 +188,9 @@
!list_empty(&c->erasable_pending_wbuf_list)) {
D1(printk(KERN_DEBUG "jffs2_do_reserve_space: Flushing write buffer\n"));
/* c->nextblock is NULL, no update to c->nextblock allowed */
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_flush_wbuf(c, 1);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
/* Have another go. It'll be on the erasable_list now */
return -EAGAIN;
}
@@ -219,10 +219,10 @@
D1(printk(KERN_DEBUG "Triggering pending erases\n"));
jffs2_erase_pending_trigger(c);
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
schedule();
remove_wait_queue(&c->erase_wait, &wait);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (signal_pending(current)) {
return -EINTR;
}
@@ -256,9 +256,9 @@
already set c->nextblock so that jffs2_mark_node_obsolete()
won't try to refile it to the dirty_list.
*/
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_mark_node_obsolete(c, jeb->first_node);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
}
D1(printk(KERN_DEBUG "jffs2_do_reserve_space(): Giving 0x%x bytes at 0x%x\n", *len, *ofs));
@@ -292,7 +292,7 @@
return -EINVAL;
}
#endif
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (!jeb->first_node)
jeb->first_node = new;
@@ -316,9 +316,9 @@
jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
if (c->wbuf_len) {
/* Flush the last write in the block if it's outstanding */
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
jffs2_flush_wbuf(c, 1);
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
}
list_add_tail(&jeb->list, &c->clean_list);
@@ -327,7 +327,7 @@
ACCT_SANITY_CHECK(c,jeb);
D1(ACCT_PARANOIA_CHECK(jeb));
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return 0;
}
@@ -363,7 +363,7 @@
}
jeb = &c->blocks[blocknr];
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (ref_flags(ref) == REF_UNCHECKED) {
D1(if (unlikely(jeb->unchecked_size < ref->totlen)) {
@@ -408,7 +408,7 @@
obliterate nodes that look obsolete. If they weren't
marked obsolete on the flash at the time they _became_
obsolete, there was probably a reason for that. */
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
return;
}
@@ -478,7 +478,7 @@
jeb->offset, jeb->free_size, jeb->dirty_size, jeb->used_size));
}
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
if (!jffs2_can_mark_obsolete(c))
return;
Index: wbuf.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/wbuf.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- wbuf.c 14 Jan 2003 14:06:22 -0000 1.22
+++ wbuf.c 14 Jan 2003 14:54:32 -0000 1.23
@@ -191,7 +191,7 @@
/* Adjusting free size of next block only, if it's called from fsync ! */
if (pad == 2) {
D1(printk(KERN_DEBUG "jffs2_flush_wbuf() adjusting free_size of c->nextblock\n"));
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
if (!c->nextblock)
BUG();
/* wbuf_pagesize - wbuf_len is the amount of space that's to be
@@ -208,13 +208,13 @@
c->free_size -= (c->wbuf_pagesize - c->wbuf_len);
c->nextblock->wasted_size += (c->wbuf_pagesize - c->wbuf_len);
c->wasted_size += (c->wbuf_pagesize - c->wbuf_len);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
}
/* Stick any now-obsoleted blocks on the erase_pending_list */
- spin_lock_bh(&c->erase_completion_lock);
+ spin_lock(&c->erase_completion_lock);
jffs2_refile_wbuf_blocks(c);
- spin_unlock_bh(&c->erase_completion_lock);
+ spin_unlock(&c->erase_completion_lock);
memset(c->wbuf,0xff,c->wbuf_pagesize);
/* adjust write buffer offset, else we get a non contigous write bug */
- Previous message: mtd/fs/jffs2/ecos/src os-ecos.h,1.2,1.3
- Next message: mtd/fs/jffs2 build.c,1.43,1.44 gc.c,1.91,1.92 nodelist.c,1.73,1.74 nodelist.h,1.89,1.90 os-linux.h,1.22,1.23 readinode.c,1.97,1.98
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the linux-mtd-cvs
mailing list