Loading fs/ext4/file.c +1 −46 Original line number Diff line number Diff line Loading @@ -224,53 +224,8 @@ loff_t ext4_llseek(struct file *file, loff_t offset, int origin) maxbytes = EXT4_SB(inode->i_sb)->s_bitmap_maxbytes; else maxbytes = inode->i_sb->s_maxbytes; mutex_lock(&inode->i_mutex); switch (origin) { case SEEK_END: offset += inode->i_size; break; case SEEK_CUR: if (offset == 0) { mutex_unlock(&inode->i_mutex); return file->f_pos; } offset += file->f_pos; break; case SEEK_DATA: /* * In the generic case the entire file is data, so as long as * offset isn't at the end of the file then the offset is data. */ if (offset >= inode->i_size) { mutex_unlock(&inode->i_mutex); return -ENXIO; } break; case SEEK_HOLE: /* * There is a virtual hole at the end of the file, so as long as * offset isn't i_size or larger, return i_size. */ if (offset >= inode->i_size) { mutex_unlock(&inode->i_mutex); return -ENXIO; } offset = inode->i_size; break; } if (offset < 0 || offset > maxbytes) { mutex_unlock(&inode->i_mutex); return -EINVAL; } if (offset != file->f_pos) { file->f_pos = offset; file->f_version = 0; } mutex_unlock(&inode->i_mutex); return offset; return generic_file_llseek_size(file, offset, origin, maxbytes); } const struct file_operations ext4_file_operations = { Loading Loading
fs/ext4/file.c +1 −46 Original line number Diff line number Diff line Loading @@ -224,53 +224,8 @@ loff_t ext4_llseek(struct file *file, loff_t offset, int origin) maxbytes = EXT4_SB(inode->i_sb)->s_bitmap_maxbytes; else maxbytes = inode->i_sb->s_maxbytes; mutex_lock(&inode->i_mutex); switch (origin) { case SEEK_END: offset += inode->i_size; break; case SEEK_CUR: if (offset == 0) { mutex_unlock(&inode->i_mutex); return file->f_pos; } offset += file->f_pos; break; case SEEK_DATA: /* * In the generic case the entire file is data, so as long as * offset isn't at the end of the file then the offset is data. */ if (offset >= inode->i_size) { mutex_unlock(&inode->i_mutex); return -ENXIO; } break; case SEEK_HOLE: /* * There is a virtual hole at the end of the file, so as long as * offset isn't i_size or larger, return i_size. */ if (offset >= inode->i_size) { mutex_unlock(&inode->i_mutex); return -ENXIO; } offset = inode->i_size; break; } if (offset < 0 || offset > maxbytes) { mutex_unlock(&inode->i_mutex); return -EINVAL; } if (offset != file->f_pos) { file->f_pos = offset; file->f_version = 0; } mutex_unlock(&inode->i_mutex); return offset; return generic_file_llseek_size(file, offset, origin, maxbytes); } const struct file_operations ext4_file_operations = { Loading