diff options
| -rw-r--r-- | fs/orangefs/file.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index db0b52187cbc..a5a2fe76568f 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c | |||
| @@ -528,18 +528,19 @@ static long orangefs_ioctl(struct file *file, unsigned int cmd, unsigned long ar | |||
| 528 | return ret; | 528 | return ret; |
| 529 | } | 529 | } |
| 530 | 530 | ||
| 531 | static int orangefs_fault(struct vm_fault *vmf) | 531 | static vm_fault_t orangefs_fault(struct vm_fault *vmf) |
| 532 | { | 532 | { |
| 533 | struct file *file = vmf->vma->vm_file; | 533 | struct file *file = vmf->vma->vm_file; |
| 534 | int rc; | 534 | int ret; |
| 535 | rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1, | 535 | |
| 536 | ret = orangefs_inode_getattr(file->f_mapping->host, 0, 1, | ||
| 536 | STATX_SIZE); | 537 | STATX_SIZE); |
| 537 | if (rc == -ESTALE) | 538 | if (ret == -ESTALE) |
| 538 | rc = -EIO; | 539 | ret = -EIO; |
| 539 | if (rc) { | 540 | if (ret) { |
| 540 | gossip_err("%s: orangefs_inode_getattr failed, " | 541 | gossip_err("%s: orangefs_inode_getattr failed, ret:%d:.\n", |
| 541 | "rc:%d:.\n", __func__, rc); | 542 | __func__, ret); |
| 542 | return rc; | 543 | return VM_FAULT_SIGBUS; |
| 543 | } | 544 | } |
| 544 | return filemap_fault(vmf); | 545 | return filemap_fault(vmf); |
| 545 | } | 546 | } |
