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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.