diff options
author | Anton Altaparmakov <aia21@cantab.net> | 2005-03-03 09:43:43 -0500 |
---|---|---|
committer | Anton Altaparmakov <aia21@cantab.net> | 2005-05-05 06:15:46 -0400 |
commit | 9451f8519c5e6d5d064c30033fc3d4ce77de321c (patch) | |
tree | 104eedf065c4091838a27f6e674875a035c30820 /fs/ntfs/layout.h | |
parent | 413826868fb49d200b741bcaeaf58ea5c5e45321 (diff) |
NTFS: Correct sparse file handling. The compressed values need to be
checked and set in the ntfs inode as done for compressed files
and the compressed size needs to be used for vfs inode->i_blocks
instead of the allocated size, again, as done for compressed files.
Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
Diffstat (limited to 'fs/ntfs/layout.h')
-rw-r--r-- | fs/ntfs/layout.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/fs/ntfs/layout.h b/fs/ntfs/layout.h index 7cb8806d4559..8d1f1326612f 100644 --- a/fs/ntfs/layout.h +++ b/fs/ntfs/layout.h | |||
@@ -749,10 +749,11 @@ typedef struct { | |||
749 | record header aligned to 8-byte boundary. */ | 749 | record header aligned to 8-byte boundary. */ |
750 | /* 34*/ u8 compression_unit; /* The compression unit expressed | 750 | /* 34*/ u8 compression_unit; /* The compression unit expressed |
751 | as the log to the base 2 of the number of | 751 | as the log to the base 2 of the number of |
752 | clusters in a compression unit. 0 means not | 752 | clusters in a compression unit. 0 means not |
753 | compressed. (This effectively limits the | 753 | compressed. (This effectively limits the |
754 | compression unit size to be a power of two | 754 | compression unit size to be a power of two |
755 | clusters.) WinNT4 only uses a value of 4. */ | 755 | clusters.) WinNT4 only uses a value of 4. |
756 | Sparse files also have this set to 4. */ | ||
756 | /* 35*/ u8 reserved[5]; /* Align to 8-byte boundary. */ | 757 | /* 35*/ u8 reserved[5]; /* Align to 8-byte boundary. */ |
757 | /* The sizes below are only used when lowest_vcn is zero, as otherwise it would | 758 | /* The sizes below are only used when lowest_vcn is zero, as otherwise it would |
758 | be difficult to keep them up-to-date.*/ | 759 | be difficult to keep them up-to-date.*/ |
@@ -772,10 +773,10 @@ typedef struct { | |||
772 | data_size. */ | 773 | data_size. */ |
773 | /* sizeof(uncompressed attr) = 64*/ | 774 | /* sizeof(uncompressed attr) = 64*/ |
774 | /* 64*/ sle64 compressed_size; /* Byte size of the attribute | 775 | /* 64*/ sle64 compressed_size; /* Byte size of the attribute |
775 | value after compression. Only present when | 776 | value after compression. Only present when |
776 | compressed. Always is a multiple of the | 777 | compressed or sparse. Always is a multiple of |
777 | cluster size. Represents the actual amount of | 778 | the cluster size. Represents the actual amount |
778 | disk space being used on the disk. */ | 779 | of disk space being used on the disk. */ |
779 | /* sizeof(compressed attr) = 72*/ | 780 | /* sizeof(compressed attr) = 72*/ |
780 | } __attribute__ ((__packed__)) non_resident; | 781 | } __attribute__ ((__packed__)) non_resident; |
781 | } __attribute__ ((__packed__)) data; | 782 | } __attribute__ ((__packed__)) data; |