From: Steve Dickson <SteveD@redhat.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Linux NFS Mailing List <nfs@lists.sourceforge.net>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: [PATCH] Make V4 mounts return the correct errno to mount command
Date: Wed, 21 Apr 2004 07:31:52 -0400 [thread overview]
Message-ID: <40865BA8.4030308@RedHat.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 887 bytes --]
Hey Trond,
Attached is a patch that changes nfs_sb_init() to returned correct
errno (when nfs_get_root() fails), instead of returning a static
errno of -EINVAL. By returning the correct errno, it allows
the mount command to print the correct error message.
For example, currently when you try to mount a v4 fs that
is not exported on the server you get:
Lucky# mount -v -t nfs4 harryp:/home /mnt/harryp
mount: wrong fs type, bad option, bad superblock on harryp:/home,
or too many mounted file systems
With this patch, error message becomes:
Lucky# mount -v -t nfs4 harryp:/home /mnt/harryp
mount: special device harryp:/home does not exist
Now that the mount command correctly decipher the errror
I also changed two hard coded printk into dprintks to cut
down on the number of messages (from 4 to 2) that are logged
for this type of error.
SteveD.
[-- Attachment #2: linux-2.6.5-mounterrors.patch --]
[-- Type: text/plain, Size: 1594 bytes --]
--- linux-2.6.5/fs/nfs/inode.c.orig 2004-04-20 04:21:05.000000000 -0400
+++ linux-2.6.5/fs/nfs/inode.c 2004-04-20 21:37:34.599579224 -0400
@@ -237,7 +237,7 @@ nfs_get_root(struct super_block *sb, str
error = server->rpc_ops->getroot(server, rootfh, fsinfo);
if (error < 0) {
- printk(KERN_NOTICE "nfs_get_root: getattr error = %d\n", -error);
+ dprintk("nfs_get_root: getattr error = %d\n", -error);
return ERR_PTR(error);
}
@@ -262,6 +262,7 @@ nfs_sb_init(struct super_block *sb, rpc_
struct nfs_pathconf pathinfo = {
.fattr = &fattr,
};
+ int no_root_error = 0;
/* We probably want something more informative here */
snprintf(sb->s_id, sizeof(sb->s_id), "%x:%x", MAJOR(sb->s_dev), MINOR(sb->s_dev));
@@ -272,12 +273,15 @@ nfs_sb_init(struct super_block *sb, rpc_
root_inode = nfs_get_root(sb, &server->fh, &fsinfo);
/* Did getting the root inode fail? */
- if (IS_ERR(root_inode))
+ if (IS_ERR(root_inode)) {
+ no_root_error = PTR_ERR(root_inode);
goto out_no_root;
+ }
sb->s_root = d_alloc_root(root_inode);
- if (!sb->s_root)
+ if (!sb->s_root) {
+ no_root_error = -ENOMEM;
goto out_no_root;
-
+ }
sb->s_root->d_op = server->rpc_ops->dentry_ops;
/* Get some general file system info */
@@ -337,10 +341,10 @@ nfs_sb_init(struct super_block *sb, rpc_
return 0;
/* Yargs. It didn't work out. */
out_no_root:
- printk("nfs_read_super: get root inode failed\n");
+ dprintk("nfs_sb_init: get root inode failed: errno %d\n", -no_root_error);
if (!IS_ERR(root_inode))
iput(root_inode);
- return -EINVAL;
+ return no_root_error;
}
/*
WARNING: multiple messages have this Message-ID (diff)
From: Steve Dickson <SteveD@redhat.com>
To: Trond Myklebust <trond.myklebust@fys.uio.no>
Cc: Linux NFS Mailing List <nfs@lists.sourceforge.net>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: [NFS] [PATCH] Make V4 mounts return the correct errno to mount command
Date: Wed, 21 Apr 2004 07:31:52 -0400 [thread overview]
Message-ID: <40865BA8.4030308@RedHat.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 887 bytes --]
Hey Trond,
Attached is a patch that changes nfs_sb_init() to returned correct
errno (when nfs_get_root() fails), instead of returning a static
errno of -EINVAL. By returning the correct errno, it allows
the mount command to print the correct error message.
For example, currently when you try to mount a v4 fs that
is not exported on the server you get:
Lucky# mount -v -t nfs4 harryp:/home /mnt/harryp
mount: wrong fs type, bad option, bad superblock on harryp:/home,
or too many mounted file systems
With this patch, error message becomes:
Lucky# mount -v -t nfs4 harryp:/home /mnt/harryp
mount: special device harryp:/home does not exist
Now that the mount command correctly decipher the errror
I also changed two hard coded printk into dprintks to cut
down on the number of messages (from 4 to 2) that are logged
for this type of error.
SteveD.
[-- Attachment #2: linux-2.6.5-mounterrors.patch --]
[-- Type: text/plain, Size: 1594 bytes --]
--- linux-2.6.5/fs/nfs/inode.c.orig 2004-04-20 04:21:05.000000000 -0400
+++ linux-2.6.5/fs/nfs/inode.c 2004-04-20 21:37:34.599579224 -0400
@@ -237,7 +237,7 @@ nfs_get_root(struct super_block *sb, str
error = server->rpc_ops->getroot(server, rootfh, fsinfo);
if (error < 0) {
- printk(KERN_NOTICE "nfs_get_root: getattr error = %d\n", -error);
+ dprintk("nfs_get_root: getattr error = %d\n", -error);
return ERR_PTR(error);
}
@@ -262,6 +262,7 @@ nfs_sb_init(struct super_block *sb, rpc_
struct nfs_pathconf pathinfo = {
.fattr = &fattr,
};
+ int no_root_error = 0;
/* We probably want something more informative here */
snprintf(sb->s_id, sizeof(sb->s_id), "%x:%x", MAJOR(sb->s_dev), MINOR(sb->s_dev));
@@ -272,12 +273,15 @@ nfs_sb_init(struct super_block *sb, rpc_
root_inode = nfs_get_root(sb, &server->fh, &fsinfo);
/* Did getting the root inode fail? */
- if (IS_ERR(root_inode))
+ if (IS_ERR(root_inode)) {
+ no_root_error = PTR_ERR(root_inode);
goto out_no_root;
+ }
sb->s_root = d_alloc_root(root_inode);
- if (!sb->s_root)
+ if (!sb->s_root) {
+ no_root_error = -ENOMEM;
goto out_no_root;
-
+ }
sb->s_root->d_op = server->rpc_ops->dentry_ops;
/* Get some general file system info */
@@ -337,10 +341,10 @@ nfs_sb_init(struct super_block *sb, rpc_
return 0;
/* Yargs. It didn't work out. */
out_no_root:
- printk("nfs_read_super: get root inode failed\n");
+ dprintk("nfs_sb_init: get root inode failed: errno %d\n", -no_root_error);
if (!IS_ERR(root_inode))
iput(root_inode);
- return -EINVAL;
+ return no_root_error;
}
/*
next reply other threads:[~2004-04-21 11:32 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-04-21 11:31 Steve Dickson [this message]
2004-04-21 11:31 ` [NFS] [PATCH] Make V4 mounts return the correct errno to mount command Steve Dickson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40865BA8.4030308@RedHat.com \
--to=steved@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=nfs@lists.sourceforge.net \
--cc=trond.myklebust@fys.uio.no \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.