[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gluster-devel] Please help me with my quota xlator :-)
From: |
Angel |
Subject: |
[Gluster-devel] Please help me with my quota xlator :-) |
Date: |
Fri, 18 Jan 2008 01:33:55 +0100 |
User-agent: |
KMail/1.9.6 (enterprise 20070904.708012) |
Hi
Im experiencing problems try to implement simple functions for my pet xlator
QUOTA
stats mops from posix module seems nonsense, also rr sched seem to ignore them.
My setup is:
volume posix-brick0
type storage/posix # POSIX FS translator
option directory /home/export # Export this directory
end-volume
volume posix-brick1
type storage/posix # POSIX FS translator
option directory /home/export2 # Export this directory
end-volume
volume posix-brick2
type storage/posix # POSIX FS translator
option directory /home/export3 # Export this directory
end-volume
volume quota-volume
type features/quota
subvolumes posix-brick0
option max-size 5MB
end-volume
volume unify-volume
type cluster/unify
option namespace posix-brick2
option scheduler rr
option rr.limits.min-free-disk 5
option rr.refresh-interval 2
subvolumes quota-volume posix-brick1
end-volume
############################
Quota tries to fool unify about size of posix-brick0.
I got trace_stats_cbk from trace to adquire return values from stats mops.
i hope things going like this (ASYNC calls):
unifiy scheduler rr --> rr_*_stats( ) mops --> quota_stats( ) mops --->
posix_stats mops
posix_stats --> quota_stats_cbk mops --> rr_stats_cbk mops
So i hacked quota_stats_cbk as this:
INFO: quota allocate on init a quota_private struct *private and store prt on
this->private
static int32_t
quota_stats_cbk (call_frame_t *frame,
void *cookie,
xlator_t *this,
int32_t op_ret,
int32_t op_errno,
struct xlator_stats *stats)
{
struct quota_private *private = NULL;
private = this->private;
/* Here we control space available to upper modules */
if (private->storage_size > 0) {
if ( stats->total_disk_size > private->storage_size ) {
gf_log (this->name,
GF_LOG_WARNING,
"quota_stats_cbk (Limiting storage to %d (Was Total: %d Free:
%d,Used: %d ))\n",
private->storage_size,
stats->total_disk_size,
stats->free_disk,
stats->disk_usage);
stats->total_disk_size = private->storage_size;
}
}
STACK_UNWIND (frame, op_ret, op_errno, stats);
return 0;
}
This code doesnt work!!
Test:
$cd /home/sinosuke/mnt
$for a in $(seq 1 4); do echo "Bloque $a"; dd if=/dev/urandom of=test$a.txt
bs=10 count=1; sleep 1; done
Code prints:
2008-01-18 01:24:05 W [quota.c:2204:quota_stats_cbk] quota-volume:
quota_stats_cbk (Limiting storage to 5242880 ( Was Total: 0 Free:
1586819072,Used: 12 ))
2008-01-18 01:24:09 W [quota.c:2204:quota_stats_cbk] quota-volume:
quota_stats_cbk (Limiting storage to 5242880 ( Was Total: 0 Free:
1586819072,Used: 12 ))
Why stats from posix-brick0 always show the same nonsense values??
Does really rr scheduler use them for disk space control??
Im confused
Regards
--
------------------------------------------------
Clist UAH
------------------------------------------------
- [Gluster-devel] Please help me with my quota xlator :-),
Angel <=