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

Reply via email to