From: Andi Kleen <ak@xxxxxxxxxxxxxxx> Don't need the i_mutex for those cases, only for SEEK_HOLE/DATA. Signed-off-by: Andi Kleen <ak@xxxxxxxxxxxxxxx> --- fs/btrfs/file.c | 18 ++++++------------ 1 files changed, 6 insertions(+), 12 deletions(-) diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 62f56d4..ae7f37e 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c @@ -1809,18 +1809,13 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin) struct inode *inode = file->f_mapping->host; int ret; + if (origin != SEEK_DATA && origin != SEEK_HOLE) + return generic_file_llseek(file, offset, origin); + mutex_lock(&inode->i_mutex); - switch (origin) { - case SEEK_END: - case SEEK_CUR: - offset = generic_file_llseek(file, offset, origin); - goto out; - case SEEK_DATA: - case SEEK_HOLE: - ret = find_desired_extent(inode, &offset, origin); - if (ret) - goto error; - } + ret = find_desired_extent(inode, &offset, origin); + if (ret) + goto error; if (offset < 0 && !(file->f_mode & FMODE_UNSIGNED_OFFSET)) { ret = -EINVAL; @@ -1836,7 +1831,6 @@ static loff_t btrfs_file_llseek(struct file *file, loff_t offset, int origin) file->f_pos = offset; file->f_version = 0; } -out: mutex_unlock(&inode->i_mutex); return offset; error: -- 1.7.4.4 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html