Hi,

Bogdan wrote:
>   Can't replicate this. I'm creating the filesystem as follows:
>
> dd if=/dev/zero of=../../dysk_ntfs bs=1M count=20
> chown bogdan:bogdan ../../dysk_ntfs
> /sbin/mkfs.ntfs -F ../../dysk_ntfs
>

How can you check the wiping, if you clear the partition
initially ? Should you not use if=/dev/random ?

> [ ! -d /home/bogdan/siemens/ ]&&  mkdir /home/bogdan/siemens/
>
>
> mount -o loop,compression ../../dysk_ntfs -t ntfs-fuse
> /home/bogdan/siemens/                                         &&  \
> cp ../../test-* /home/bogdan/siemens/                 &&  \
> mkdir /home/bogdan/siemens/dir1                               &&  \
> setfattr -h -v 0x00080000 -n system.ntfs_attrib
> /home/bogdan/siemens/dir1                                             &&  \
> cp ../../test-* /home/bogdan/siemens/dir1             &&  \
> md5sum /home/bogdan/siemens/t*
> rm -f /home/bogdan/siemens/test-D
> rm -f /home/bogdan/siemens/dir1/test-D
> umount /home/bogdan/siemens/
>
>
> (line breaks in the interesting part should be only after "&&  \").
>   There are 5 test-* files of different length. All are put in the root
> directory and in the "dir1" subdirectory, which should be compressed.
> After that, test-D is removed from both directories (for testing of
> wiping he undelete data), the rest of the files remain untouched.
>

Maybe you retry with a bigger text file which can be compressed
and requires several extents (several MB).
Also make sure the compression is effective by comparing the
results of :

du /home/bogdan/siemens/t*
and
du --apparent-size /home/bogdan/siemens/t*

Also, did you check the behavior on sparse files ?


>   I'm getting the MD5 sums on the terminal, so all commands before it
> have succeeded. I'm running
>       ntfswipe -v -s dysk_ntfs
>       ntfswipe -v -t dysk_ntfs
>       ntfswipe -v -b 1 -s dysk_ntfs
>       ntfswipe -v -b 1 -t dysk_ntfs
>
>   Nothing hangs, no internal errors. Does it work if you put
>
>       if ( rl[i].lcn == -1 )
>       {
>               continue;
>       }
>
>   right after the "for" loop start and
>

With this, I can get to the end (but I have not checked
whether the expected wiping is fully done).

>       if ( ext_ino_num == 0 )
>       {
>               if (ntfs_attr_map_whole_runlist(na)) {
>                       ntfs_log_verbose("Extents: Internal error\n");
>                       ntfs_log_error("Extents: Can't map      
>                               ntfs_runlist (inode %lld)\n",
>                               ni->extent_nis[ext_ino_num]);
>                       goto close_attr2;
>               }
>       }
>
>   around the "if" with ntfs_attr_map_whole_runlist()?
>

Not fully, I still get an error :

Extents: Can't map ntfs_runlist (inode 22865232)

(and of course, there are fewer than 22865232 nodes
on this partition).

>   Did I understand you correctly that the first call of
> ntfs_attr_map_whole_runlist() gets everything, so there is no need to
>

Yes, you should get the full runlist.

> call it for each extent in the loop? Or shouldn't this be called at
> all in the loop, because the extents have already been attached before?
>

I cannot answer that, I have not analyzed the purpose of
your loop. Also note that extents may have a smaller number
than the initial inode.

Regards

Jean-Pierre



------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
ntfs-3g-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ntfs-3g-devel

Reply via email to