[01/14] orangefs: don't return errno values from ->fault

Message ID 20180516054348.15950-2-hch@lst.de
State Not Applicable, archived
Headers show
Series
  • [01/14] orangefs: don't return errno values from ->fault
Related show

Commit Message

Christoph Hellwig May 16, 2018, 5:43 a.m.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
 fs/orangefs/file.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Matthew Wilcox May 16, 2018, 11:18 a.m. | #1
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
>

Patch

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);
 }