diff options
| -rw-r--r-- | fs/ceph/file.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/fs/ceph/file.c b/fs/ceph/file.c index dd47026c6064..146ac9040141 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c | |||
| @@ -526,15 +526,10 @@ more: | |||
| 526 | io_align = pos & ~PAGE_MASK; | 526 | io_align = pos & ~PAGE_MASK; |
| 527 | buf_align = (unsigned long)data & ~PAGE_MASK; | 527 | buf_align = (unsigned long)data & ~PAGE_MASK; |
| 528 | len = left; | 528 | len = left; |
| 529 | if (file->f_flags & O_DIRECT) { | 529 | |
| 530 | /* write from beginning of first page, regardless of | 530 | /* write from beginning of first page, regardless of io alignment */ |
| 531 | io alignment */ | 531 | page_align = file->f_flags & O_DIRECT ? buf_align : io_align; |
| 532 | page_align = (pos - io_align + buf_align) & ~PAGE_MASK; | 532 | num_pages = calc_pages_for(page_align, len); |
| 533 | num_pages = calc_pages_for((unsigned long)data, len); | ||
| 534 | } else { | ||
| 535 | page_align = pos & ~PAGE_MASK; | ||
| 536 | num_pages = calc_pages_for(pos, len); | ||
| 537 | } | ||
| 538 | req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, | 533 | req = ceph_osdc_new_request(&fsc->client->osdc, &ci->i_layout, |
| 539 | ceph_vino(inode), pos, &len, | 534 | ceph_vino(inode), pos, &len, |
| 540 | CEPH_OSD_OP_WRITE, flags, | 535 | CEPH_OSD_OP_WRITE, flags, |
