Message ID | 20180516054348.15950-2-hch@lst.de |
---|---|
State | Not Applicable |
Headers | show |
Series | [01/14] orangefs: don't return errno values from ->fault | expand |
On Wed, May 16, 2018 at 07:43:35AM +0200, Christoph Hellwig wrote: > + rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1, STATX_SIZE); > if (rc) { > gossip_err("%s: orangefs_inode_getattr failed, " > "rc:%d:.\n", __func__, rc); > - return rc; > + return VM_FAULT_SIGBUS; Nope. orangefs_inode_getattr can return -ENOMEM. > } > return filemap_fault(vmf); > } > -- > 2.17.0 >
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c index 26358efbf794..b4a25cd4f3fa 100644 --- a/fs/orangefs/file.c +++ b/fs/orangefs/file.c @@ -528,18 +528,16 @@ static long orangefs_ioctl(struct file *file, unsigned int cmd, unsigned long ar return ret; } -static int orangefs_fault(struct vm_fault *vmf) +static vm_fault_t orangefs_fault(struct vm_fault *vmf) { struct file *file = vmf->vma->vm_file; int rc; - rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1, - STATX_SIZE); - if (rc == -ESTALE) - rc = -EIO; + + rc = orangefs_inode_getattr(file->f_mapping->host, 0, 1, STATX_SIZE); if (rc) { gossip_err("%s: orangefs_inode_getattr failed, " "rc:%d:.\n", __func__, rc); - return rc; + return VM_FAULT_SIGBUS; } return filemap_fault(vmf); }
Signed-off-by: Christoph Hellwig <hch@lst.de> --- fs/orangefs/file.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)