/* Consume write credits even if doing a sync write -
* otherwise we may run out of space on OST due to grant. */
- spin_lock(&cli->cl_loi_list_lock);
- for (i = 0; i < page_count; i++) {
- if (cli->cl_avail_grant >= CFS_PAGE_SIZE &&
- cmd == OBD_BRW_WRITE)
- osc_consume_write_grant(cli, pga[i]);
+ if (cmd == OBD_BRW_WRITE) {
+ spin_lock(&cli->cl_loi_list_lock);
+ for (i = 0; i < page_count; i++) {
+ if (cli->cl_avail_grant >= CFS_PAGE_SIZE)
+ osc_consume_write_grant(cli, pga[i]);
+ }
+ spin_unlock(&cli->cl_loi_list_lock);
}
- spin_unlock(&cli->cl_loi_list_lock);
rc = osc_brw_prep_request(cmd, &exp->exp_obd->u.cli, oa, lsm,
page_count, pga, &request);
if (rc == 0) {
request->rq_interpret_reply = brw_interpret;
ptlrpc_set_add_req(set, request);
- } else {
+ } else if (cmd == OBD_BRW_WRITE) {
spin_lock(&cli->cl_loi_list_lock);
for (i = 0; i < page_count; i++)
osc_release_write_grant(cli, pga[i], 0);