Unverified Commit 22b05f1a authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Refactor ntfs_read_mft



Don't save size of attribute reparse point as size of symlink.

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent cd4c76ff
Loading
Loading
Loading
Loading
+8 −14
Original line number Diff line number Diff line
@@ -222,9 +222,6 @@ static struct inode *ntfs_read_mft(struct inode *inode,
		if (!attr->non_res) {
			ni->i_valid = inode->i_size = rsize;
			inode_set_bytes(inode, rsize);
			t32 = asize;
		} else {
			t32 = le16_to_cpu(attr->nres.run_off);
		}

		mode = S_IFREG | (0777 & sbi->options->fs_fmask_inv);
@@ -313,17 +310,14 @@ static struct inode *ntfs_read_mft(struct inode *inode,
		rp_fa = ni_parse_reparse(ni, attr, &rp);
		switch (rp_fa) {
		case REPARSE_LINK:
			if (!attr->non_res) {
				inode->i_size = rsize;
				inode_set_bytes(inode, rsize);
				t32 = asize;
			} else {
				inode->i_size =
					le64_to_cpu(attr->nres.data_size);
				t32 = le16_to_cpu(attr->nres.run_off);
			}
			/*
			 * Normal symlink.
			 * Assume one unicode symbol == one utf8.
			 */
			inode->i_size = le16_to_cpu(rp.SymbolicLinkReparseBuffer
							    .PrintNameLength) /
					sizeof(u16);

			/* Looks like normal symlink. */
			ni->i_valid = inode->i_size;

			/* Clear directory bit. */
@@ -420,7 +414,7 @@ static struct inode *ntfs_read_mft(struct inode *inode,
		ni->std_fa &= ~FILE_ATTRIBUTE_DIRECTORY;
		inode->i_op = &ntfs_link_inode_operations;
		inode->i_fop = NULL;
		inode_nohighmem(inode); // ??
		inode_nohighmem(inode);
	} else if (S_ISREG(mode)) {
		ni->std_fa &= ~FILE_ATTRIBUTE_DIRECTORY;
		inode->i_op = &ntfs_file_inode_operations;