diff options
-rw-r--r-- | cli/src/cli-cmd-volume.c | 6 | ||||
-rw-r--r-- | libglusterfs/src/common-utils.h | 11 | ||||
-rwxr-xr-x | tests/bugs/bug-1104692.t | 31 | ||||
-rw-r--r-- | xlators/protocol/server/src/server-helpers.c | 3 |
4 files changed, 44 insertions, 7 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 97984721cbd..b1b6c8275bc 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -29,6 +29,7 @@ #include "cli1-xdr.h" #include "run.h" #include "syscall.h" +#include "common-utils.h" extern struct rpc_clnt *global_rpc; extern struct rpc_clnt *global_quotad_rpc; @@ -1038,6 +1039,7 @@ gf_cli_create_auxiliary_mount (char *volname) char mountdir[PATH_MAX] = {0,}; char pidfile_path[PATH_MAX] = {0,}; char logfile[PATH_MAX] = {0,}; + char qpid [16] = {0,}; GLUSTERFS_GET_AUX_MOUNT_PIDFILE (pidfile_path, volname); @@ -1059,14 +1061,16 @@ gf_cli_create_auxiliary_mount (char *volname) snprintf (logfile, PATH_MAX-1, "%s/quota-mount-%s.log", DEFAULT_LOG_FILE_DIRECTORY, volname); + snprintf(qpid, 15, "%d", GF_CLIENT_PID_QUOTA_MOUNT); ret = runcmd (SBIN_DIR"/glusterfs", "-s", "localhost", "--volfile-id", volname, "-l", logfile, "-p", pidfile_path, + "--client-pid", qpid, mountdir, - "--client-pid", "-42", NULL); + NULL); if (ret) { gf_log ("cli", GF_LOG_WARNING, "failed to mount glusterfs " diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index 2c092745a0a..61da39767a2 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -106,11 +106,12 @@ enum _gf_boolean */ enum _gf_client_pid { - GF_CLIENT_PID_MAX = 0, - GF_CLIENT_PID_GSYNCD = -1, - GF_CLIENT_PID_HADOOP = -2, - GF_CLIENT_PID_DEFRAG = -3, - GF_CLIENT_PID_NO_ROOT_SQUASH = -4, + GF_CLIENT_PID_MAX = 0, + GF_CLIENT_PID_GSYNCD = -1, + GF_CLIENT_PID_HADOOP = -2, + GF_CLIENT_PID_DEFRAG = -3, + GF_CLIENT_PID_NO_ROOT_SQUASH = -4, + GF_CLIENT_PID_QUOTA_MOUNT = -5, }; typedef enum _gf_boolean gf_boolean_t; diff --git a/tests/bugs/bug-1104692.t b/tests/bugs/bug-1104692.t new file mode 100755 index 00000000000..11dcc546410 --- /dev/null +++ b/tests/bugs/bug-1104692.t @@ -0,0 +1,31 @@ +#!/bin/bash +. $(dirname $0)/../include.rc + +cleanup; + +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 $H0:$B0/${V0}3 +TEST $CLI volume start $V0 + +TEST glusterfs -s $H0 --volfile-id $V0 $M0; +TEST mkdir -p $M0/limit_one/limit_two/limit_three $M0/limit_four \ + $M0/limit_one/limit_five + +TEST $CLI volume set $V0 server.root-squash on +TEST $CLI volume quota $V0 enable + +TEST $CLI volume quota $V0 limit-usage / 1GB +TEST $CLI volume quota $V0 limit-usage /limit_one 1GB +TEST $CLI volume quota $V0 limit-usage /limit_one/limit_two 1GB +TEST $CLI volume quota $V0 limit-usage /limit_one/limit_two/limit_three 1GB +TEST $CLI volume quota $V0 limit-usage /limit_four 1GB +TEST $CLI volume quota $V0 limit-usage /limit_one/limit_five 1GB + +#Cleanup +TEST umount $M0 +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0 + +cleanup; diff --git a/xlators/protocol/server/src/server-helpers.c b/xlators/protocol/server/src/server-helpers.c index 9dcb55ce3aa..ebeaf90c4a7 100644 --- a/xlators/protocol/server/src/server-helpers.c +++ b/xlators/protocol/server/src/server-helpers.c @@ -467,7 +467,8 @@ get_frame_from_request (rpcsvc_request_t *req) if (client->auth.username && req->pid != GF_CLIENT_PID_NO_ROOT_SQUASH && req->pid != GF_CLIENT_PID_GSYNCD && - req->pid != GF_CLIENT_PID_DEFRAG) + req->pid != GF_CLIENT_PID_DEFRAG && + req->pid != GF_CLIENT_PID_QUOTA_MOUNT) RPC_AUTH_ROOT_SQUASH (req); /* For nfs clients the server processes will be running |