Skip to content

Commit

Permalink
[OCFS2] Make ip_io_sem a mutex
Browse files Browse the repository at this point in the history
ip_io_sem is now ip_io_mutex.

Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
  • Loading branch information
Mark Fasheh committed Feb 3, 2006
1 parent aee93ac commit 251b6ec
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 18 deletions.
10 changes: 5 additions & 5 deletions fs/ocfs2/buffer_head_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,
goto out;
}

down(&OCFS2_I(inode)->ip_io_sem);
mutex_lock(&OCFS2_I(inode)->ip_io_mutex);

lock_buffer(bh);
set_buffer_uptodate(bh);
Expand All @@ -82,7 +82,7 @@ int ocfs2_write_block(struct ocfs2_super *osb, struct buffer_head *bh,
brelse(bh);
}

up(&OCFS2_I(inode)->ip_io_sem);
mutex_unlock(&OCFS2_I(inode)->ip_io_mutex);
out:
mlog_exit(ret);
return ret;
Expand Down Expand Up @@ -125,13 +125,13 @@ int ocfs2_read_blocks(struct ocfs2_super *osb, u64 block, int nr,
flags &= ~OCFS2_BH_CACHED;

if (inode)
down(&OCFS2_I(inode)->ip_io_sem);
mutex_lock(&OCFS2_I(inode)->ip_io_mutex);
for (i = 0 ; i < nr ; i++) {
if (bhs[i] == NULL) {
bhs[i] = sb_getblk(sb, block++);
if (bhs[i] == NULL) {
if (inode)
up(&OCFS2_I(inode)->ip_io_sem);
mutex_unlock(&OCFS2_I(inode)->ip_io_mutex);
status = -EIO;
mlog_errno(status);
goto bail;
Expand Down Expand Up @@ -220,7 +220,7 @@ int ocfs2_read_blocks(struct ocfs2_super *osb, u64 block, int nr,
ocfs2_set_buffer_uptodate(inode, bh);
}
if (inode)
up(&OCFS2_I(inode)->ip_io_sem);
mutex_unlock(&OCFS2_I(inode)->ip_io_mutex);

mlog(ML_BH_IO, "block=(%"MLFu64"), nr=(%d), cached=%s\n", block, nr,
(!(flags & OCFS2_BH_CACHED) || ignore_cache) ? "no" : "yes");
Expand Down
6 changes: 3 additions & 3 deletions fs/ocfs2/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -903,10 +903,10 @@ void ocfs2_clear_inode(struct inode *inode)
"Clear inode of %"MLFu64", inode is locked\n",
oi->ip_blkno);

mlog_bug_on_msg(down_trylock(&oi->ip_io_sem),
"Clear inode of %"MLFu64", io_sem is locked\n",
mlog_bug_on_msg(!mutex_trylock(&oi->ip_io_mutex),
"Clear inode of %"MLFu64", io_mutex is locked\n",
oi->ip_blkno);
up(&oi->ip_io_sem);
mutex_unlock(&oi->ip_io_mutex);

/*
* down_trylock() returns 0, down_write_trylock() returns 1
Expand Down
4 changes: 2 additions & 2 deletions fs/ocfs2/inode.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ struct ocfs2_inode_info
struct list_head ip_io_markers;
int ip_orphaned_slot;

struct semaphore ip_io_sem;
struct mutex ip_io_mutex;

/* Used by the journalling code to attach an inode to a
* handle. These are protected by ip_io_sem in order to lock
* handle. These are protected by ip_io_mutex in order to lock
* out other I/O to the inode until we either commit or
* abort. */
struct list_head ip_handle_list;
Expand Down
4 changes: 2 additions & 2 deletions fs/ocfs2/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
* j_trans_barrier for us. */
ocfs2_set_inode_lock_trans(OCFS2_SB(inode->i_sb)->journal, inode);

down(&OCFS2_I(inode)->ip_io_sem);
mutex_lock(&OCFS2_I(inode)->ip_io_mutex);
switch (type) {
case OCFS2_JOURNAL_ACCESS_CREATE:
case OCFS2_JOURNAL_ACCESS_WRITE:
Expand All @@ -416,7 +416,7 @@ int ocfs2_journal_access(struct ocfs2_journal_handle *handle,
status = -EINVAL;
mlog(ML_ERROR, "Uknown access type!\n");
}
up(&OCFS2_I(inode)->ip_io_sem);
mutex_unlock(&OCFS2_I(inode)->ip_io_mutex);

if (status < 0)
mlog(ML_ERROR, "Error %d getting %d access to buffer!\n",
Expand Down
2 changes: 1 addition & 1 deletion fs/ocfs2/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -932,7 +932,7 @@ static void ocfs2_inode_init_once(void *data,
oi->ip_dir_start_lookup = 0;

init_rwsem(&oi->ip_alloc_sem);
init_MUTEX(&(oi->ip_io_sem));
mutex_init(&oi->ip_io_mutex);

oi->ip_blkno = 0ULL;
oi->ip_clusters = 0;
Expand Down
10 changes: 5 additions & 5 deletions fs/ocfs2/uptodate.c
Original file line number Diff line number Diff line change
Expand Up @@ -388,7 +388,7 @@ static void __ocfs2_set_buffer_uptodate(struct ocfs2_inode_info *oi,
}
}

/* Item insertion is guarded by ip_io_sem, so the insertion path takes
/* Item insertion is guarded by ip_io_mutex, so the insertion path takes
* advantage of this by not rechecking for a duplicate insert during
* the slow case. Additionally, if the cache needs to be bumped up to
* a tree, the code will not recheck after acquiring the lock --
Expand Down Expand Up @@ -418,7 +418,7 @@ void ocfs2_set_buffer_uptodate(struct inode *inode,
(unsigned long long) bh->b_blocknr);

/* No need to recheck under spinlock - insertion is guarded by
* ip_io_sem */
* ip_io_mutex */
spin_lock(&oi->ip_lock);
if (ocfs2_insert_can_use_array(oi, ci)) {
/* Fast case - it's an array and there's a free
Expand All @@ -440,7 +440,7 @@ void ocfs2_set_buffer_uptodate(struct inode *inode,

/* Called against a newly allocated buffer. Most likely nobody should
* be able to read this sort of metadata while it's still being
* allocated, but this is careful to take ip_io_sem anyway. */
* allocated, but this is careful to take ip_io_mutex anyway. */
void ocfs2_set_new_buffer_uptodate(struct inode *inode,
struct buffer_head *bh)
{
Expand All @@ -451,9 +451,9 @@ void ocfs2_set_new_buffer_uptodate(struct inode *inode,

set_buffer_uptodate(bh);

down(&oi->ip_io_sem);
mutex_lock(&oi->ip_io_mutex);
ocfs2_set_buffer_uptodate(inode, bh);
up(&oi->ip_io_sem);
mutex_unlock(&oi->ip_io_mutex);
}

/* Requires ip_lock. */
Expand Down

0 comments on commit 251b6ec

Please sign in to comment.