Lines Matching full:attribute
35 * Compare the ntfs attribute embedded in the ntfs specific part of the vfs
36 * inode @vi for equality with the ntfs attribute @data.
60 /* A fake inode describing an attribute. */ in ntfs_test_inode()
78 * Initialize the vfs inode @vi with the values from the ntfs attribute @data in
192 * ntfs_attr_iget - obtain a struct inode corresponding to an attribute
193 * @base_vi: vfs base inode containing the attribute
194 * @type: attribute type
195 * @name: Unicode name of the attribute (NULL if unnamed)
198 * Obtain the (fake) struct inode corresponding to the attribute specified by
202 * If the attribute inode is in the cache, it is just returned with an
205 * attribute and fill in the inode structure.
210 * Return the struct inode of the attribute inode on success. Check the return
242 * There is no point in keeping bad attribute inodes around. This also in ntfs_attr_iget()
243 * simplifies things in that we never need to check for bad attribute in ntfs_attr_iget()
351 * The attribute runlist lock has separate locking rules from the
421 * @ctx: initialized attribute search context
423 * Search all file name attributes in the inode described by the attribute
459 "attribute. You should run chkdsk."); in ntfs_is_extended_system_file()
483 /* This attribute is ok, but is it in the $Extend directory? */ in ntfs_is_extended_system_file()
611 * Find the standard information attribute in the mft record. At this in ntfs_read_locked_inode()
612 * stage we haven't setup the attribute list stuff yet, so this could in ntfs_read_locked_inode()
623 * attribute. in ntfs_read_locked_inode()
625 ntfs_error(vi->i_sb, "$STANDARD_INFORMATION attribute " in ntfs_read_locked_inode()
631 /* Get the standard information attribute value. */ in ntfs_read_locked_inode()
658 /* Find the attribute list attribute if present. */ in ntfs_read_locked_inode()
663 ntfs_error(vi->i_sb, "Failed to lookup attribute list " in ntfs_read_locked_inode()
664 "attribute."); in ntfs_read_locked_inode()
670 ntfs_debug("Attribute list found in inode 0x%lx.", vi->i_ino); in ntfs_read_locked_inode()
674 ntfs_error(vi->i_sb, "Attribute list attribute is " in ntfs_read_locked_inode()
681 ntfs_error(vi->i_sb, "Non-resident attribute " in ntfs_read_locked_inode()
682 "list attribute is encrypted/" in ntfs_read_locked_inode()
686 ntfs_warning(vi->i_sb, "Resident attribute list " in ntfs_read_locked_inode()
687 "attribute in inode 0x%lx is marked " in ntfs_read_locked_inode()
695 /* Now allocate memory for the attribute list. */ in ntfs_read_locked_inode()
700 "buffer for attribute list."); in ntfs_read_locked_inode()
707 ntfs_error(vi->i_sb, "Attribute list has non " in ntfs_read_locked_inode()
724 /* Now load the attribute list. */ in ntfs_read_locked_inode()
730 "attribute list attribute."); in ntfs_read_locked_inode()
738 ntfs_error(vi->i_sb, "Corrupt attribute list " in ntfs_read_locked_inode()
742 /* Now copy the attribute list. */ in ntfs_read_locked_inode()
751 * If an attribute list is present we now have the attribute list value in ntfs_read_locked_inode()
760 /* It is a directory, find index root attribute. */ in ntfs_read_locked_inode()
767 // index root attribute if recovery option is in ntfs_read_locked_inode()
769 ntfs_error(vi->i_sb, "$INDEX_ROOT attribute " in ntfs_read_locked_inode()
777 ntfs_error(vol->sb, "$INDEX_ROOT attribute is not " in ntfs_read_locked_inode()
781 /* Ensure the attribute name is placed before the value. */ in ntfs_read_locked_inode()
784 ntfs_error(vol->sb, "$INDEX_ROOT attribute name is " in ntfs_read_locked_inode()
785 "placed after the attribute value."); in ntfs_read_locked_inode()
799 "compressed attribute."); in ntfs_read_locked_inode()
810 ntfs_error(vi->i_sb, "$INDEX_ROOT attribute is " in ntfs_read_locked_inode()
821 ntfs_error(vi->i_sb, "Indexed attribute is not " in ntfs_read_locked_inode()
868 /* Setup the index allocation attribute, even if not present. */ in ntfs_read_locked_inode()
886 /* Find index allocation attribute. */ in ntfs_read_locked_inode()
893 "attribute is not present but " in ntfs_read_locked_inode()
898 "attribute."); in ntfs_read_locked_inode()
903 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute " in ntfs_read_locked_inode()
908 * Ensure the attribute name is placed before the mapping pairs in ntfs_read_locked_inode()
914 ntfs_error(vol->sb, "$INDEX_ALLOCATION attribute name " in ntfs_read_locked_inode()
920 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute " in ntfs_read_locked_inode()
925 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute " in ntfs_read_locked_inode()
930 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute " in ntfs_read_locked_inode()
936 "$INDEX_ALLOCATION attribute has non " in ntfs_read_locked_inode()
953 /* Get the index bitmap attribute inode. */ in ntfs_read_locked_inode()
956 ntfs_error(vi->i_sb, "Failed to get bitmap attribute."); in ntfs_read_locked_inode()
963 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed " in ntfs_read_locked_inode()
976 /* No longer need the bitmap attribute inode. */ in ntfs_read_locked_inode()
987 /* Setup the data attribute, even if not present. */ in ntfs_read_locked_inode()
992 /* Find first extent of the unnamed data attribute. */ in ntfs_read_locked_inode()
999 "attribute."); in ntfs_read_locked_inode()
1004 * attribute, so we special case it here. in ntfs_read_locked_inode()
1020 // attribute if recovery option is set. in ntfs_read_locked_inode()
1021 ntfs_error(vi->i_sb, "$DATA attribute is missing."); in ntfs_read_locked_inode()
1099 "attribute has non zero " in ntfs_read_locked_inode()
1109 } else { /* Resident attribute. */ in ntfs_read_locked_inode()
1116 ntfs_error(vi->i_sb, "Resident data attribute " in ntfs_read_locked_inode()
1173 * ntfs_read_locked_attr_inode - read an attribute inode from its base inode
1175 * @vi: attribute inode to read
1178 * attribute inode described by @vi into memory from the base mft record
1182 * reading and looks up the attribute described by @vi before setting up the
1232 /* Find the attribute. */ in ntfs_read_locked_attr_inode()
1245 "attribute. Please report " in ntfs_read_locked_attr_inode()
1253 "attribute but compression is " in ntfs_read_locked_attr_inode()
1271 ntfs_error(vi->i_sb, "Found mst protected attribute " in ntfs_read_locked_attr_inode()
1272 "but the attribute is %s. Please " in ntfs_read_locked_attr_inode()
1293 ntfs_error(vi->i_sb, "Found mst protected attribute " in ntfs_read_locked_attr_inode()
1294 "but the attribute is encrypted. " in ntfs_read_locked_attr_inode()
1302 "attribute."); in ntfs_read_locked_attr_inode()
1308 /* Ensure the attribute name is placed before the value. */ in ntfs_read_locked_attr_inode()
1311 ntfs_error(vol->sb, "Attribute name is placed after " in ntfs_read_locked_attr_inode()
1312 "the attribute value."); in ntfs_read_locked_attr_inode()
1316 ntfs_error(vi->i_sb, "Found mst protected attribute " in ntfs_read_locked_attr_inode()
1317 "but the attribute is resident. " in ntfs_read_locked_attr_inode()
1327 ntfs_error(vi->i_sb, "Resident attribute is corrupt " in ntfs_read_locked_attr_inode()
1334 * Ensure the attribute name is placed before the mapping pairs in ntfs_read_locked_attr_inode()
1340 ntfs_error(vol->sb, "Attribute name is placed after " in ntfs_read_locked_attr_inode()
1375 ntfs_error(vi->i_sb, "First extent of attribute has " in ntfs_read_locked_attr_inode()
1396 * attribute inode. in ntfs_read_locked_attr_inode()
1415 ntfs_error(vol->sb, "Failed with error code %i while reading attribute " in ntfs_read_locked_attr_inode()
1440 * Note, index inodes are essentially attribute inodes (NInoAttr() is true)
1441 * with the attribute type set to AT_INDEX_ALLOCATION. Apart from that, they
1444 * for small indices the index allocation attribute might not actually exist.
1445 * However, the index root attribute always exists but this does not need to
1447 * index. Also, like for directories, we need to have an attribute inode for
1448 * the bitmap attribute corresponding to the index allocation attribute and we
1497 /* Find the index root attribute. */ in ntfs_read_locked_index_inode()
1502 ntfs_error(vi->i_sb, "$INDEX_ROOT attribute is " in ntfs_read_locked_index_inode()
1509 ntfs_error(vol->sb, "$INDEX_ROOT attribute is not resident."); in ntfs_read_locked_index_inode()
1512 /* Ensure the attribute name is placed before the value. */ in ntfs_read_locked_index_inode()
1515 ntfs_error(vol->sb, "$INDEX_ROOT attribute name is placed " in ntfs_read_locked_index_inode()
1516 "after the attribute value."); in ntfs_read_locked_index_inode()
1526 "root attribute."); in ntfs_read_locked_index_inode()
1532 ntfs_error(vi->i_sb, "$INDEX_ROOT attribute is corrupt."); in ntfs_read_locked_index_inode()
1577 /* Check for presence of index allocation attribute. */ in ntfs_read_locked_index_inode()
1589 /* Find index allocation attribute. */ in ntfs_read_locked_index_inode()
1595 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute is " in ntfs_read_locked_index_inode()
1600 "$INDEX_ALLOCATION attribute."); in ntfs_read_locked_index_inode()
1605 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute is " in ntfs_read_locked_index_inode()
1610 * Ensure the attribute name is placed before the mapping pairs array. in ntfs_read_locked_index_inode()
1615 ntfs_error(vol->sb, "$INDEX_ALLOCATION attribute name is " in ntfs_read_locked_index_inode()
1620 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute is " in ntfs_read_locked_index_inode()
1625 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute is sparse."); in ntfs_read_locked_index_inode()
1629 ntfs_error(vi->i_sb, "$INDEX_ALLOCATION attribute is " in ntfs_read_locked_index_inode()
1635 "attribute has non zero lowest_vcn."); in ntfs_read_locked_index_inode()
1650 /* Get the index bitmap attribute inode. */ in ntfs_read_locked_index_inode()
1653 ntfs_error(vi->i_sb, "Failed to get bitmap attribute."); in ntfs_read_locked_index_inode()
1660 ntfs_error(vi->i_sb, "$BITMAP attribute is compressed and/or " in ntfs_read_locked_index_inode()
1730 * attribute list is actually present in $MFT inode.
1732 * We solve these problems by starting with the $DATA attribute before anything
1762 /* Setup the data attribute. It is special as it is mst protected. */ in ntfs_read_inode_mount()
1794 /* Determine the first block of the $MFT/$DATA attribute. */ in ntfs_read_inode_mount()
1826 /* Need this to sanity check attribute list references to $MFT. */ in ntfs_read_inode_mount()
1838 /* Find the attribute list attribute if present. */ in ntfs_read_inode_mount()
1842 ntfs_error(sb, "Failed to lookup attribute list " in ntfs_read_inode_mount()
1843 "attribute. You should run chkdsk."); in ntfs_read_inode_mount()
1852 ntfs_debug("Attribute list attribute found in $MFT."); in ntfs_read_inode_mount()
1856 ntfs_error(sb, "Attribute list attribute is " in ntfs_read_inode_mount()
1863 ntfs_error(sb, "Non-resident attribute list " in ntfs_read_inode_mount()
1864 "attribute is encrypted/" in ntfs_read_inode_mount()
1868 ntfs_warning(sb, "Resident attribute list attribute " in ntfs_read_inode_mount()
1876 /* Now allocate memory for the attribute list. */ in ntfs_read_inode_mount()
1881 "for attribute list."); in ntfs_read_inode_mount()
1887 ntfs_error(sb, "Attribute list has non zero " in ntfs_read_inode_mount()
1903 /* Now load the attribute list. */ in ntfs_read_inode_mount()
1908 ntfs_error(sb, "Failed to load attribute list " in ntfs_read_inode_mount()
1909 "attribute with error code %i.", in ntfs_read_inode_mount()
1919 ntfs_error(sb, "Corrupt attribute list " in ntfs_read_inode_mount()
1920 "attribute."); in ntfs_read_inode_mount()
1923 /* Now copy the attribute list. */ in ntfs_read_inode_mount()
1929 /* The attribute list is now setup in memory. */ in ntfs_read_inode_mount()
1948 /* Catch the end of the attribute list. */ in ntfs_read_inode_mount()
1962 /* We want an unnamed attribute. */ in ntfs_read_inode_mount()
1991 /* Now load all attribute extents. */ in ntfs_read_inode_mount()
1998 /* Cache the current attribute. */ in ntfs_read_inode_mount()
2037 "attribute has non zero " in ntfs_read_inode_mount()
2042 /* Get the last vcn in the $DATA attribute. */ in ntfs_read_inode_mount()
2120 ntfs_error(sb, "$MFT has corrupt attribute list " in ntfs_read_inode_mount()
2121 "attribute. Run chkdsk."); in ntfs_read_inode_mount()
2126 ntfs_error(sb, "Failed to lookup $MFT/$DATA attribute extent. " in ntfs_read_inode_mount()
2131 ntfs_error(sb, "$MFT/$DATA attribute not found. $MFT is " in ntfs_read_inode_mount()
2158 ntfs_error(sb, "Couldn't find first extent of $DATA attribute in " in ntfs_read_inode_mount()
2159 "attribute list. $MFT is corrupt. Run chkdsk."); in ntfs_read_inode_mount()
2332 * or attribute inode as well as that @vi is a base inode.
2360 * safe to mess with the attribute runlist and sizes. in ntfs_truncate()
2388 ntfs_error(vi->i_sb, "Open attribute is missing from " in ntfs_truncate()
2393 ntfs_error(vi->i_sb, "Failed to lookup attribute in " in ntfs_truncate()
2401 * The i_size of the vfs inode is the new size for the attribute value. in ntfs_truncate()
2404 /* The current size of the attribute value is the old size. */ in ntfs_truncate()
2446 "for its attribute type " in ntfs_truncate()
2455 "attribute type 0x%x. " in ntfs_truncate()
2477 /* Resize the attribute record to best fit the new attribute size. */ in ntfs_truncate()
2489 * necessary data clearing in the attribute record. When the in ntfs_truncate()
2519 /* If the above resize failed, this must be an attribute extension. */ in ntfs_truncate()
2534 * Not enough space in the mft record, try to make the attribute in ntfs_truncate()
2542 * permitted for this attribute type or there not being enough space, in ntfs_truncate()
2546 ntfs_error(vol->sb, "Cannot truncate inode 0x%lx, attribute " in ntfs_truncate()
2548 "resident to non-resident attribute failed " in ntfs_truncate()
2558 "disk for the non-resident attribute value. " in ntfs_truncate()
2561 ntfs_error(vol->sb, "This attribute type may not be " in ntfs_truncate()
2571 * Both the attribute list attribute and the standard information in ntfs_truncate()
2572 * attribute must remain in the base inode. Thus, if this is one of in ntfs_truncate()
2585 // TODO: Attempt to move this attribute to an extent mft record, but in ntfs_truncate()
2586 // only if it is not already the only attribute in an mft record in in ntfs_truncate()
2602 * This attribute has multiple extents. Not yet in ntfs_truncate()
2606 "attribute type 0x%x, because the " in ntfs_truncate()
2607 "attribute is highly fragmented (it " in ntfs_truncate()
2659 * attribute truncate case. To do this, we simply drop in ntfs_truncate()
2695 * longer valid, we cannot resize the attribute record or build the in ntfs_truncate()
2702 "restore attribute search context" : in ntfs_truncate()
2703 "truncate attribute runlist", in ntfs_truncate()
2712 "attribute type 0x%x, because determining the " in ntfs_truncate()
2720 * Shrink the attribute record for the new mapping pairs array. Note, in ntfs_truncate()
2721 * this cannot fail since we are making the attribute smaller thus by in ntfs_truncate()
2729 * Generate the mapping pairs array directly into the attribute record. in ntfs_truncate()
2736 "attribute type 0x%x, because building the " in ntfs_truncate()
2852 * ntfs_setattr - called from notify_change() when an attribute is being changed
2951 * Dirty attribute inodes are written via their real inodes so just in __ntfs_write_inode()
2966 /* Update the access times in the standard information attribute. */ in __ntfs_write_inode()
3009 * If we just modified the standard information attribute we need to in __ntfs_write_inode()