From: kernel test robot <lkp@intel.com>
To: Frank Sorenson <sorenson@redhat.com>, <linux-cifs@vger.kernel.org>
Cc: <oe-kbuild-all@lists.linux.dev>, <pc@manguebit.org>,
<linkinjeon@kernel.org>, <stable@vger.kernel.org>
Subject: Re: [PATCH] cifs: fix i_size inconsistency in smb2_duplicate_extents() on FSCTL failure
Date: Sun, 23 Aug 2026 20:23:23 +0800 [thread overview]
Message-ID: <202608230427.RQarhMR6-lkp@intel.com> (raw)
In-Reply-To: <20260820211443.1472310-1-sorenson@redhat.com>
Hi Frank,
kernel test robot noticed the following build errors:
[auto build test ERROR on brauner-vfs/vfs.all]
[also build test ERROR on cifs/for-next linus/master v7.2 next-20260821]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Frank-Sorenson/cifs-fix-i_size-inconsistency-in-smb2_duplicate_extents-on-FSCTL-failure/20260820-161443
base: https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git vfs.all
patch link: https://lore.kernel.org/r/20260820211443.1472310-1-sorenson%40redhat.com
patch subject: [PATCH] cifs: fix i_size inconsistency in smb2_duplicate_extents() on FSCTL failure
config: parisc-defconfig (https://download.01.org/0day-ci/archive/20260823/202608230427.RQarhMR6-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260823/202608230427.RQarhMR6-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608230427.RQarhMR6-lkp@intel.com/
All errors (new ones prefixed by >>):
fs/smb/client/smb2ops.c: In function 'smb2_duplicate_extents':
>> fs/smb/client/smb2ops.c:2251:25: error: implicit declaration of function 'cifs_resize_file_locked' [-Wimplicit-function-declaration]
2251 | cifs_resize_file_locked(inode, orig_size);
| ^~~~~~~~~~~~~~~~~~~~~~~
vim +/cifs_resize_file_locked +2251 fs/smb/client/smb2ops.c
2188
2189 static int
2190 smb2_duplicate_extents(const unsigned int xid,
2191 struct cifsFileInfo *srcfile,
2192 struct cifsFileInfo *trgtfile, u64 src_off,
2193 u64 len, u64 dest_off)
2194 {
2195 int rc;
2196 int qrc;
2197 unsigned int ret_data_len;
2198 struct inode *inode;
2199 struct smb2_file_all_info file_inf;
2200 struct duplicate_extents_to_file dup_ext_buf;
2201 struct timespec64 ts;
2202 struct cifs_tcon *tcon = tlink_tcon(trgtfile->tlink);
2203 loff_t orig_size;
2204 u64 asize;
2205
2206 /* server fileays advertise duplicate extent support with this flag */
2207 if ((le32_to_cpu(tcon->fsAttrInfo.Attributes) &
2208 FILE_SUPPORTS_BLOCK_REFCOUNTING) == 0)
2209 return -EOPNOTSUPP;
2210
2211 dup_ext_buf.VolatileFileHandle = srcfile->fid.volatile_fid;
2212 dup_ext_buf.PersistentFileHandle = srcfile->fid.persistent_fid;
2213 dup_ext_buf.SourceFileOffset = cpu_to_le64(src_off);
2214 dup_ext_buf.TargetFileOffset = cpu_to_le64(dest_off);
2215 dup_ext_buf.ByteCount = cpu_to_le64(len);
2216 cifs_dbg(FYI, "Duplicate extents: src off %lld dst off %lld len %lld\n",
2217 src_off, dest_off, len);
2218 trace_smb3_clone_enter(xid, srcfile->fid.volatile_fid,
2219 trgtfile->fid.volatile_fid, tcon->tid,
2220 tcon->ses->Suid, src_off, dest_off, len);
2221 inode = d_inode(trgtfile->dentry);
2222 orig_size = i_size_read(inode);
2223 if (orig_size < dest_off + len) {
2224 rc = smb2_set_file_size(xid, tcon, trgtfile, dest_off + len, false);
2225 if (rc)
2226 goto duplicate_extents_out;
2227 netfs_resize_file(netfs_inode(inode), dest_off + len, true);
2228 cifs_setsize(inode, dest_off + len);
2229 }
2230 rc = SMB2_ioctl(xid, tcon, trgtfile->fid.persistent_fid,
2231 trgtfile->fid.volatile_fid,
2232 FSCTL_DUPLICATE_EXTENTS_TO_FILE,
2233 (char *)&dup_ext_buf,
2234 sizeof(struct duplicate_extents_to_file),
2235 CIFSMaxBufSize, NULL,
2236 &ret_data_len);
2237
2238 if (ret_data_len > 0)
2239 cifs_dbg(FYI, "Non-zero response length in duplicate extents\n");
2240
2241 if (rc && i_size_read(inode) > orig_size) {
2242 int rrc;
2243
2244 /*
2245 * FSCTL failed after we pre-extended the file. Attempt to
2246 * restore the original size so the caller sees a consistent
2247 * file rather than a larger file with uncloned content.
2248 */
2249 rrc = smb2_set_file_size(xid, tcon, trgtfile, orig_size, false);
2250 if (rrc == 0)
> 2251 cifs_resize_file_locked(inode, orig_size);
2252 else {
2253 CIFS_I(inode)->time = 0; /* force reval */
2254 cifs_invalidate_cache(inode, 0);
2255 }
2256 }
2257
2258 if (rc == 0) {
2259 qrc = SMB2_query_info(xid, tcon, trgtfile->fid.persistent_fid,
2260 trgtfile->fid.volatile_fid, &file_inf);
2261 spin_lock(&inode->i_lock);
2262 if (qrc == 0) {
2263 asize = le64_to_cpu(file_inf.AllocationSize);
2264 CIFS_I(inode)->time = jiffies;
2265 if (file_inf.LastWriteTime) {
2266 ts = cifs_NTtimeToUnix(file_inf.LastWriteTime);
2267 inode_set_mtime_to_ts(inode, ts);
2268 }
2269 if (file_inf.ChangeTime) {
2270 ts = cifs_NTtimeToUnix(file_inf.ChangeTime);
2271 inode_set_ctime_to_ts(inode, ts);
2272 }
2273 if (file_inf.LastAccessTime) {
2274 ts = cifs_NTtimeToUnix(file_inf.LastAccessTime);
2275 inode_set_atime_to_ts(inode, ts);
2276 }
2277 inode->i_blocks = CIFS_INO_BLOCKS(asize);
2278 } else {
2279 CIFS_I(inode)->time = 0; /* force reval */
2280 }
2281 spin_unlock(&inode->i_lock);
2282 }
2283
2284 duplicate_extents_out:
2285 if (rc)
2286 trace_smb3_clone_err(xid, srcfile->fid.volatile_fid,
2287 trgtfile->fid.volatile_fid,
2288 tcon->tid, tcon->ses->Suid, src_off,
2289 dest_off, len, rc);
2290 else
2291 trace_smb3_clone_done(xid, srcfile->fid.volatile_fid,
2292 trgtfile->fid.volatile_fid, tcon->tid,
2293 tcon->ses->Suid, src_off, dest_off, len);
2294 return rc;
2295 }
2296
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
prev parent reply other threads:[~2026-08-23 12:23 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-20 21:14 [PATCH] cifs: fix i_size inconsistency in smb2_duplicate_extents() on FSCTL failure Frank Sorenson
2026-08-21 1:02 ` Namjae Jeon
2026-08-21 3:34 ` Frank Sorenson
2026-08-23 12:23 ` kernel test robot
2026-08-23 12:23 ` kernel test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202608230427.RQarhMR6-lkp@intel.com \
--to=lkp@intel.com \
--cc=linkinjeon@kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=pc@manguebit.org \
--cc=sorenson@redhat.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox