cli->cl_dirty = 0;
cli->cl_avail_grant = 0;
+
/* FIXME: should limit this for the sum of all cl_dirty_max */
cli->cl_dirty_max = OSC_MAX_DIRTY_DEFAULT * 1024 * 1024;
if (cli->cl_dirty_max >> PAGE_SHIFT > num_physpages / 8)
cli->cl_dirty_av = 0;
cli->cl_dirty_dmax = 0;
cli->cl_dirty_dmin = 0;
+ cli->cl_sync_rpcs = 0;
if (num_physpages >> (20 - PAGE_SHIFT) <= 128) { /* <= 128 MB */
cli->cl_max_pages_per_rpc = PTLRPC_MAX_BRW_PAGES / 4;
if (!cli->cl_import)
RETURN(-EINVAL);
+
if (cli->cl_mgmtcli_obd) {
mgmtcli_deregister_for_events_t dereg_f;
if (cli->cl_write_gaps) {
CWARN("%s: [writes num: %lu, reads num: %lu]: %lu write gaps: %lu "
- "av. (usec), %lu total (usec)\n", obddev->obd_name,
- cli->cl_write_num, cli->cl_read_num, cli->cl_write_gaps,
- cli->cl_write_gap_sum / cli->cl_write_gaps,
- cli->cl_write_gap_sum);
+ "av. (usec), %lu total (usec), %lu rpcs falled back to sync\n",
+ obddev->obd_name, cli->cl_write_num, cli->cl_read_num,
+ cli->cl_write_gaps, cli->cl_write_gap_sum / cli->cl_write_gaps,
+ cli->cl_write_gap_sum, cli->cl_sync_rpcs);
}
if (cli->cl_cache_wait_num) {
}
if (cli->cl_dirty_av) {
- CWARN("%s: pipe loading av. %lu (b), max pipe space %lu (b), pipe "
- "loading ratio %lu%%\n", obddev->obd_name, cli->cl_dirty_av,
- cli->cl_dirty_max, (cli->cl_dirty_av * 100) / cli->cl_dirty_max);
- }
-
- if (cli->cl_dirty_dmax) {
- CWARN("%s: pipe dirty max %lu (b), pipe dirty min %lu (b)\n",
- obddev->obd_name, cli->cl_dirty_dmax, cli->cl_dirty_dmin);
+ CWARN("%s: pipe loading av. %lu (b), max pipe room %lu (b), pipe "
+ "loading av. ratio %lu%%, pipe dirty max %lu (b), pipe dirty "
+ "min %lu (b), pipe loading max ratio %lu%%\n", obddev->obd_name,
+ cli->cl_dirty_av, cli->cl_dirty_max,
+ (cli->cl_dirty_av * 100) / cli->cl_dirty_max,
+ cli->cl_dirty_dmax, cli->cl_dirty_dmin,
+ (cli->cl_dirty_dmax * 100) / cli->cl_dirty_max);
}
/* Here we try to drop the security structure after destroy import,
struct osc_cache_waiter ocw;
struct l_wait_info lwi = { 0 };
struct timeval start, stop;
+ ENTRY;
CDEBUG(D_CACHE, "dirty: %ld dirty_max: %ld dropped: %lu grant: %lu\n",
cli->cl_dirty, cli->cl_dirty_max, cli->cl_lost_grant,
cli->cl_avail_grant);
if (cli->cl_dirty_max < PAGE_SIZE)
- return(-EDQUOT);
+ GOTO(out, -EDQUOT);
if (~0ul - cli->cl_dirty_sum <= cli->cl_dirty) {
cli->cl_dirty_av = (cli->cl_dirty_av +
cli->cl_avail_grant >= PAGE_SIZE) {
/* account for ourselves */
osc_consume_write_grant(cli, oap);
- return(0);
+ RETURN(0);
}
/* Make sure that there are write rpcs in flight to wait for. This
RETURN(ocw.ocw_rc);
}
- RETURN(-EDQUOT);
+ EXIT;
+out:
+ cli->cl_sync_rpcs++;
+ return -EDQUOT;
}
/* the companion to enter_cache, called when an oap is no longer part of the