int bitmap_nr;
        unsigned long overflow;
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        if (bloc.logicalBlockNum < 0 ||
                (bloc.logicalBlockNum + count) > UDF_SB_PARTLEN(sb, bloc.partitionReferenceNum))
        {
        sb->s_dirt = 1;
        if (UDF_SB_LVIDBH(sb))
                mark_buffer_dirty(UDF_SB_LVIDBH(sb));
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        return;
 }
 
        int nr_groups, bitmap_nr;
        struct buffer_head *bh;
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        if (first_block < 0 || first_block >= UDF_SB_PARTLEN(sb, partition))
                goto out;
 
                mark_buffer_dirty(UDF_SB_LVIDBH(sb));
        }
        sb->s_dirt = 1;
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        return alloc_count;
 }
 
        int newblock = 0;
 
        *err = -ENOSPC;
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
 
 repeat:
        if (goal < 0 || goal >= UDF_SB_PARTLEN(sb, partition))
        }
        if (i >= (nr_groups*2))
        {
-               up(&sbi->s_alloc_sem);
+               mutex_unlock(&sbi->s_alloc_mutex);
                return newblock;
        }
        if (bit < sb->s_blocksize << 3)
                bit = udf_find_next_one_bit(bh->b_data, sb->s_blocksize << 3, group_start << 3);
        if (bit >= sb->s_blocksize << 3)
        {
-               up(&sbi->s_alloc_sem);
+               mutex_unlock(&sbi->s_alloc_mutex);
                return 0;
        }
 
         */
        if (inode && DQUOT_ALLOC_BLOCK(inode, 1))
        {
-               up(&sbi->s_alloc_sem);
+               mutex_unlock(&sbi->s_alloc_mutex);
                *err = -EDQUOT;
                return 0;
        }
                mark_buffer_dirty(UDF_SB_LVIDBH(sb));
        }
        sb->s_dirt = 1;
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        *err = 0;
        return newblock;
 
 error_return:
        *err = -EIO;
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        return 0;
 }
 
        int8_t etype;
        int i;
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        if (bloc.logicalBlockNum < 0 ||
                (bloc.logicalBlockNum + count) > UDF_SB_PARTLEN(sb, bloc.partitionReferenceNum))
        {
 
 error_return:
        sb->s_dirt = 1;
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        return;
 }
 
        else
                return 0;
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        extoffset = sizeof(struct unallocSpaceEntry);
        bloc = UDF_I_LOCATION(table);
 
                mark_buffer_dirty(UDF_SB_LVIDBH(sb));
                sb->s_dirt = 1;
        }
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        return alloc_count;
 }
 
        else
                return newblock;
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        if (goal < 0 || goal >= UDF_SB_PARTLEN(sb, partition))
                goal = 0;
 
        if (spread == 0xFFFFFFFF)
        {
                udf_release_data(goal_bh);
-               up(&sbi->s_alloc_sem);
+               mutex_unlock(&sbi->s_alloc_mutex);
                return 0;
        }
 
        if (inode && DQUOT_ALLOC_BLOCK(inode, 1))
        {
                udf_release_data(goal_bh);
-               up(&sbi->s_alloc_sem);
+               mutex_unlock(&sbi->s_alloc_mutex);
                *err = -EDQUOT;
                return 0;
        }
        }
 
        sb->s_dirt = 1;
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
        *err = 0;
        return newblock;
 }
 
 
        clear_inode(inode);
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        if (sbi->s_lvidbh) {
                if (S_ISDIR(inode->i_mode))
                        UDF_SB_LVIDIU(sb)->numDirs =
                
                mark_buffer_dirty(sbi->s_lvidbh);
        }
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
 
        udf_free_blocks(sb, NULL, UDF_I_LOCATION(inode), 0, 1);
 }
                return NULL;
        }
 
-       down(&sbi->s_alloc_sem);
+       mutex_lock(&sbi->s_alloc_mutex);
        UDF_I_UNIQUE(inode) = 0;
        UDF_I_LENEXTENTS(inode) = 0;
        UDF_I_NEXT_ALLOC_BLOCK(inode) = 0;
                UDF_I_CRTIME(inode) = current_fs_time(inode->i_sb);
        insert_inode_hash(inode);
        mark_inode_dirty(inode);
-       up(&sbi->s_alloc_sem);
+       mutex_unlock(&sbi->s_alloc_mutex);
 
        if (DQUOT_ALLOC_INODE(inode))
        {