Loading fs/sysv/balloc.c +9 −9 Original line number Original line Diff line number Diff line Loading @@ -60,12 +60,12 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) return; return; } } lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); if (count > sbi->s_flc_size) { if (count > sbi->s_flc_size) { printk("sysv_free_block: flc_count > flc_size\n"); printk("sysv_free_block: flc_count > flc_size\n"); unlock_super(sb); mutex_unlock(&sbi->s_lock); return; return; } } /* If the free list head in super-block is full, it is copied /* If the free list head in super-block is full, it is copied Loading @@ -77,7 +77,7 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) bh = sb_getblk(sb, block); bh = sb_getblk(sb, block); if (!bh) { if (!bh) { printk("sysv_free_block: getblk() failed\n"); printk("sysv_free_block: getblk() failed\n"); unlock_super(sb); mutex_unlock(&sbi->s_lock); return; return; } } memset(bh->b_data, 0, sb->s_blocksize); memset(bh->b_data, 0, sb->s_blocksize); Loading @@ -93,7 +93,7 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) *sbi->s_bcache_count = cpu_to_fs16(sbi, count); *sbi->s_bcache_count = cpu_to_fs16(sbi, count); fs32_add(sbi, sbi->s_free_blocks, 1); fs32_add(sbi, sbi->s_free_blocks, 1); dirty_sb(sb); dirty_sb(sb); unlock_super(sb); mutex_unlock(&sbi->s_lock); } } sysv_zone_t sysv_new_block(struct super_block * sb) sysv_zone_t sysv_new_block(struct super_block * sb) Loading @@ -104,7 +104,7 @@ sysv_zone_t sysv_new_block(struct super_block * sb) struct buffer_head * bh; struct buffer_head * bh; unsigned count; unsigned count; lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); if (count == 0) /* Applies only to Coherent FS */ if (count == 0) /* Applies only to Coherent FS */ Loading Loading @@ -147,11 +147,11 @@ sysv_zone_t sysv_new_block(struct super_block * sb) /* Now the free list head in the superblock is valid again. */ /* Now the free list head in the superblock is valid again. */ fs32_add(sbi, sbi->s_free_blocks, -1); fs32_add(sbi, sbi->s_free_blocks, -1); dirty_sb(sb); dirty_sb(sb); unlock_super(sb); mutex_unlock(&sbi->s_lock); return nr; return nr; Enospc: Enospc: unlock_super(sb); mutex_unlock(&sbi->s_lock); return 0; return 0; } } Loading @@ -173,7 +173,7 @@ unsigned long sysv_count_free_blocks(struct super_block * sb) if (sbi->s_type == FSTYPE_AFS) if (sbi->s_type == FSTYPE_AFS) return 0; return 0; lock_super(sb); mutex_lock(&sbi->s_lock); sb_count = fs32_to_cpu(sbi, *sbi->s_free_blocks); sb_count = fs32_to_cpu(sbi, *sbi->s_free_blocks); if (0) if (0) Loading Loading @@ -211,7 +211,7 @@ unsigned long sysv_count_free_blocks(struct super_block * sb) if (count != sb_count) if (count != sb_count) goto Ecount; goto Ecount; done: done: unlock_super(sb); mutex_unlock(&sbi->s_lock); return count; return count; Einval: Einval: Loading fs/sysv/ialloc.c +7 −7 Original line number Original line Diff line number Diff line Loading @@ -118,7 +118,7 @@ void sysv_free_inode(struct inode * inode) "%s\n", inode->i_sb->s_id); "%s\n", inode->i_sb->s_id); return; return; } } lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); if (count < sbi->s_fic_size) { if (count < sbi->s_fic_size) { *sv_sb_fic_inode(sb,count++) = cpu_to_fs16(sbi, ino); *sv_sb_fic_inode(sb,count++) = cpu_to_fs16(sbi, ino); Loading @@ -128,7 +128,7 @@ void sysv_free_inode(struct inode * inode) dirty_sb(sb); dirty_sb(sb); memset(raw_inode, 0, sizeof(struct sysv_inode)); memset(raw_inode, 0, sizeof(struct sysv_inode)); mark_buffer_dirty(bh); mark_buffer_dirty(bh); unlock_super(sb); mutex_unlock(&sbi->s_lock); brelse(bh); brelse(bh); } } Loading @@ -147,13 +147,13 @@ struct inode * sysv_new_inode(const struct inode * dir, umode_t mode) if (!inode) if (!inode) return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); if (count == 0 || (*sv_sb_fic_inode(sb,count-1) == 0)) { if (count == 0 || (*sv_sb_fic_inode(sb,count-1) == 0)) { count = refill_free_cache(sb); count = refill_free_cache(sb); if (count == 0) { if (count == 0) { iput(inode); iput(inode); unlock_super(sb); mutex_unlock(&sbi->s_lock); return ERR_PTR(-ENOSPC); return ERR_PTR(-ENOSPC); } } } } Loading @@ -174,7 +174,7 @@ struct inode * sysv_new_inode(const struct inode * dir, umode_t mode) sysv_write_inode(inode, &wbc); /* ensure inode not allocated again */ sysv_write_inode(inode, &wbc); /* ensure inode not allocated again */ mark_inode_dirty(inode); /* cleared by sysv_write_inode() */ mark_inode_dirty(inode); /* cleared by sysv_write_inode() */ /* That's it. */ /* That's it. */ unlock_super(sb); mutex_unlock(&sbi->s_lock); return inode; return inode; } } Loading @@ -185,7 +185,7 @@ unsigned long sysv_count_free_inodes(struct super_block * sb) struct sysv_inode * raw_inode; struct sysv_inode * raw_inode; int ino, count, sb_count; int ino, count, sb_count; lock_super(sb); mutex_lock(&sbi->s_lock); sb_count = fs16_to_cpu(sbi, *sbi->s_sb_total_free_inodes); sb_count = fs16_to_cpu(sbi, *sbi->s_sb_total_free_inodes); Loading Loading @@ -213,7 +213,7 @@ unsigned long sysv_count_free_inodes(struct super_block * sb) if (count != sb_count) if (count != sb_count) goto Einval; goto Einval; out: out: unlock_super(sb); mutex_unlock(&sbi->s_lock); return count; return count; Einval: Einval: Loading fs/sysv/inode.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ static int sysv_sync_fs(struct super_block *sb, int wait) struct sysv_sb_info *sbi = SYSV_SB(sb); struct sysv_sb_info *sbi = SYSV_SB(sb); unsigned long time = get_seconds(), old_time; unsigned long time = get_seconds(), old_time; lock_super(sb); mutex_lock(&sbi->s_lock); /* /* * If we are going to write out the super block, * If we are going to write out the super block, Loading @@ -51,7 +51,7 @@ static int sysv_sync_fs(struct super_block *sb, int wait) mark_buffer_dirty(sbi->s_bh2); mark_buffer_dirty(sbi->s_bh2); } } unlock_super(sb); mutex_unlock(&sbi->s_lock); return 0; return 0; } } Loading fs/sysv/super.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -368,6 +368,7 @@ static int sysv_fill_super(struct super_block *sb, void *data, int silent) sbi->s_sb = sb; sbi->s_sb = sb; sbi->s_block_base = 0; sbi->s_block_base = 0; mutex_init(&sbi->s_lock); sb->s_fs_info = sbi; sb->s_fs_info = sbi; sb_set_blocksize(sb, BLOCK_SIZE); sb_set_blocksize(sb, BLOCK_SIZE); Loading fs/sysv/sysv.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,7 @@ struct sysv_sb_info { u32 s_nzones; /* same as s_sbd->s_fsize */ u32 s_nzones; /* same as s_sbd->s_fsize */ u16 s_namelen; /* max length of dir entry */ u16 s_namelen; /* max length of dir entry */ int s_forced_ro; int s_forced_ro; struct mutex s_lock; }; }; /* /* Loading Loading
fs/sysv/balloc.c +9 −9 Original line number Original line Diff line number Diff line Loading @@ -60,12 +60,12 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) return; return; } } lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); if (count > sbi->s_flc_size) { if (count > sbi->s_flc_size) { printk("sysv_free_block: flc_count > flc_size\n"); printk("sysv_free_block: flc_count > flc_size\n"); unlock_super(sb); mutex_unlock(&sbi->s_lock); return; return; } } /* If the free list head in super-block is full, it is copied /* If the free list head in super-block is full, it is copied Loading @@ -77,7 +77,7 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) bh = sb_getblk(sb, block); bh = sb_getblk(sb, block); if (!bh) { if (!bh) { printk("sysv_free_block: getblk() failed\n"); printk("sysv_free_block: getblk() failed\n"); unlock_super(sb); mutex_unlock(&sbi->s_lock); return; return; } } memset(bh->b_data, 0, sb->s_blocksize); memset(bh->b_data, 0, sb->s_blocksize); Loading @@ -93,7 +93,7 @@ void sysv_free_block(struct super_block * sb, sysv_zone_t nr) *sbi->s_bcache_count = cpu_to_fs16(sbi, count); *sbi->s_bcache_count = cpu_to_fs16(sbi, count); fs32_add(sbi, sbi->s_free_blocks, 1); fs32_add(sbi, sbi->s_free_blocks, 1); dirty_sb(sb); dirty_sb(sb); unlock_super(sb); mutex_unlock(&sbi->s_lock); } } sysv_zone_t sysv_new_block(struct super_block * sb) sysv_zone_t sysv_new_block(struct super_block * sb) Loading @@ -104,7 +104,7 @@ sysv_zone_t sysv_new_block(struct super_block * sb) struct buffer_head * bh; struct buffer_head * bh; unsigned count; unsigned count; lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); count = fs16_to_cpu(sbi, *sbi->s_bcache_count); if (count == 0) /* Applies only to Coherent FS */ if (count == 0) /* Applies only to Coherent FS */ Loading Loading @@ -147,11 +147,11 @@ sysv_zone_t sysv_new_block(struct super_block * sb) /* Now the free list head in the superblock is valid again. */ /* Now the free list head in the superblock is valid again. */ fs32_add(sbi, sbi->s_free_blocks, -1); fs32_add(sbi, sbi->s_free_blocks, -1); dirty_sb(sb); dirty_sb(sb); unlock_super(sb); mutex_unlock(&sbi->s_lock); return nr; return nr; Enospc: Enospc: unlock_super(sb); mutex_unlock(&sbi->s_lock); return 0; return 0; } } Loading @@ -173,7 +173,7 @@ unsigned long sysv_count_free_blocks(struct super_block * sb) if (sbi->s_type == FSTYPE_AFS) if (sbi->s_type == FSTYPE_AFS) return 0; return 0; lock_super(sb); mutex_lock(&sbi->s_lock); sb_count = fs32_to_cpu(sbi, *sbi->s_free_blocks); sb_count = fs32_to_cpu(sbi, *sbi->s_free_blocks); if (0) if (0) Loading Loading @@ -211,7 +211,7 @@ unsigned long sysv_count_free_blocks(struct super_block * sb) if (count != sb_count) if (count != sb_count) goto Ecount; goto Ecount; done: done: unlock_super(sb); mutex_unlock(&sbi->s_lock); return count; return count; Einval: Einval: Loading
fs/sysv/ialloc.c +7 −7 Original line number Original line Diff line number Diff line Loading @@ -118,7 +118,7 @@ void sysv_free_inode(struct inode * inode) "%s\n", inode->i_sb->s_id); "%s\n", inode->i_sb->s_id); return; return; } } lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); if (count < sbi->s_fic_size) { if (count < sbi->s_fic_size) { *sv_sb_fic_inode(sb,count++) = cpu_to_fs16(sbi, ino); *sv_sb_fic_inode(sb,count++) = cpu_to_fs16(sbi, ino); Loading @@ -128,7 +128,7 @@ void sysv_free_inode(struct inode * inode) dirty_sb(sb); dirty_sb(sb); memset(raw_inode, 0, sizeof(struct sysv_inode)); memset(raw_inode, 0, sizeof(struct sysv_inode)); mark_buffer_dirty(bh); mark_buffer_dirty(bh); unlock_super(sb); mutex_unlock(&sbi->s_lock); brelse(bh); brelse(bh); } } Loading @@ -147,13 +147,13 @@ struct inode * sysv_new_inode(const struct inode * dir, umode_t mode) if (!inode) if (!inode) return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM); lock_super(sb); mutex_lock(&sbi->s_lock); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); count = fs16_to_cpu(sbi, *sbi->s_sb_fic_count); if (count == 0 || (*sv_sb_fic_inode(sb,count-1) == 0)) { if (count == 0 || (*sv_sb_fic_inode(sb,count-1) == 0)) { count = refill_free_cache(sb); count = refill_free_cache(sb); if (count == 0) { if (count == 0) { iput(inode); iput(inode); unlock_super(sb); mutex_unlock(&sbi->s_lock); return ERR_PTR(-ENOSPC); return ERR_PTR(-ENOSPC); } } } } Loading @@ -174,7 +174,7 @@ struct inode * sysv_new_inode(const struct inode * dir, umode_t mode) sysv_write_inode(inode, &wbc); /* ensure inode not allocated again */ sysv_write_inode(inode, &wbc); /* ensure inode not allocated again */ mark_inode_dirty(inode); /* cleared by sysv_write_inode() */ mark_inode_dirty(inode); /* cleared by sysv_write_inode() */ /* That's it. */ /* That's it. */ unlock_super(sb); mutex_unlock(&sbi->s_lock); return inode; return inode; } } Loading @@ -185,7 +185,7 @@ unsigned long sysv_count_free_inodes(struct super_block * sb) struct sysv_inode * raw_inode; struct sysv_inode * raw_inode; int ino, count, sb_count; int ino, count, sb_count; lock_super(sb); mutex_lock(&sbi->s_lock); sb_count = fs16_to_cpu(sbi, *sbi->s_sb_total_free_inodes); sb_count = fs16_to_cpu(sbi, *sbi->s_sb_total_free_inodes); Loading Loading @@ -213,7 +213,7 @@ unsigned long sysv_count_free_inodes(struct super_block * sb) if (count != sb_count) if (count != sb_count) goto Einval; goto Einval; out: out: unlock_super(sb); mutex_unlock(&sbi->s_lock); return count; return count; Einval: Einval: Loading
fs/sysv/inode.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ static int sysv_sync_fs(struct super_block *sb, int wait) struct sysv_sb_info *sbi = SYSV_SB(sb); struct sysv_sb_info *sbi = SYSV_SB(sb); unsigned long time = get_seconds(), old_time; unsigned long time = get_seconds(), old_time; lock_super(sb); mutex_lock(&sbi->s_lock); /* /* * If we are going to write out the super block, * If we are going to write out the super block, Loading @@ -51,7 +51,7 @@ static int sysv_sync_fs(struct super_block *sb, int wait) mark_buffer_dirty(sbi->s_bh2); mark_buffer_dirty(sbi->s_bh2); } } unlock_super(sb); mutex_unlock(&sbi->s_lock); return 0; return 0; } } Loading
fs/sysv/super.c +1 −0 Original line number Original line Diff line number Diff line Loading @@ -368,6 +368,7 @@ static int sysv_fill_super(struct super_block *sb, void *data, int silent) sbi->s_sb = sb; sbi->s_sb = sb; sbi->s_block_base = 0; sbi->s_block_base = 0; mutex_init(&sbi->s_lock); sb->s_fs_info = sbi; sb->s_fs_info = sbi; sb_set_blocksize(sb, BLOCK_SIZE); sb_set_blocksize(sb, BLOCK_SIZE); Loading
fs/sysv/sysv.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -58,6 +58,7 @@ struct sysv_sb_info { u32 s_nzones; /* same as s_sbd->s_fsize */ u32 s_nzones; /* same as s_sbd->s_fsize */ u16 s_namelen; /* max length of dir entry */ u16 s_namelen; /* max length of dir entry */ int s_forced_ro; int s_forced_ro; struct mutex s_lock; }; }; /* /* Loading