lkml.org 
[lkml]   [2010]   [Sep]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 14/15] vfs: don't use BKL in default_llseek
    Date
    There are currently 191 users of default_llseek.
    Nine of these are in device drivers that use the
    big kernel lock. None of these ever touch
    file->f_pos outside of llseek or file_pos_write.

    Consequently, we never rely on the BKL
    in the default_llseek function and can
    replace that with i_mutex, which is also
    used in generic_file_llseek.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    fs/read_write.c | 4 ++--
    1 files changed, 2 insertions(+), 2 deletions(-)
    diff --git a/fs/read_write.c b/fs/read_write.c
    index 74e3658..fd09f61 100644
    --- a/fs/read_write.c
    +++ b/fs/read_write.c
    @@ -124,7 +124,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin)
    {
    loff_t retval;

    - lock_kernel();
    + mutex_lock(&file->f_dentry->d_inode->i_mutex);
    switch (origin) {
    case SEEK_END:
    offset += i_size_read(file->f_path.dentry->d_inode);
    @@ -145,7 +145,7 @@ loff_t default_llseek(struct file *file, loff_t offset, int origin)
    retval = offset;
    }
    out:
    - unlock_kernel();
    + mutex_unlock(&file->f_dentry->d_inode->i_mutex);
    return retval;
    }
    EXPORT_SYMBOL(default_llseek);
    --
    1.7.1


    \
     
     \ /
      Last update: 2010-09-14 22:25    [W:0.315 / U:0.544 seconds]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean