From: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: kosaki.motohiro@jp.fujitsu.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5] blk: fix a wrong accounting of hd_struct->in_flight
Date: Tue, 19 Oct 2010 11:22:47 +0900 [thread overview]
Message-ID: <4CBD00F7.3070503@jp.fujitsu.com> (raw)
In-Reply-To: <4CBC3BE2.2020802@kernel.dk>
Hi Jens,
> This version looks good, thanks for following through on this. What kind
> of testing did you do?
I did three kinds of test.
1. run a reproducer.
I confirmed the problem was fixed using attached the reproducer.
2. remove and make a partition which is running I/O.
I confirmed the kernel panic or hungup did not occur using following steps.
# dd if=/dev/sda of=null &
# while true
> do
> /sbin/parted /dev/sda rm 3 > /dev/null
> /sbin/parted /dev/sda mkpart primary ext2 42.5GB 52.5GB > /dev/null
> sleep 2
> done
3. reload a partition which is running I/O.
I confirmed the kernel panic or hungup did not occur using following steps.
# dd if=/dev/sda of=null &
# while true
> do
> /sbin/hdparm -z /dev/sda
> sleep 2
> done
--- <reproducer>
/*
* This test program continues to read 512 bytes data from specified arguments.
*
* Usage : read <sec_no> <blk_dev>
* @sec_no : sector number
* @blk_dev : block device
*
* ex) If you want to read 512 bytes data from sector number 100 of
* /dev/sda
*
* # ./read 100 /dev/sda
*
* How to build:
*
* $ gcc -D _GNU_SOURCE -o read read.c
*
* How to occurs a problem which is a wrong accounting of
* hd_struct->in_flight:
*
* 1. confirm a start sector of a partition
* # cat /sys/block/sda/sda2/start
* 1044225
* 2. run the test program against sector no.1044225 of /dev/sda
* # ./read 1044225 /dev/sda &
* 3. run the test program against sector no.1044224 of /dev/sda
* # ./read 1044224 /dev/sda &
* 4. confirm the /proc/diskstats
* # cat /proc/diskstats |grep sda
* 8 0 sda 90524 7579 102154 20464 0 0 0 0 0 14096 20089
* 8 1 sda1 19085 1352 21841 4209 0 0 0 0 4294967064 15689 4293424691
* 8 2 sda2 71252 3624 74891 15950 0 0 0 0 232 23995 1562390
* 8 3 sda3 54 487 2188 92 0 0 0 0 0 88 92
* 8 4 sda4 4 0 8 0 0 0 0 0 0 0 0
* 8 5 sda5 81 2027 2130 138 0 0 0 0 0 87 137
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#define SECTOR 512 // sector size
#define ALIGN 512 // for direct io
int main(int argc, char *argv[])
{
int fd;
int i;
int sector_n;
unsigned long ret;
void *buf;
if ( argc != 3 ) {
printf("invalid argument\n");
exit(1);
}
sector_n = atoi(argv[1]);
printf("read 512 bytes data from setor no.%d\n", sector_n);
ret = posix_memalign(&buf, ALIGN, SECTOR);
if (ret != 0) {
perror("posix_memalign");
exit(1);
}
fd = open(argv[2], O_RDONLY|O_DIRECT);
if (fd < 0) {
perror("open");
exit(1);
}
while (1) {
ret = lseek(fd, 0, SEEK_SET);
if (ret < 0) {
perror("lseek");
printf("ret = %d\n", ret);
exit(1);
}
for (i = 0; i < SECTOR; i++) {
ret = lseek(fd, sector_n, SEEK_CUR);
if (ret < 0) {
perror("lseek");
printf("ret = %d\n", ret);
exit(1) ;
}
}
ret = read(fd, buf, SECTOR);
if (ret != SECTOR) {
perror("read");
exit(1);
}
}
free(buf);
close(fd);
}
---
Regards,
Yasuaki Ishimatsu
next prev parent reply other threads:[~2010-10-19 2:23 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-12 6:38 [PATCH] blk: fix a wrong accounting of hd_struct->in_flight Yasuaki Ishimatsu
2010-10-12 8:19 ` Jens Axboe
2010-10-14 12:48 ` [PATCH v2] " Yasuaki Ishimatsu
2010-10-14 12:55 ` Jens Axboe
2010-10-15 8:39 ` [PATCH v3] " Yasuaki Ishimatsu
2010-10-15 10:04 ` Jens Axboe
2010-10-18 8:28 ` [PATCH v4] " Yasuaki Ishimatsu
2010-10-18 8:34 ` Jens Axboe
2010-10-18 12:19 ` [PATCH v5] " Yasuaki Ishimatsu
2010-10-18 12:21 ` Jens Axboe
2010-10-19 2:22 ` Yasuaki Ishimatsu [this message]
2010-10-19 10:02 ` Jens Axboe
2010-10-14 6:07 ` [PATCH] " KOSAKI Motohiro
2010-10-14 12:44 ` Jens Axboe
2010-10-14 23:30 ` Paul E. McKenney
2010-10-15 7:30 ` Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CBD00F7.3070503@jp.fujitsu.com \
--to=isimatu.yasuaki@jp.fujitsu.com \
--cc=axboe@kernel.dk \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox