Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 106152
b: refs/heads/master
c: 7d135a5
h: refs/heads/master
v: v3
  • Loading branch information
Matthias Kaehlcke authored and Linus Torvalds committed Jul 26, 2008
1 parent 7f335d0 commit 905a9bf
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1956a96de488feb05e95c08c9d5e80f63a4be2b1
refs/heads/master: 7d135a5d50a08bbc53b189d79d8bdb03136f5303
3 changes: 2 additions & 1 deletion trunk/fs/affs/affs.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#include <linux/fs.h>
#include <linux/buffer_head.h>
#include <linux/amigaffs.h>
#include <linux/mutex.h>

/* AmigaOS allows file names with up to 30 characters length.
* Names longer than that will be silently truncated. If you
Expand Down Expand Up @@ -98,7 +99,7 @@ struct affs_sb_info {
gid_t s_gid; /* gid to override */
umode_t s_mode; /* mode to override */
struct buffer_head *s_root_bh; /* Cached root block. */
struct semaphore s_bmlock; /* Protects bitmap access. */
struct mutex s_bmlock; /* Protects bitmap access. */
struct affs_bm_info *s_bitmap; /* Bitmap infos. */
u32 s_bmap_count; /* # of bitmap blocks. */
u32 s_bmap_bits; /* # of bits in one bitmap blocks */
Expand Down
18 changes: 9 additions & 9 deletions trunk/fs/affs/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,14 @@ affs_count_free_blocks(struct super_block *sb)
if (sb->s_flags & MS_RDONLY)
return 0;

down(&AFFS_SB(sb)->s_bmlock);
mutex_lock(&AFFS_SB(sb)->s_bmlock);

bm = AFFS_SB(sb)->s_bitmap;
free = 0;
for (i = AFFS_SB(sb)->s_bmap_count; i > 0; bm++, i--)
free += bm->bm_free;

up(&AFFS_SB(sb)->s_bmlock);
mutex_unlock(&AFFS_SB(sb)->s_bmlock);

return free;
}
Expand All @@ -76,7 +76,7 @@ affs_free_block(struct super_block *sb, u32 block)
bit = blk % sbi->s_bmap_bits;
bm = &sbi->s_bitmap[bmap];

down(&sbi->s_bmlock);
mutex_lock(&sbi->s_bmlock);

bh = sbi->s_bmap_bh;
if (sbi->s_last_bmap != bmap) {
Expand Down Expand Up @@ -105,19 +105,19 @@ affs_free_block(struct super_block *sb, u32 block)
sb->s_dirt = 1;
bm->bm_free++;

up(&sbi->s_bmlock);
mutex_unlock(&sbi->s_bmlock);
return;

err_free:
affs_warning(sb,"affs_free_block","Trying to free block %u which is already free", block);
up(&sbi->s_bmlock);
mutex_unlock(&sbi->s_bmlock);
return;

err_bh_read:
affs_error(sb,"affs_free_block","Cannot read bitmap block %u", bm->bm_key);
sbi->s_bmap_bh = NULL;
sbi->s_last_bmap = ~0;
up(&sbi->s_bmlock);
mutex_unlock(&sbi->s_bmlock);
return;

err_range:
Expand Down Expand Up @@ -168,7 +168,7 @@ affs_alloc_block(struct inode *inode, u32 goal)
bmap = blk / sbi->s_bmap_bits;
bm = &sbi->s_bitmap[bmap];

down(&sbi->s_bmlock);
mutex_lock(&sbi->s_bmlock);

if (bm->bm_free)
goto find_bmap_bit;
Expand Down Expand Up @@ -249,7 +249,7 @@ affs_alloc_block(struct inode *inode, u32 goal)
mark_buffer_dirty(bh);
sb->s_dirt = 1;

up(&sbi->s_bmlock);
mutex_unlock(&sbi->s_bmlock);

pr_debug("%d\n", blk);
return blk;
Expand All @@ -259,7 +259,7 @@ affs_alloc_block(struct inode *inode, u32 goal)
sbi->s_bmap_bh = NULL;
sbi->s_last_bmap = ~0;
err_full:
up(&sbi->s_bmlock);
mutex_unlock(&sbi->s_bmlock);
pr_debug("failed\n");
return 0;
}
Expand Down
2 changes: 1 addition & 1 deletion trunk/fs/affs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ static int affs_fill_super(struct super_block *sb, void *data, int silent)
if (!sbi)
return -ENOMEM;
sb->s_fs_info = sbi;
init_MUTEX(&sbi->s_bmlock);
mutex_init(&sbi->s_bmlock);

if (!parse_options(data,&uid,&gid,&i,&reserved,&root_block,
&blocksize,&sbi->s_prefix,
Expand Down

0 comments on commit 905a9bf

Please sign in to comment.