mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile (part one) from Al Viro: "Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent locking violations, etc. The most visible changes here are death of FS_REVAL_DOT (replaced with "has ->d_weak_revalidate()") and a new helper getting from struct file to inode. Some bits of preparation to xattr method interface changes. Misc patches by various people sent this cycle *and* ocfs2 fixes from several cycles ago that should've been upstream right then. PS: the next vfs pile will be xattr stuff." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits) saner proc_get_inode() calling conventions proc: avoid extra pde_put() in proc_fill_super() fs: change return values from -EACCES to -EPERM fs/exec.c: make bprm_mm_init() static ocfs2/dlm: use GFP_ATOMIC inside a spin_lock ocfs2: fix possible use-after-free with AIO ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero target: writev() on single-element vector is pointless export kernel_write(), convert open-coded instances fs: encode_fh: return FILEID_INVALID if invalid fid_type kill f_vfsmnt vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op nfsd: handle vfs_getattr errors in acl protocol switch vfs_getattr() to struct path default SET_PERSONALITY() in linux/elf.h ceph: prepopulate inodes only when request is aborted d_hash_and_lookup(): export, switch open-coded instances 9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate() 9p: split dropping the acls from v9fs_set_create_acl() ...
This commit is contained in:
commit
d895cb1af1
383 changed files with 1276 additions and 1423 deletions
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/configfs.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/file.h>
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
|
@ -715,36 +716,18 @@ static int core_alua_write_tpg_metadata(
|
|||
unsigned char *md_buf,
|
||||
u32 md_buf_len)
|
||||
{
|
||||
mm_segment_t old_fs;
|
||||
struct file *file;
|
||||
struct iovec iov[1];
|
||||
int flags = O_RDWR | O_CREAT | O_TRUNC, ret;
|
||||
struct file *file = filp_open(path, O_RDWR | O_CREAT | O_TRUNC, 0600);
|
||||
int ret;
|
||||
|
||||
memset(iov, 0, sizeof(struct iovec));
|
||||
|
||||
file = filp_open(path, flags, 0600);
|
||||
if (IS_ERR(file) || !file || !file->f_dentry) {
|
||||
pr_err("filp_open(%s) for ALUA metadata failed\n",
|
||||
path);
|
||||
if (IS_ERR(file)) {
|
||||
pr_err("filp_open(%s) for ALUA metadata failed\n", path);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
iov[0].iov_base = &md_buf[0];
|
||||
iov[0].iov_len = md_buf_len;
|
||||
|
||||
old_fs = get_fs();
|
||||
set_fs(get_ds());
|
||||
ret = vfs_writev(file, &iov[0], 1, &file->f_pos);
|
||||
set_fs(old_fs);
|
||||
|
||||
if (ret < 0) {
|
||||
ret = kernel_write(file, md_buf, md_buf_len, 0);
|
||||
if (ret < 0)
|
||||
pr_err("Error writing ALUA metadata file: %s\n", path);
|
||||
filp_close(file, NULL);
|
||||
return -EIO;
|
||||
}
|
||||
filp_close(file, NULL);
|
||||
|
||||
return 0;
|
||||
fput(file);
|
||||
return ret ? -EIO : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ static int fd_do_rw(struct se_cmd *cmd, struct scatterlist *sgl,
|
|||
* the expected virt_size for struct file w/o a backing struct
|
||||
* block_device.
|
||||
*/
|
||||
if (S_ISBLK(fd->f_dentry->d_inode->i_mode)) {
|
||||
if (S_ISBLK(file_inode(fd)->i_mode)) {
|
||||
if (ret < 0 || ret != cmd->data_length) {
|
||||
pr_err("%s() returned %d, expecting %u for "
|
||||
"S_ISBLK\n", __func__, ret,
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/file.h>
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/scsi_cmnd.h>
|
||||
#include <asm/unaligned.h>
|
||||
|
|
@ -1957,13 +1958,10 @@ static int __core_scsi3_write_aptpl_to_file(
|
|||
{
|
||||
struct t10_wwn *wwn = &dev->t10_wwn;
|
||||
struct file *file;
|
||||
struct iovec iov[1];
|
||||
mm_segment_t old_fs;
|
||||
int flags = O_RDWR | O_CREAT | O_TRUNC;
|
||||
char path[512];
|
||||
int ret;
|
||||
|
||||
memset(iov, 0, sizeof(struct iovec));
|
||||
memset(path, 0, 512);
|
||||
|
||||
if (strlen(&wwn->unit_serial[0]) >= 512) {
|
||||
|
|
@ -1974,31 +1972,22 @@ static int __core_scsi3_write_aptpl_to_file(
|
|||
|
||||
snprintf(path, 512, "/var/target/pr/aptpl_%s", &wwn->unit_serial[0]);
|
||||
file = filp_open(path, flags, 0600);
|
||||
if (IS_ERR(file) || !file || !file->f_dentry) {
|
||||
if (IS_ERR(file)) {
|
||||
pr_err("filp_open(%s) for APTPL metadata"
|
||||
" failed\n", path);
|
||||
return IS_ERR(file) ? PTR_ERR(file) : -ENOENT;
|
||||
return PTR_ERR(file);
|
||||
}
|
||||
|
||||
iov[0].iov_base = &buf[0];
|
||||
if (!pr_aptpl_buf_len)
|
||||
iov[0].iov_len = (strlen(&buf[0]) + 1); /* Add extra for NULL */
|
||||
else
|
||||
iov[0].iov_len = pr_aptpl_buf_len;
|
||||
pr_aptpl_buf_len = (strlen(&buf[0]) + 1); /* Add extra for NULL */
|
||||
|
||||
old_fs = get_fs();
|
||||
set_fs(get_ds());
|
||||
ret = vfs_writev(file, &iov[0], 1, &file->f_pos);
|
||||
set_fs(old_fs);
|
||||
ret = kernel_write(file, buf, pr_aptpl_buf_len, 0);
|
||||
|
||||
if (ret < 0) {
|
||||
if (ret < 0)
|
||||
pr_debug("Error writing APTPL metadata file: %s\n", path);
|
||||
filp_close(file, NULL);
|
||||
return -EIO;
|
||||
}
|
||||
filp_close(file, NULL);
|
||||
fput(file);
|
||||
|
||||
return 0;
|
||||
return ret ? -EIO : 0;
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
|||
Loading…
Reference in a new issue