summaryrefslogtreecommitdiffstats
path: root/arch/sparc64/solaris/fs.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-17 13:25:08 +0000
commit59223edaa18759982db0a8aced0e77457d10c68e (patch)
tree89354903b01fa0a447bffeefe00df3044495db2e /arch/sparc64/solaris/fs.c
parentdb7d4daea91e105e3859cf461d7e53b9b77454b2 (diff)
Merge with Linux 2.3.6. Sorry, this isn't tested on silicon, I don't
have a MIPS box at hand.
Diffstat (limited to 'arch/sparc64/solaris/fs.c')
-rw-r--r--arch/sparc64/solaris/fs.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/arch/sparc64/solaris/fs.c b/arch/sparc64/solaris/fs.c
index f0921ab9f..bf06fc05d 100644
--- a/arch/sparc64/solaris/fs.c
+++ b/arch/sparc64/solaris/fs.c
@@ -1,4 +1,4 @@
-/* $Id: fs.c,v 1.12 1999/01/02 16:46:06 davem Exp $
+/* $Id: fs.c,v 1.13 1999/05/14 07:24:37 davem Exp $
* fs.c: fs related syscall emulation for Solaris
*
* Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
@@ -410,7 +410,11 @@ static int report_statvfs(struct inode *inode, u32 buf)
mm_segment_t old_fs = get_fs();
int error;
struct sol_statvfs *ss = (struct sol_statvfs *)A(buf);
-
+
+ if (!inode->i_sb)
+ return -ENODEV;
+ if (!inode->i_sb->s_op->statfs)
+ return -ENOSYS;
set_fs (KERNEL_DS);
error = inode->i_sb->s_op->statfs(inode->i_sb, &s, sizeof(struct statfs));
set_fs (old_fs);
@@ -448,6 +452,10 @@ static int report_statvfs64(struct inode *inode, u32 buf)
int error;
struct sol_statvfs64 *ss = (struct sol_statvfs64 *)A(buf);
+ if (!inode->i_sb)
+ return -ENODEV;
+ if (!inode->i_sb->s_op->statfs)
+ return -ENOSYS;
set_fs (KERNEL_DS);
error = inode->i_sb->s_op->statfs(inode->i_sb, &s, sizeof(struct statfs));
set_fs (old_fs);
@@ -489,9 +497,7 @@ asmlinkage int solaris_statvfs(u32 path, u32 buf)
if (!IS_ERR(dentry)) {
struct inode * inode = dentry->d_inode;
- error = -ENOSYS;
- if (inode->i_sb->s_op->statfs)
- error = report_statvfs(inode, buf);
+ error = report_statvfs(inode, buf);
dput(dentry);
}
unlock_kernel();
@@ -515,10 +521,6 @@ asmlinkage int solaris_fstatvfs(unsigned int fd, u32 buf)
error = -ENOENT;
else if (!(inode = dentry->d_inode))
error = -ENOENT;
- else if (!inode->i_sb)
- error = -ENODEV;
- else if (!inode->i_sb->s_op->statfs)
- error = -ENOSYS;
else
error = report_statvfs(inode, buf);
fput(file);
@@ -538,9 +540,7 @@ asmlinkage int solaris_statvfs64(u32 path, u32 buf)
if (!IS_ERR(dentry)) {
struct inode * inode = dentry->d_inode;
- error = -ENOSYS;
- if (inode->i_sb->s_op->statfs)
- error = report_statvfs64(inode, buf);
+ error = report_statvfs64(inode, buf);
dput(dentry);
}
unlock_kernel();
@@ -564,10 +564,6 @@ asmlinkage int solaris_fstatvfs64(unsigned int fd, u32 buf)
error = -ENOENT;
else if (!(inode = dentry->d_inode))
error = -ENOENT;
- else if (!inode->i_sb)
- error = -ENODEV;
- else if (!inode->i_sb->s_op->statfs)
- error = -ENOSYS;
else
error = report_statvfs64(inode, buf);
fput(file);