[LTP] [PATCH v4 3/4] syscalls/statx11: Add basic test for STATX_DIOALIGN on block device

Yang Xu (Fujitsu) xuyang2018.jy@fujitsu.com
Thu Apr 27 05:37:34 CEST 2023



  2023/04/27 6:12, Eric Biggers 写道:
> On Thu, Apr 06, 2023 at 01:40:21PM +0800, Yang Xu wrote:
>> +static void verify_statx(void)
>> +{
>> +	struct statx buf;
>> +
>> +	memset(&buf, 0, sizeof(buf));
> 
> It is not necessary to memset struct statx to 0 before calling statx().

Will remove.
> 
>> +#ifdef HAVE_STRUCT_STATX_STX_DIO_MEM_ALIGN
> 
> Again, this looks wrong.  If the system headers are outdated, then LTP should
> use its in-tree header instead.

Have mention this in the previous email. We can discussion this in that 
email.

> 
>> +static void setup(void)
>> +{
>> +	char *dev_name;
>> +
>> +	dev_name = basename((char *)tst_device->dev);
> 
> This is modifying a const string, which seems problematic.

Yes, I plan to  modify code as below:
         char full_name[256];

         strcpy(full_name, tst_device->dev);
         dev_name = SAFE_BASENAME(full_name);

> 
>> +	sprintf(sys_bdev_logical_path, "/sys/block/%s/queue/logical_block_size", dev_name);
>> +	while (access(sys_bdev_logical_path, F_OK) != 0) {
>> +		dev_name[strlen(dev_name)-1] = '\0';
>> +		sprintf(sys_bdev_logical_path, "/sys/block/%s/queue/logical_block_size", dev_name);
>> +	}
> 
> What is this code doing?  Is it trying to strip off the partition number of the
> block device name?  

Yes.

>If so, it is incorrect because it assumes the partition
> number is only 1 digit long, which is not guaranteed.

I don't assume the partition number is only 1 digit long, this code has 
a while circulate. Also, I try the /dev/vdb11 and it also works.


> 
> How about just using /sys/class/block/%s/queue, which works for partitions?

In fact, /sys/block or /sys/class/block, these files are all link files 
to /sys/device/pci...... see below:
#cd /sys/class/block
[root@localhost block]# ls -l
total 0
lrwxrwxrwx. 1 root root 0 Apr 20 00:07 loop0 -> 
../../devices/virtual/block/loop0
lrwxrwxrwx. 1 root root 0 Apr 20 00:07 loop1 -> 
../../devices/virtual/block/loop1
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda1 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda1
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda2 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda2
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda3 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda3
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda4 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda4
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda5 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda5
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 sda6 -> 
../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda/sda6
lrwxrwxrwx. 1 root root 0 Apr 27 08:25 zram0 -> 
../../devices/virtual/block/zram0
[root@localhost block]# cd /sys/block/
[root@localhost block]# ls -l
total 0
lrwxrwxrwx. 1 root root 0 Apr 20 00:03 loop0 -> 
../devices/virtual/block/loop0
lrwxrwxrwx. 1 root root 0 Apr 20 00:03 loop1 -> 
../devices/virtual/block/loop1
lrwxrwxrwx. 1 root root 0 Apr 20 00:03 sda -> 
../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
lrwxrwxrwx. 1 root root 0 Apr 20 00:03 zram0 -> 
../devices/virtual/block/zram0
[root@localhost block]# pwd

Best Regards
Yang Xu

> 
> - Eric


More information about the ltp mailing list