lkml.org 
[lkml]   [2010]   [Oct]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/6] udf: Remove BKL
    Date
    In the udf_ioctl function replace the bkl with s_lock only for udf_relocate_blocks
    function invoked from the first one.

    In the udf_release_file function the data should be already protected by use
    of i_mutex.

    This work was supported by a hardware donation from the CE Linux Forum.

    Signed-off-by: Alessio Igor Bogani <abogani@texware.it>
    ---
    fs/udf/file.c | 9 +++------
    1 files changed, 3 insertions(+), 6 deletions(-)

    diff --git a/fs/udf/file.c b/fs/udf/file.c
    index 66b9e7e..75a9e99 100644
    --- a/fs/udf/file.c
    +++ b/fs/udf/file.c
    @@ -32,7 +32,7 @@
    #include <linux/string.h> /* memset */
    #include <linux/capability.h>
    #include <linux/errno.h>
    -#include <linux/smp_lock.h>
    +#include <linux/mutex.h>
    #include <linux/pagemap.h>
    #include <linux/buffer_head.h>
    #include <linux/aio.h>
    @@ -149,8 +149,6 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
    long old_block, new_block;
    int result = -EINVAL;

    - lock_kernel();
    -
    if (file_permission(filp, MAY_READ) != 0) {
    udf_debug("no permission to access inode %lu\n", inode->i_ino);
    result = -EPERM;
    @@ -180,8 +178,10 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
    result = -EFAULT;
    goto out;
    }
    + mutex_lock(&inode->i_sb->s_lock);
    result = udf_relocate_blocks(inode->i_sb,
    old_block, &new_block);
    + mutex_unlock(&inode->i_sb->s_lock);
    if (result == 0)
    result = put_user(new_block, (long __user *)arg);
    goto out;
    @@ -196,7 +196,6 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
    }

    out:
    - unlock_kernel();
    return result;
    }

    @@ -204,10 +203,8 @@ static int udf_release_file(struct inode *inode, struct file *filp)
    {
    if (filp->f_mode & FMODE_WRITE) {
    mutex_lock(&inode->i_mutex);
    - lock_kernel();
    udf_discard_prealloc(inode);
    udf_truncate_tail_extent(inode);
    - unlock_kernel();
    mutex_unlock(&inode->i_mutex);
    }
    return 0;
    --
    1.7.0.4


    \
     
     \ /
      Last update: 2010-10-23 13:41    [W:0.021 / U:0.284 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site