Hey Lucas,
First up thanks for the comments. I had to do a bit of digging around
the code and it was really helpful.
I have made some changes and am running the regression right now. I do
have a few comments on the code review.
>> + def _reset_device(self, mount_point, file_system):
>> + """Reset the test. Reinitialize sparse file.
>> +
>> + �...@param mount_point: the absolute path to the mount_point.
>> + �...@param file_system: the type of file_system.
>> + """
>> + # Umount device.
>> + self._execute('umount %s' % mount_point, error_check_skip=True)
>> +
>> + # Remove sparse_file.
>> + self._execute('rm -rf %s' % self.sparse_file)
>> +
>> + # Recreate sparse_file.
>> + self._execute('dd if=/dev/zero of=%s bs=1M seek=1000 count=1' %
>> + self.sparse_file)
>> +
>> + # Format sparse_file.
>> + self._execute('echo "y" | mkfs -t %s %s' %
>> + (file_system, self.sparse_file),
>> error_check_skip=True)
>> +
>> + # Mount sparse_file.
>> + self._execute('mount -o loop -t %s %s %s' % (file_system,
>> + self.sparse_file,
>> + mount_point))
>
> ^ We do have code in client/bin/partition.py to do the above. In
> initialize, we could do:
>
> def initialize(self):
> self._create_partition()
>
> def _create_partition(self):
> self.partition = job.partition(self.sparse_file, 1024, job.tmpdir)
> self.partition.mkfs(fstype=self.file_system)
> self.partition.mount()
>
> def _reset_device(self):
> self.partition.umount()
> os.remove(self.sparse_file)
> self._create_partition()
>
> Or something like that, I think it'd avoid to write code for something
> that we already have good code written for.
>
This makes perfect sense however, the "partition" class doesn't create
a sparse file. What we need in the tests is a sparse file so that we
can check the size increase every time more data is written into it.
>> +
>> + def _get_disk_usage(self, file_name):
>> + """Returns the disk usage of given file.
>> +
>> + �...@param file_name: the name of the file.
>> +
>> + �...@returns: the disk usage as an integer.
>> + """
>> + # Check du stats.
>> + cmd = '%s %s' % (self._DU_CMD, file_name)
>> +
>> + # Expected value for output = '1028\tfoo'
>> + ret,output = self._execute(cmd)
>> +
>> + # Desired ouput = (1028, foo)
>> + output = output.split('\t')
>> +
>> + return int(output[0])
>
> ^ It would be simpler to use os.stat, it seems.
The reason I explicitly use "du" is so that we know the actual disk usage.
For instance:
In [2]: os.system('dd if=/dev/zero of=big-file bs=1M count=1 seek=1000')
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.0180325 s, 58.1 MB/s
Out[2]: 0
In [3]: os.stat('big-file').st_size
Out[3]: 1049624576
In [4]: os.system('du big-file')
1036 big-file
Out[4]: 0
I think everything else I have fixed as you mentioned. I'll send the
patch in once my regression test completes.
Thanks again for you help and your patience.
--
Akshay Lal
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest