summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cli/src/cli-cmd-volume.c6
-rw-r--r--libglusterfs/src/common-utils.h11
-rwxr-xr-xtests/bugs/bug-1104692.t31
-rw-r--r--xlators/protocol/server/src/server-helpers.c3
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