[Cluster-devel] [PATCH v3 1/2] iomap: Add a page_prepare callback
kbuild test robot
lkp at intel.com
Thu Apr 25 19:09:01 UTC 2019
Hi Andreas,
I love your patch! Yet something to improve:
[auto build test ERROR on gfs2/for-next]
[also build test ERROR on v5.1-rc6 next-20190424]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Andreas-Gruenbacher/iomap-Add-a-page_prepare-callback/20190426-020018
base: https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git for-next
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 8.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=8.1.0 make.cross ARCH=xtensa
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>
Note: the linux-review/Andreas-Gruenbacher/iomap-Add-a-page_prepare-callback/20190426-020018 HEAD 9167204805d5e926444d03b3fa3ac1d1bc899a8a builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
fs/gfs2/bmap.c: In function 'gfs2_iomap_begin_write':
>> fs/gfs2/bmap.c:1080:10: error: 'struct iomap' has no member named 'page_done'; did you mean 'page_ops'?
iomap->page_done = gfs2_iomap_journaled_page_done;
^~~~~~~~~
page_ops
vim +1080 fs/gfs2/bmap.c
64bc06bb Andreas Gruenbacher 2018-06-24 1002
64bc06bb Andreas Gruenbacher 2018-06-24 1003 static int gfs2_iomap_begin_write(struct inode *inode, loff_t pos,
64bc06bb Andreas Gruenbacher 2018-06-24 1004 loff_t length, unsigned flags,
c26b5aa8 Andreas Gruenbacher 2018-11-11 1005 struct iomap *iomap,
c26b5aa8 Andreas Gruenbacher 2018-11-11 1006 struct metapath *mp)
64bc06bb Andreas Gruenbacher 2018-06-24 1007 {
64bc06bb Andreas Gruenbacher 2018-06-24 1008 struct gfs2_inode *ip = GFS2_I(inode);
64bc06bb Andreas Gruenbacher 2018-06-24 1009 struct gfs2_sbd *sdp = GFS2_SB(inode);
64bc06bb Andreas Gruenbacher 2018-06-24 1010 unsigned int data_blocks = 0, ind_blocks = 0, rblocks;
64bc06bb Andreas Gruenbacher 2018-06-24 1011 bool unstuff, alloc_required;
628e366d Andreas Gruenbacher 2018-06-04 1012 int ret;
628e366d Andreas Gruenbacher 2018-06-04 1013
64bc06bb Andreas Gruenbacher 2018-06-24 1014 ret = gfs2_write_lock(inode);
64bc06bb Andreas Gruenbacher 2018-06-24 1015 if (ret)
64bc06bb Andreas Gruenbacher 2018-06-24 1016 return ret;
64bc06bb Andreas Gruenbacher 2018-06-24 1017
64bc06bb Andreas Gruenbacher 2018-06-24 1018 unstuff = gfs2_is_stuffed(ip) &&
64bc06bb Andreas Gruenbacher 2018-06-24 1019 pos + length > gfs2_max_stuffed_size(ip);
64bc06bb Andreas Gruenbacher 2018-06-24 1020
c26b5aa8 Andreas Gruenbacher 2018-11-11 1021 ret = gfs2_iomap_get(inode, pos, length, flags, iomap, mp);
64bc06bb Andreas Gruenbacher 2018-06-24 1022 if (ret)
c26b5aa8 Andreas Gruenbacher 2018-11-11 1023 goto out_unlock;
64bc06bb Andreas Gruenbacher 2018-06-24 1024
64bc06bb Andreas Gruenbacher 2018-06-24 1025 alloc_required = unstuff || iomap->type == IOMAP_HOLE;
64bc06bb Andreas Gruenbacher 2018-06-24 1026
64bc06bb Andreas Gruenbacher 2018-06-24 1027 if (alloc_required || gfs2_is_jdata(ip))
64bc06bb Andreas Gruenbacher 2018-06-24 1028 gfs2_write_calc_reserv(ip, iomap->length, &data_blocks,
64bc06bb Andreas Gruenbacher 2018-06-24 1029 &ind_blocks);
64bc06bb Andreas Gruenbacher 2018-06-24 1030
64bc06bb Andreas Gruenbacher 2018-06-24 1031 if (alloc_required) {
64bc06bb Andreas Gruenbacher 2018-06-24 1032 struct gfs2_alloc_parms ap = {
64bc06bb Andreas Gruenbacher 2018-06-24 1033 .target = data_blocks + ind_blocks
64bc06bb Andreas Gruenbacher 2018-06-24 1034 };
64bc06bb Andreas Gruenbacher 2018-06-24 1035
64bc06bb Andreas Gruenbacher 2018-06-24 1036 ret = gfs2_quota_lock_check(ip, &ap);
64bc06bb Andreas Gruenbacher 2018-06-24 1037 if (ret)
c26b5aa8 Andreas Gruenbacher 2018-11-11 1038 goto out_unlock;
64bc06bb Andreas Gruenbacher 2018-06-24 1039
64bc06bb Andreas Gruenbacher 2018-06-24 1040 ret = gfs2_inplace_reserve(ip, &ap);
64bc06bb Andreas Gruenbacher 2018-06-24 1041 if (ret)
64bc06bb Andreas Gruenbacher 2018-06-24 1042 goto out_qunlock;
64bc06bb Andreas Gruenbacher 2018-06-24 1043 }
64bc06bb Andreas Gruenbacher 2018-06-24 1044
64bc06bb Andreas Gruenbacher 2018-06-24 1045 rblocks = RES_DINODE + ind_blocks;
64bc06bb Andreas Gruenbacher 2018-06-24 1046 if (gfs2_is_jdata(ip))
64bc06bb Andreas Gruenbacher 2018-06-24 1047 rblocks += data_blocks;
64bc06bb Andreas Gruenbacher 2018-06-24 1048 if (ind_blocks || data_blocks)
64bc06bb Andreas Gruenbacher 2018-06-24 1049 rblocks += RES_STATFS + RES_QUOTA;
64bc06bb Andreas Gruenbacher 2018-06-24 1050 if (inode == sdp->sd_rindex)
64bc06bb Andreas Gruenbacher 2018-06-24 1051 rblocks += 2 * RES_STATFS;
64bc06bb Andreas Gruenbacher 2018-06-24 1052 if (alloc_required)
64bc06bb Andreas Gruenbacher 2018-06-24 1053 rblocks += gfs2_rg_blocks(ip, data_blocks + ind_blocks);
64bc06bb Andreas Gruenbacher 2018-06-24 1054
64bc06bb Andreas Gruenbacher 2018-06-24 1055 ret = gfs2_trans_begin(sdp, rblocks, iomap->length >> inode->i_blkbits);
64bc06bb Andreas Gruenbacher 2018-06-24 1056 if (ret)
64bc06bb Andreas Gruenbacher 2018-06-24 1057 goto out_trans_fail;
64bc06bb Andreas Gruenbacher 2018-06-24 1058
64bc06bb Andreas Gruenbacher 2018-06-24 1059 if (unstuff) {
64bc06bb Andreas Gruenbacher 2018-06-24 1060 ret = gfs2_unstuff_dinode(ip, NULL);
64bc06bb Andreas Gruenbacher 2018-06-24 1061 if (ret)
64bc06bb Andreas Gruenbacher 2018-06-24 1062 goto out_trans_end;
c26b5aa8 Andreas Gruenbacher 2018-11-11 1063 release_metapath(mp);
64bc06bb Andreas Gruenbacher 2018-06-24 1064 ret = gfs2_iomap_get(inode, iomap->offset, iomap->length,
c26b5aa8 Andreas Gruenbacher 2018-11-11 1065 flags, iomap, mp);
64bc06bb Andreas Gruenbacher 2018-06-24 1066 if (ret)
64bc06bb Andreas Gruenbacher 2018-06-24 1067 goto out_trans_end;
64bc06bb Andreas Gruenbacher 2018-06-24 1068 }
64bc06bb Andreas Gruenbacher 2018-06-24 1069
64bc06bb Andreas Gruenbacher 2018-06-24 1070 if (iomap->type == IOMAP_HOLE) {
c26b5aa8 Andreas Gruenbacher 2018-11-11 1071 ret = gfs2_iomap_alloc(inode, iomap, flags, mp);
64bc06bb Andreas Gruenbacher 2018-06-24 1072 if (ret) {
64bc06bb Andreas Gruenbacher 2018-06-24 1073 gfs2_trans_end(sdp);
64bc06bb Andreas Gruenbacher 2018-06-24 1074 gfs2_inplace_release(ip);
64bc06bb Andreas Gruenbacher 2018-06-24 1075 punch_hole(ip, iomap->offset, iomap->length);
64bc06bb Andreas Gruenbacher 2018-06-24 1076 goto out_qunlock;
64bc06bb Andreas Gruenbacher 2018-06-24 1077 }
64bc06bb Andreas Gruenbacher 2018-06-24 1078 }
fee5150c Andreas Gruenbacher 2018-10-10 1079 if (!gfs2_is_stuffed(ip) && gfs2_is_jdata(ip))
64bc06bb Andreas Gruenbacher 2018-06-24 @1080 iomap->page_done = gfs2_iomap_journaled_page_done;
64bc06bb Andreas Gruenbacher 2018-06-24 1081 return 0;
64bc06bb Andreas Gruenbacher 2018-06-24 1082
64bc06bb Andreas Gruenbacher 2018-06-24 1083 out_trans_end:
64bc06bb Andreas Gruenbacher 2018-06-24 1084 gfs2_trans_end(sdp);
64bc06bb Andreas Gruenbacher 2018-06-24 1085 out_trans_fail:
64bc06bb Andreas Gruenbacher 2018-06-24 1086 if (alloc_required)
64bc06bb Andreas Gruenbacher 2018-06-24 1087 gfs2_inplace_release(ip);
64bc06bb Andreas Gruenbacher 2018-06-24 1088 out_qunlock:
64bc06bb Andreas Gruenbacher 2018-06-24 1089 if (alloc_required)
64bc06bb Andreas Gruenbacher 2018-06-24 1090 gfs2_quota_unlock(ip);
c26b5aa8 Andreas Gruenbacher 2018-11-11 1091 out_unlock:
64bc06bb Andreas Gruenbacher 2018-06-24 1092 gfs2_write_unlock(inode);
64bc06bb Andreas Gruenbacher 2018-06-24 1093 return ret;
64bc06bb Andreas Gruenbacher 2018-06-24 1094 }
64bc06bb Andreas Gruenbacher 2018-06-24 1095
:::::: The code at line 1080 was first introduced by commit
:::::: 64bc06bb32ee9cf458f432097113c8b495d75757 gfs2: iomap buffered write support
:::::: TO: Andreas Gruenbacher <agruenba at redhat.com>
:::::: CC: Andreas Gruenbacher <agruenba at redhat.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 56073 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/cluster-devel/attachments/20190426/351b554e/attachment.gz>
More information about the Cluster-devel
mailing list