[LU-8210] OST Read Cache does not work in Centos7 platform Created: 27/May/16 Updated: 14/Jun/18 Resolved: 02/Jun/16 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.9.0 |
| Fix Version/s: | Lustre 2.9.0 |
| Type: | Bug | Priority: | Major |
| Reporter: | Wang Shilong (Inactive) | Assignee: | Yang Sheng |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | patch | ||
| Issue Links: |
|
||||||||||||
| Severity: | 3 | ||||||||||||
| Rank (Obsolete): | 9223372036854775807 | ||||||||||||
| Description |
|
sanity:156 test failed in rhel7 plataform for writecache disable 12288 bytes (12 kB) copied, 0.00750388 s, 1.6 MB/s |
| Comments |
| Comment by Gerrit Updater [ 27/May/16 ] |
|
Wang Shilong (wshilong@ddn.com) uploaded a new patch: http://review.whamcloud.com/20478 |
| Comment by Wang Shilong (Inactive) [ 27/May/16 ] |
|
Intresting thing is that we should always reproduce this problem in rhel7 platform, but I don't see |
| Comment by Wang Shilong (Inactive) [ 27/May/16 ] |
53 * drivers should _never_ use the all version - the bio may have been split
154 * before it got to the driver and the driver won't own all of it
155 */
156 #define bio_for_each_segment_all(bvl, bio, i) \
157 for (i = 0; \
158 bvl = bio_iovec_idx((bio), (i)), i < (bio)->bi_vcnt; \
159 i++)
160
161 #define bio_for_each_segment(bvl, bio, i) \
162 for (i = (bio)->bi_idx; \
163 bvl = bio_iovec_idx((bio), (i)), i < (bio)->bi_vcnt; \
164 i++)
Here is difference between two interface, bio_for_each_segment_all() start from index,0
while bio_for_each_segment start from @bi_idx, while @bi_idx might change in bio_advance()
during IO handling.
Aslo Looking from How Current upstream Filesystem handle page state updates
in end IO:
[root@server11 fs]# git grep bio_for_each_segment_all
btrfs/compression.c: bio_for_each_segment_all(bvec, cb->orig_bio, i)
btrfs/disk-io.c: bio_for_each_segment_all(bvec, bio, i) {
btrfs/extent_io.c: bio_for_each_segment_all(bvec, bio, i) {
btrfs/extent_io.c: bio_for_each_segment_all(bvec, bio, i) {
btrfs/extent_io.c: bio_for_each_segment_all(bvec, bio, i) {
btrfs/inode.c: bio_for_each_segment_all(bvec, bio, i)
btrfs/inode.c: bio_for_each_segment_all(bvec, &io_bio->bio, i) {
btrfs/inode.c: bio_for_each_segment_all(bvec, bio, i) {
btrfs/inode.c: bio_for_each_segment_all(bvec, &io_bio->bio, i) {
crypto/crypto.c: bio_for_each_segment_all(bv, bio, i) {
direct-io.c: bio_for_each_segment_all(bvec, bio, i) {
exofs/ore.c: bio_for_each_segment_all(bv, bio, i) {
exofs/ore_raid.c: bio_for_each_segment_all(bv, bio, i) {
ext4/page-io.c: bio_for_each_segment_all(bvec, bio, i) {
ext4/readpage.c: bio_for_each_segment_all(bv, bio, i) {
ext4/readpage.c: bio_for_each_segment_all(bv, bio, i) {
f2fs/data.c: bio_for_each_segment_all(bvec, bio, i) {
f2fs/data.c: bio_for_each_segment_all(bvec, bio, i) {
f2fs/data.c: bio_for_each_segment_all(bvec, io->bio, i) {
gfs2/lops.c: bio_for_each_segment_all(bvec, bio, i) {
gfs2/meta_io.c: bio_for_each_segment_all(bvec, bio, i) {
logfs/dev_bdev.c: bio_for_each_segment_all(bvec, bio, i) {
mpage.c: bio_for_each_segment_all(bv, bio, i) {
|
| Comment by Wang Shilong (Inactive) [ 27/May/16 ] |
|
I am still wondering why Intel autotest could pass this test, maybe I miss something here........... |
| Comment by Wang Shilong (Inactive) [ 27/May/16 ] |
|
I see from Documentation/block/biodoc.txt
So this problem might be related to Specific Driver which can explain |
| Comment by Peter Jones [ 27/May/16 ] |
|
Yang Sheng Could you please advise on this issue? Thanks Peter |
| Comment by Yang Sheng [ 31/May/16 ] |
|
Hi, Wang, Do you mind provide which type disk driver apply in your test environment. I am interesting to do a reproduction. Thanks, |
| Comment by Wang Shilong (Inactive) [ 31/May/16 ] |
|
Hi Sheng, Qemu configurations something like this: <disk type='file' device='disk'> Regards, |
| Comment by Yang Sheng [ 01/Jun/16 ] |
|
Many thanks for your help. Thanks, |
| Comment by Gerrit Updater [ 02/Jun/16 ] |
|
Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/20478/ |
| Comment by Peter Jones [ 02/Jun/16 ] |
|
Landed for 2.9 |
| Comment by James A Simmons [ 03/Jun/16 ] |
|
This patch breaks support with the latest kernels |
| Comment by Andreas Dilger [ 03/Jun/16 ] |
|
Luckily I thought we are deleting lloop, so that would be the easiest fix? |
| Comment by James A Simmons [ 03/Jun/16 ] |
|
The default loop doesn't support direct I/O until the 4.6 kernel if I remember right. So we still need the fix for kernels between 3.16 <-> 4.5 |