Hi Christian,
I love your patch! Yet something to improve:
[auto build test ERROR on 3cea11cd5e3b00d91caf0b4730194039b45c5891]
url:
https://github.com/0day-ci/linux/commits/Christian-Brauner/fs-idmapped-mo...
base: 3cea11cd5e3b00d91caf0b4730194039b45c5891
config: x86_64-randconfig-r012-20201115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
#
https://github.com/0day-ci/linux/commit/d2e8305428c77e99475427f5da2e400a1...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Christian-Brauner/fs-idmapped-mounts/20201115-185706
git checkout d2e8305428c77e99475427f5da2e400a1451bdf8
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/f2fs/file.c: In function 'f2fs_setattr':
> fs/f2fs/file.c:942:17: error: passing argument 1 of
'setattr_copy' from incompatible pointer type [-Werror=incompatible-pointer-types]
942 | __setattr_copy(inode, attr);
| ^~~~~
| |
| struct inode *
In file included from fs/f2fs/file.c:8:
include/linux/fs.h:3250:26: note: expected 'struct user_namespace *' but
argument is of type 'struct inode *'
3250 | extern void setattr_copy(struct user_namespace *, struct inode *inode,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/f2fs/file.c:942:24: error: passing argument 2 of 'setattr_copy' from
incompatible pointer type [-Werror=incompatible-pointer-types]
942 | __setattr_copy(inode, attr);
| ^~~~
| |
| struct iattr *
In file included from fs/f2fs/file.c:8:
include/linux/fs.h:3250:65: note: expected 'struct inode *' but argument is of
type 'struct iattr *'
3250 | extern void setattr_copy(struct user_namespace *, struct inode *inode,
| ~~~~~~~~~~~~~~^~~~~
> fs/f2fs/file.c:851:24: error: too few arguments to function
'setattr_copy'
851 | #define __setattr_copy setattr_copy
| ^~~~~~~~~~~~
fs/f2fs/file.c:942:2: note: in expansion of macro '__setattr_copy'
942 | __setattr_copy(inode, attr);
| ^~~~~~~~~~~~~~
In file included from fs/f2fs/file.c:8:
include/linux/fs.h:3250:13: note: declared here
3250 | extern void setattr_copy(struct user_namespace *, struct inode *inode,
| ^~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/setattr_copy +942 fs/f2fs/file.c
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 826
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 827 #ifdef CONFIG_F2FS_FS_POSIX_ACL
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 828 static void __setattr_copy(struct inode
*inode, const struct iattr *attr)
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 829 {
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 830 unsigned int ia_valid =
attr->ia_valid;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 831
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 832 if (ia_valid & ATTR_UID)
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 833 inode->i_uid = attr->ia_uid;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 834 if (ia_valid & ATTR_GID)
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 835 inode->i_gid = attr->ia_gid;
eb31e2f63d85d1b Amir Goldstein 2019-11-24 836 if (ia_valid & ATTR_ATIME)
eb31e2f63d85d1b Amir Goldstein 2019-11-24 837 inode->i_atime =
attr->ia_atime;
eb31e2f63d85d1b Amir Goldstein 2019-11-24 838 if (ia_valid & ATTR_MTIME)
eb31e2f63d85d1b Amir Goldstein 2019-11-24 839 inode->i_mtime =
attr->ia_mtime;
eb31e2f63d85d1b Amir Goldstein 2019-11-24 840 if (ia_valid & ATTR_CTIME)
eb31e2f63d85d1b Amir Goldstein 2019-11-24 841 inode->i_ctime =
attr->ia_ctime;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 842 if (ia_valid & ATTR_MODE) {
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 843 umode_t mode = attr->ia_mode;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 844
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 845 if (!in_group_p(inode->i_gid)
&& !capable(CAP_FSETID))
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 846 mode &= ~S_ISGID;
91942321e4c9f84 Jaegeuk Kim 2016-05-20 847 set_acl_inode(inode, mode);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 848 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 849 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 850 #else
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 @851 #define __setattr_copy setattr_copy
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 852 #endif
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 853
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 854 int f2fs_setattr(struct dentry *dentry,
struct iattr *attr)
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 855 {
2b0143b5c986be1 David Howells 2015-03-17 856 struct inode *inode =
d_inode(dentry);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 857 int err;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 858
1f227a3e215d361 Jaegeuk Kim 2017-10-23 859 if
(unlikely(f2fs_cp_error(F2FS_I_SB(inode))))
1f227a3e215d361 Jaegeuk Kim 2017-10-23 860 return -EIO;
1f227a3e215d361 Jaegeuk Kim 2017-10-23 861
4c8ff7095bef64f Chao Yu 2019-11-01 862 if ((attr->ia_valid &
ATTR_SIZE) &&
4c8ff7095bef64f Chao Yu 2019-11-01 863
!f2fs_is_compress_backend_ready(inode))
4c8ff7095bef64f Chao Yu 2019-11-01 864 return -EOPNOTSUPP;
4c8ff7095bef64f Chao Yu 2019-11-01 865
d2e8305428c77e9 Christian Brauner 2020-11-15 866 err =
setattr_prepare(&init_user_ns, dentry, attr);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 867 if (err)
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 868 return err;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 869
20bb2479be49296 Eric Biggers 2017-11-29 870 err = fscrypt_prepare_setattr(dentry,
attr);
20bb2479be49296 Eric Biggers 2017-11-29 871 if (err)
20bb2479be49296 Eric Biggers 2017-11-29 872 return err;
20bb2479be49296 Eric Biggers 2017-11-29 873
95ae251fe82838b Eric Biggers 2019-07-22 874 err = fsverity_prepare_setattr(dentry,
attr);
95ae251fe82838b Eric Biggers 2019-07-22 875 if (err)
95ae251fe82838b Eric Biggers 2019-07-22 876 return err;
95ae251fe82838b Eric Biggers 2019-07-22 877
0abd675e97e60d4 Chao Yu 2017-07-09 878 if (is_quota_modification(inode,
attr)) {
0abd675e97e60d4 Chao Yu 2017-07-09 879 err = dquot_initialize(inode);
0abd675e97e60d4 Chao Yu 2017-07-09 880 if (err)
0abd675e97e60d4 Chao Yu 2017-07-09 881 return err;
0abd675e97e60d4 Chao Yu 2017-07-09 882 }
0abd675e97e60d4 Chao Yu 2017-07-09 883 if ((attr->ia_valid & ATTR_UID
&&
0abd675e97e60d4 Chao Yu 2017-07-09 884 !uid_eq(attr->ia_uid,
inode->i_uid)) ||
0abd675e97e60d4 Chao Yu 2017-07-09 885 (attr->ia_valid & ATTR_GID
&&
0abd675e97e60d4 Chao Yu 2017-07-09 886 !gid_eq(attr->ia_gid,
inode->i_gid))) {
af033b2aa8a874f Chao Yu 2018-09-20 887 f2fs_lock_op(F2FS_I_SB(inode));
0abd675e97e60d4 Chao Yu 2017-07-09 888 err = dquot_transfer(inode, attr);
af033b2aa8a874f Chao Yu 2018-09-20 889 if (err) {
af033b2aa8a874f Chao Yu 2018-09-20 890 set_sbi_flag(F2FS_I_SB(inode),
af033b2aa8a874f Chao Yu 2018-09-20 891 SBI_QUOTA_NEED_REPAIR);
af033b2aa8a874f Chao Yu 2018-09-20 892 f2fs_unlock_op(F2FS_I_SB(inode));
0abd675e97e60d4 Chao Yu 2017-07-09 893 return err;
0abd675e97e60d4 Chao Yu 2017-07-09 894 }
af033b2aa8a874f Chao Yu 2018-09-20 895 /*
af033b2aa8a874f Chao Yu 2018-09-20 896 * update uid/gid under lock_op(), so
that dquot and inode can
af033b2aa8a874f Chao Yu 2018-09-20 897 * be updated atomically.
af033b2aa8a874f Chao Yu 2018-09-20 898 */
af033b2aa8a874f Chao Yu 2018-09-20 899 if (attr->ia_valid &
ATTR_UID)
af033b2aa8a874f Chao Yu 2018-09-20 900 inode->i_uid = attr->ia_uid;
af033b2aa8a874f Chao Yu 2018-09-20 901 if (attr->ia_valid &
ATTR_GID)
af033b2aa8a874f Chao Yu 2018-09-20 902 inode->i_gid = attr->ia_gid;
af033b2aa8a874f Chao Yu 2018-09-20 903 f2fs_mark_inode_dirty_sync(inode,
true);
af033b2aa8a874f Chao Yu 2018-09-20 904 f2fs_unlock_op(F2FS_I_SB(inode));
af033b2aa8a874f Chao Yu 2018-09-20 905 }
0abd675e97e60d4 Chao Yu 2017-07-09 906
09db6a2ef8d9ca6 Chao Yu 2014-09-15 907 if (attr->ia_valid & ATTR_SIZE)
{
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 908 loff_t old_size =
i_size_read(inode);
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 909
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 910 if (attr->ia_size >
MAX_INLINE_DATA(inode)) {
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 911 /*
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 912 * should convert inline inode
before i_size_write to
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 913 * keep smaller than inline_data
size with inline flag.
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 914 */
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 915 err =
f2fs_convert_inline_inode(inode);
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 916 if (err)
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 917 return err;
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 918 }
a33c150237a20d9 Chao Yu 2018-08-05 919
a33c150237a20d9 Chao Yu 2018-08-05 920
down_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
6f8d4455060dfb0 Jaegeuk Kim 2018-07-25 921
down_write(&F2FS_I(inode)->i_mmap_sem);
a33c150237a20d9 Chao Yu 2018-08-05 922
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 923 truncate_setsize(inode,
attr->ia_size);
a33c150237a20d9 Chao Yu 2018-08-05 924
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 925 if (attr->ia_size <= old_size)
9a449e9c3b34ef3 Jaegeuk Kim 2016-06-02 926 err = f2fs_truncate(inode);
09db6a2ef8d9ca6 Chao Yu 2014-09-15 927 /*
3c4541452748754 Chao Yu 2015-06-05 928 * do not trim all blocks after
i_size if target size is
3c4541452748754 Chao Yu 2015-06-05 929 * larger than i_size.
09db6a2ef8d9ca6 Chao Yu 2014-09-15 930 */
5a3a2d83cda82df Qiuyang Sun 2017-05-18 931
up_write(&F2FS_I(inode)->i_mmap_sem);
6f8d4455060dfb0 Jaegeuk Kim 2018-07-25 932
up_write(&F2FS_I(inode)->i_gc_rwsem[WRITE]);
a33c150237a20d9 Chao Yu 2018-08-05 933 if (err)
a33c150237a20d9 Chao Yu 2018-08-05 934 return err;
a33c150237a20d9 Chao Yu 2018-08-05 935
c10c98203222f4b Chao Yu 2020-02-27 936
spin_lock(&F2FS_I(inode)->i_size_lock);
cfb9a34d147b8d0 Jaegeuk Kim 2019-09-03 937 inode->i_mtime = inode->i_ctime
= current_time(inode);
a0d00fad353d4a3 Chao Yu 2017-10-09 938 F2FS_I(inode)->last_disk_size =
i_size_read(inode);
c10c98203222f4b Chao Yu 2020-02-27 939
spin_unlock(&F2FS_I(inode)->i_size_lock);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 940 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 941
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 @942 __setattr_copy(inode, attr);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 943
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 944 if (attr->ia_valid & ATTR_MODE)
{
4d57b86dd86404f Chao Yu 2018-05-30 945 err = posix_acl_chmod(inode,
f2fs_get_inode_mode(inode));
91942321e4c9f84 Jaegeuk Kim 2016-05-20 946 if (err || is_inode_flag_set(inode,
FI_ACL_MODE)) {
91942321e4c9f84 Jaegeuk Kim 2016-05-20 947 inode->i_mode =
F2FS_I(inode)->i_acl_mode;
91942321e4c9f84 Jaegeuk Kim 2016-05-20 948 clear_inode_flag(inode,
FI_ACL_MODE);
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 949 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 950 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 951
c0ed4405a99ec9b Yunlei He 2016-12-11 952 /* file size may changed here */
ca597bddedd9490 Chao Yu 2019-02-23 953 f2fs_mark_inode_dirty_sync(inode,
true);
15d04354555fdfe Jaegeuk Kim 2016-10-14 954
15d04354555fdfe Jaegeuk Kim 2016-10-14 955 /* inode change will produce dirty
node pages flushed by checkpoint */
15d04354555fdfe Jaegeuk Kim 2016-10-14 956 f2fs_balance_fs(F2FS_I_SB(inode),
true);
15d04354555fdfe Jaegeuk Kim 2016-10-14 957
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 958 return err;
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 959 }
fbfa2cc58d5363f Jaegeuk Kim 2012-11-02 960
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org