On Mon, 26 Mar 2001, Anton Altaparmakov wrote:
> On Mon, 26 Mar 2001, Michael N. Filippov wrote:
> > 1. I have a lot of questions and several answers (i hope) and not sure
> > which mailing list is more populated. I see that almost every active
> > member is registered here (http://tiger.informatik.hu-berlin.de/cgi-bin/mailman/listinfo/linux-ntfs)
> > and on sourceforge (http://sourceforge.net/projects/linux-ntfs) and have
> > to send copy. Why not to merge them. All - go to sourceforge :) ! (for
> > example.). It would be fine i think.
>
> At the moment, there are only 13 email addresses registered on the
> Sourceforge list, so if you want to reach lots of people you are better
> off sending your message to @tiger address. I don't mind merging them but
> I am not sure everyone on @tiger is interested in the content of
> @sourceforge, i.e. development of linux-ntfs project (which at the moment
> is admittedly close to zero, but that might change in the future...).
>
> What do other people think?
As for me it would be better to start new (to select active
members) not Linux specific mailing list with understandable name for
concept, e.g. NTFS-Layout to collect/exchange information. Possible it
will attract people who writes not for Linux (like me). I dont know if it
is very hard to start new mailing list.
>
> > 2. I installed Windows Whistler Server (XP) to look at
> > NTFS 3.1 (as written in its $Volume file). The first change i see is
> > that in file record record_header->update_sequence_header.offset is 0x30
> > instead of typical 0x2A. These 6 bytes for every file/directory on
> > disk (i copied one directory without system/hidden etc files) have such
> > layout: first 4 bytes - mft_index, 2 bytes - zero. It means that only 32
> > bits are reserved instead of 48. Any guesses ?
>
> When you say mft_index, do you mean that this is the index number of the
> mft record in which mft_index is stored? (quite a bizzarre thing to store
> as it is completely redundant, but it does make sense for recovery
> purposes). Could you just confirm I understood you correctly?
exactly. Even more info: in extended file records this number is mft_index
too (not index of the base file record). It means that it is not index of
some attribute (for example $SECURITY_DESCRIPTOR, as we could expect). It
is just 32 bit index of _this_ record. (about 32 bit, possible i'm wrong -
i dont have 2 Tb drive - see below)
>
> If you have a kernel debugger why not check out how it is accessed?
I dont know this trick, can you explain me this new (for me of course:)
technology. All i have: my tiny program with built it hex editor.
>
> I don't have any version of XP but my guess would be that it still is
> 48-bits for the index. Don't forget it is stored in little endian, so that
> the first byte is the least significant byte. So effectively, the first
> four bytes are the lower 32-bits of the mft record number. The next two
> bytes, which you note as zero, are the high 16-bits of the mft record
> number (zero for you as your volume doesn't have 4Gi of files on it) and
> the final two bytes are of course the sequence_number which is also
> present in the mft_record at offset 0x10. Could you confirm that the two
> sequence numbers match up?
Once again about 32 bits, or they have to combine 6 bytes to use 4 bytes
in little endian and next 2 bytes as high part. Let me quote my prog :) :
---> file 1234
File Record Header {
Record Header {
Magic: 'FILE'
Update sequence offset: 30, count: 3 <- note#1: 30 instead of 2e
Log Sequence Number: 489c08
}
Sequence Number: 6e45
Reference Count: 1
Attributes Offset: 38
Flags: 1 in_use
Bytes In Use: 158
Bytes Allocated: 400
Base File Reference: MFT index: 0, sequence number: 0
Next Attribute Instance: 4
}
$STANDARD_INFORMATION resident
$FILE_NAME resident
$DATA nonresident
---> show inode 1234
46 49 4c 45 30 00 03 00 08 9c 48 00 00 00 00 00 FILE0.....H.....
45 6e 01 00 38 00 01 00 58 01 00 00 00 04 00 00 En..8...X.......
00 00 00 00 00 00 00 00 04 00 00 00 34 12 00 00 ............4...
^^ ^^ ^^ ^^ ^^ ^^ ^^ <- note#2
6 bytes: value = 0x00001234000000.
and first part 4 bytes = mft_index (0x1234). Possible last 2 bytes are
high part, possible not (some new flags for example). They are 0 for all
records. Or course plain 48 would be more consistent but MS has its own
way.
> If they do, and I understood you correctly
> above, we now have full specs on at least one of the new features in NTFS
> 3.1. (-:
>
> Best regards,
>
> Anton
> --
> Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
> Linux NTFS maintainer / WWW: http://sourceforge.net/projects/linux-ntfs/
> ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/
>
>
|