Angel, gf_log() does not do format string check for bitsize against the arguments. First use printf to verify the format string and then replace it with gf_log if the compie happens without warnings. avati 2008/1/18, Angel <clist@xxxxxx>: > > 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 mailing list > Gluster-devel@xxxxxxxxxx > http://lists.nongnu.org/mailman/listinfo/gluster-devel > -- If I traveled to the end of the rainbow As Dame Fortune did intend, Murphy would be there to tell me The pot's at the other end.