Problems with NFS exports
I'm seeing weired errors with nfsctl():
This works:
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "/mnt/storage/2/backup/deneb/tmp", makedev(3, 66), ino 167772288, uid 65534, gid 65534) = 0
But a subsequent call fails:
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "/mnt/storage/2/backup/deneb", makedev(3, 66), ino 150995072, uid 65534, gid 65534) = -1 EINVAL (Invalid argument)
I don't understand what makes the difference (the inode values are correct). This is kernel 2.4.18 with XFS support, and the directory resides on an XFS file system.
Any ideas?
Quoted 8 lines · Florian Weimer
I'm seeing weired errors with
nfsctl():This works:
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "
/mnt/storage/2/backup/deneb/tmp",makedev(3, 66), ino 167772288, uid 65534, gid 65534) = 0But a subsequent call fails:
Quoted 7 lines
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "
/mnt/storage/2/backup/deneb",makedev(3, 66), ino 150995072, uid 65534, gid 65534) = -1 EINVAL (Invalid argument)I don't understand what makes the difference (the inode values are correct). This is kernel 2.4.18 with XFS support, and the directory resides on an XFS file system.
Any ideas?
(Full quote because of additional recipeint.)
It appears that a directory tree can only be exported once. Is this intentional? If yes, the following patch should be applied (to linux/fs/nfsd/export.c), so that the return value is more meaningful:
export.c +1 -0
@@ -219,6 +219,7 @@ goto finish; } + err = -EBUSY ;if ((parent =exp_child (clp, dev, nd.dentry)) !=NULL ) {dprintk ("exp_export: export not valid (Rule 3).\n" ); goto finish;
After this change, the userspace tools can issue are more meaningful error message for this case.
Quoted 16 lines · On Wednesday August 7, [email protected] wrote:
Quoted 14 lines · Florian Weimer
I'm seeing weired errors with
nfsctl():This works:
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "
/mnt/storage/2/backup/deneb/tmp",makedev(3, 66), ino 167772288, uid 65534, gid 65534) = 0But a subsequent call fails:
nfsservctl(NFSCTL_EXPORT, "deneb.enyo.de", "
/mnt/storage/2/backup/deneb",makedev(3, 66), ino 150995072, uid 65534, gid 65534) = -1 EINVAL (Invalid argument)I don't understand what makes the difference (the inode values are correct). This is kernel 2.4.18 with XFS support, and the directory resides on an XFS file system.
Quoted 7 lines
Quoted 1 line
Any ideas?
(Full quote because of additional recipeint.)
It appears that a directory tree can only be exported once. Is this intentional? If yes, the following patch should be applied (to
linux/fs/nfsd/export.c), so that the return value is more meaningful:
Probably better documentation in exports.5 would be just as useful. And "BUSY" probably isn't correct ....
The rule is that you cannot export a directory and an ancestor of that directory in the same filesystem.
/a/1 and /a/2 can both be exported, but not /a and /a/1.
Reason: exporting "/a" means exporting that directoring and all descendants of it in the same filesystem.
If you export /a with different flags than /a/1 it is ambiguous.
And personally, I doubt that there are very many situations where it makes sense.
It would be possible to dis-ambiguate the ambiguity but it wouldn't be very clean, and I really am not sure that it is worth the effort.
NeilBrown
Quoted 20 lines
export.c +1
-0@@ -219,6 +219,7 @@ goto finish; } + err = -EBUSY ;if ((parent =exp_child (clp, dev, nd.dentry)) !=NULL ) {dprintk ("exp_export: export not valid (Rule 3).\n" ); goto finish;After this change, the userspace tools can issue are more meaningful error message for this case.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Quoted 1 line · Neil Brown
Probably better documentation in exports.5 would be just as useful.
Maybe.
BTW, is it possible to export a directory tree under a different path, using the kernel NFS daemon?
Quoted 1 line
And "BUSY" probably isn't correct ....
Why not? The ressource (the directory tree) is already being used, and therefore the export fails.
Quoted 2 lines
It would be possible to dis-ambiguate the ambiguity but it wouldn't be very clean, and I really am not sure that it is worth the effort.
Better error messages are always a good idea. :-)
Quoted 8 lines · On Wednesday August 7, [email protected] wrote:
Quoted 1 line · Neil Brown
Probably better documentation in exports.5 would be just as useful.
Maybe.
BTW, is it possible to export a directory tree under a different path, using the kernel NFS daemon?
Uhm... symlinks work.
Which is to say, the client can mount using a 'different path', though they can also mount using the 'true' path.
Quoted 5 lines
Quoted 2 lines
And "BUSY" probably isn't correct ....
Why not? The ressource (the directory tree) is already being used, and therefore the export fails.
I guess... I just feel it isn't really clear what it is that is 'busy'.
NeilBrown
Quoted 5 lines
Quoted 3 lines
It would be possible to dis-ambiguate the ambiguity but it wouldn't be very clean, and I really am not sure that it is worth the effort.
Better error messages are always a good idea. :-)
Can't disagree there.
NeilBrown
Quoted 7 lines · Neil Brown
Quoted 4 lines
Quoted 1 line
And "BUSY" probably isn't correct ....
Why not? The ressource (the directory tree) is already being used, and therefore the export fails.
I guess... I just feel it isn't really clear what it is that is 'busy'.
And it implies that it is just a temporary error condition, not a configuration issue.
Maybe EEXIST is better?