Re: [RFC PATCH] fs/ntfs3: Add basic support for alternative data streams

kernel test robot <[email protected]> Fri, 31 Jul 2026 21:25:11 +0800
Newsgroups dev.linux.lists.oe-kbuild-all
Message-ID <[email protected]>
Hi Konstantin,

[This is a private test report for your RFC patch.]
kernel test robot noticed the following build errors:

[auto build test ERROR on next-20260721]
[also build test ERROR on linus/master v7.2-rc5]
[cannot apply to brauner-vfs/vfs.all v7.2-rc4 v7.2-rc3 v7.2-rc2]
[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/Konstantin-Komarov/fs-ntfs3-Add-basic-support-for-alternative-data-streams/20260724-193931
base:   next-20260721
patch link:    https://lore.kernel.org/r/20260724111601.14804-1-almaz.alexandrovich%40paragon-software.com
patch subject: [RFC PATCH] fs/ntfs3: Add basic support for alternative data streams
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260731/[email protected]/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260731/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All errors (new ones prefixed by >>):

   fs/ntfs3/file.c: In function 'ntfs_file_read_iter':
>> fs/ntfs3/file.c:845:17: error: 'ret' undeclared (first use in this function); did you mean 'net'?
     845 |                 ret = ni_query_ads(ni, &iocb->ki_pos, iter);
         |                 ^~~
         |                 net
   fs/ntfs3/file.c:845:17: note: each undeclared identifier is reported only once for each function it appears in


vim +845 fs/ntfs3/file.c

   813	
   814	/*
   815	 * ntfs_file_read_iter - file_operations::read_iter
   816	 */
   817	static ssize_t ntfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
   818	{
   819		struct file *file = iocb->ki_filp;
   820		struct inode *inode = file_inode(file);
   821		struct ntfs_inode *ni = ntfs_i(inode);
   822		size_t bytes = iov_iter_count(iter);
   823		loff_t valid, i_size, vbo, end;
   824		unsigned int dio_flags;
   825		ssize_t err;
   826	
   827		err = check_read_restriction(inode);
   828		if (err)
   829			return err;
   830	
   831		if (!bytes)
   832			return 0; /* skip atime */
   833	
   834		if (ni->file.ads.len == ARRAY_SIZE(QUERY_STREAMS) &&
   835		    !memcmp(ni->file.ads.name, QUERY_STREAMS, sizeof(QUERY_STREAMS))) {
   836			/* Query ADS. */
   837			if (unlikely(iocb->ki_flags & IOCB_DIRECT)) {
   838				ntfs_inode_warn(
   839					inode,
   840					"direct I/O for streams is not supported");
   841				return -EOPNOTSUPP;
   842			}
   843	
   844			inode_lock_shared(inode);
 > 845			ret = ni_query_ads(ni, &iocb->ki_pos, iter);
   846			inode_unlock_shared(inode);
   847			return ret;
   848		}
   849	
   850		if (is_compressed(ni)) {
   851			if (iocb->ki_flags & IOCB_DIRECT) {
   852				ntfs_inode_warn(
   853					inode, "direct i/o + compressed not supported");
   854				return -EOPNOTSUPP;
   855			}
   856			/* Turn off readahead for compressed files. */
   857			file->f_ra.ra_pages = 0;
   858		}
   859	
   860		/* Fallback to buffered I/O if the inode does not support direct I/O. */
   861		if (!(iocb->ki_flags & IOCB_DIRECT) ||
   862		    !ntfs_should_use_dio(iocb, iter)) {
   863			iocb->ki_flags &= ~IOCB_DIRECT;
   864			return generic_file_read_iter(iocb, iter);
   865		}
   866	
   867		if (iocb->ki_flags & IOCB_NOWAIT) {
   868			if (!inode_trylock_shared(inode))
   869				return -EAGAIN;
   870		} else {
   871			inode_lock_shared(inode);
   872		}
   873	
   874		vbo = iocb->ki_pos;
   875		end = vbo + bytes;
   876		dio_flags = 0;
   877		valid = ni->i_valid;
   878		i_size = inode->i_size;
   879	
   880		if (vbo < valid) {
   881			if (valid < end) {
   882				/* read cross 'valid' size. */
   883				dio_flags |= IOMAP_DIO_FORCE_WAIT;
   884			}
   885	
   886			if (ni->file.run_da.count) {
   887				/* Direct I/O is not compatible with delalloc. */
   888				err = ni_allocate_da_blocks(ni);
   889				if (err)
   890					goto out;
   891			}
   892	
   893			err = iomap_dio_rw(iocb, iter, &ntfs_iomap_ops, NULL, dio_flags,
   894					   NULL, 0);
   895	
   896			if (err <= 0)
   897				goto out;
   898			end = vbo + err;
   899			if (valid < end) {
   900				size_t to_zero = end - valid;
   901				/* Fix iter. */
   902				iov_iter_revert(iter, to_zero);
   903				iov_iter_zero(to_zero, iter);
   904			}
   905		} else if (vbo < i_size) {
   906			if (end > i_size)
   907				bytes = i_size - vbo;
   908			iov_iter_zero(bytes, iter);
   909			iocb->ki_pos += bytes;
   910			err = bytes;
   911		}
   912	
   913	out:
   914		inode_unlock_shared(inode);
   915		file_accessed(file);
   916		return err;
   917	}
   918	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki