diff options
author | Shehjar Tikoo <shehjart@gluster.com> | 2010-06-15 00:39:25 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2010-07-04 22:52:51 -0700 |
commit | a8ef67630c48dfec336cc2088ac78cb29074022c (patch) | |
tree | 001788392afcd6b1a0287c8ac2bb57f34fb2a994 /xlators/nfs/server/src/nfs.c | |
parent | 2f15ffd6b5beef9abd501c594bc3cb38c2683f77 (diff) |
nfs: Support directory level exports
nfsx has followed traditional approach of exporting whole volumes
as NFS exports. The Platform requires and some users have approached us for
introducing exports of only specific directories instead of full Gluster
volumes. This commit introduces this support through two nfsx options:
Option 1:
=========
option nfs3.<volume-name>.export-dir <subdir1-in-vol>,<subdir2-in-vol>,..<subdirN-in-vol>
export-dir will allow the export of a particular dir as a single export
by itself. For eg.:
volume posix
type storage/posix
option directory /export/
end-volume
volume posix-ac
type features/access-control
subvolumes posix
end-volume
volume nfs
type nfs/server
subvolumes posix-ac
option rpc-auth.addr.allow *
option nfs3.posix-ac.export-dir /homes/shehjart
end-volume
A comma separate list of sub-directories will set up those dirs as separated exports.
At the nfs client, the mount command will be:
$ mount <nfsserver>:/posix-ac/homes/shehjart /mnt
Option 2:
=========
option nfs3.<volume-name>.export-volumes <on|off>
There can be situations where users only want the directory level
exports and require that volume exports be completely disabled. The
above option allows us to do this. By default, volume exports are
enabled. From the earlier example, replacing <volume-name> with
posix-ac, will disable mounting of the posix-ac volume as a whole.
Signed-off-by: Shehjar Tikoo <shehjart@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 989 (Support directory exports in nfsx)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=989
Diffstat (limited to 'xlators/nfs/server/src/nfs.c')
-rw-r--r-- | xlators/nfs/server/src/nfs.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index cb5f19ef992..d7d2a5fd6e2 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -578,6 +578,11 @@ fini (xlator_t *this) struct xlator_cbks cbks = { }; struct xlator_fops fops = { }; +/* TODO: If needed, per-volume options below can be extended to be export ++ * specific also because after export-dir is introduced, a volume is not ++ * neccessarily an export whereas different subdirectories within that volume ++ * can be and may need these options to be specified separately. ++ */ struct volume_options options[] = { { .key = {"nfs3.read-size"}, .type = GF_OPTION_TYPE_SIZET, @@ -624,6 +629,23 @@ struct volume_options options[] = { " trusted-write behaviour. Off by default." }, + { .key = {"nfs3.*.export-dir"}, + .type = GF_OPTION_TYPE_STR, + .description = "By default, all subvolumes of nfs are exported as " + "individual exports. There are cases where a " + "subdirectory or subdirectories in the volume need to " + "be exported separately. This option can also be used " + "in conjunction with nfs3.export-volumes option to " + "restrict exports only to the subdirectories specified" + " through this option. Must be an absolute path." + }, + { .key = {"nfs3.export-volumes"}, + .type = GF_OPTION_TYPE_BOOL, + .description = "Enable or disable exporting whole volumes, instead " + "if used in conjunction with nfs3.export-dir, can " + "allow setting up only subdirectories as exports. On " + "by default." + }, { .key = {"rpc-auth.auth-unix"}, .type = GF_OPTION_TYPE_BOOL, .description = "Disable or enable the AUTH_UNIX authentication type." |