]> www.infradead.org Git - users/willy/linux.git/commitdiff
Merge branch 'work.afs' into for-next
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 29 Oct 2018 23:20:00 +0000 (19:20 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 29 Oct 2018 23:20:00 +0000 (19:20 -0400)
21 files changed:
1  2 
arch/x86/kernel/cpu/intel_rdt.h
arch/x86/kernel/cpu/intel_rdt_rdtgroup.c
drivers/staging/erofs/super.c
fs/afs/internal.h
fs/afs/mntpt.c
fs/afs/super.c
fs/afs/volume.c
fs/block_dev.c
fs/ext4/namei.c
fs/ext4/super.c
fs/iomap.c
fs/overlayfs/super.c
fs/read_write.c
fs/ubifs/super.c
include/linux/fs.h
include/linux/module.h
kernel/cgroup/cgroup.c
mm/shmem.c
net/bluetooth/hidp/core.c
net/socket.c
samples/Kconfig

Simple merge
Simple merge
Simple merge
diff --cc fs/afs/mntpt.c
index 16ee515b51c946b7eb7a8643a9479217269d2adf,2e51c6994148f30f4ec8d858b1e318b1d58980c0..fd9a086d88041b0f428347b6af515711f17e0b27
@@@ -113,64 -120,55 +113,65 @@@ static int afs_mntpt_set_params(struct 
                loff_t size = i_size_read(d_inode(mntpt));
                char *buf;
  
 -              ret = -EINVAL;
                if (size > PAGE_SIZE - 1)
 -                      goto error_no_page;
 +                      return -EINVAL;
  
                page = read_mapping_page(d_inode(mntpt)->i_mapping, 0, NULL);
 -              if (IS_ERR(page)) {
 -                      ret = PTR_ERR(page);
 -                      goto error_no_page;
 -              }
 +              if (IS_ERR(page))
 +                      return PTR_ERR(page);
  
                if (PageError(page)) {
 -                      goto error;
+                       ret = afs_bad(AFS_FS_I(d_inode(mntpt)), afs_file_error_mntpt);
-                       return -EIO;
 +                      put_page(page);
++                      return ret;
                }
  
 -              buf = kmap_atomic(page);
 -              memcpy(devname, buf, size);
 -              kunmap_atomic(buf);
 +              buf = kmap(page);
 +              ret = vfs_parse_fs_string(fc, "source", buf, size);
 +              kunmap(page);
                put_page(page);
 -              page = NULL;
 +              if (ret < 0)
 +                      return ret;
        }
  
 -      /* work out what options we want */
 -      as = AFS_FS_S(mntpt->d_sb);
 -      if (as->cell) {
 -              memcpy(options, "cell=", 5);
 -              strcpy(options + 5, as->cell->name);
 -              if ((as->volume && as->volume->type == AFSVL_RWVOL) || rwpath)
 -                      strcat(options, ",rwpath");
 -      }
 +      return 0;
 +}
  
 -      /* try and do the mount */
 -      _debug("--- attempting mount %s -o %s ---", devname, options);
 -      mnt = vfs_submount(mntpt, &afs_fs_type, devname, options);
 -      _debug("--- mount result %p ---", mnt);
 +/*
 + * create a vfsmount to be automounted
 + */
 +static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt)
 +{
 +      struct fs_context *fc;
 +      struct vfsmount *mnt;
 +      int ret;
 +
 +      BUG_ON(!d_inode(mntpt));
 +
 +      fc = vfs_new_fs_context(&afs_fs_type, mntpt, 0, 0,
 +                              FS_CONTEXT_FOR_SUBMOUNT);
 +      if (IS_ERR(fc))
 +              return ERR_CAST(fc);
 +
 +      ret = afs_mntpt_set_params(fc, mntpt);
 +      if (ret < 0)
 +              goto error_fc;
 +
 +      ret = vfs_get_tree(fc);
 +      if (ret < 0)
 +              goto error_fc;
 +
 +      mnt = vfs_create_mount(fc, 0);
 +      if (IS_ERR(mnt)) {
 +              ret = PTR_ERR(mnt);
 +              goto error_fc;
 +      }
  
 -      free_page((unsigned long) devname);
 -      free_page((unsigned long) options);
 -      _leave(" = %p", mnt);
 +      put_fs_context(fc);
        return mnt;
  
 -error:
 -      put_page(page);
 -error_no_page:
 -      free_page((unsigned long) options);
 -error_no_options:
 -      free_page((unsigned long) devname);
 -error_no_devname:
 -      _leave(" = %d", ret);
 +error_fc:
 +      put_fs_context(fc);
        return ERR_PTR(ret);
  }
  
diff --cc fs/afs/super.c
index 14abf604e8d3c603716acd731d46c4fdd18b3309,dcd07fe99871b9b38541293b164ac1cf8328a005..ad87054e5c677267eb77c17925a2c3369d9dde98
@@@ -437,8 -410,9 +437,9 @@@ static int afs_fill_super(struct super_
                afs_activate_volume(as->volume);
                fid.vid         = as->volume->vid;
                fid.vnode       = 1;
+               fid.vnode_hi    = 0;
                fid.unique      = 1;
 -              inode = afs_iget(sb, params->key, &fid, NULL, NULL, NULL);
 +              inode = afs_iget(sb, ctx->key, &fid, NULL, NULL, NULL);
        }
  
        if (IS_ERR(inode))
diff --cc fs/afs/volume.c
Simple merge
diff --cc fs/block_dev.c
Simple merge
diff --cc fs/ext4/namei.c
Simple merge
diff --cc fs/ext4/super.c
Simple merge
diff --cc fs/iomap.c
Simple merge
Simple merge
diff --cc fs/read_write.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge
diff --cc net/socket.c
Simple merge
diff --cc samples/Kconfig
Simple merge