for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++)
qsd_qtype_fini(env, qsd, qtype);
- /* deregister connection to the quota master */
- qsd->qsd_exp_valid = false;
- lustre_deregister_lwp_item(&qsd->qsd_exp);
+ if (qsd->qsd_exp) {
+ /* deregister connection to the quota master */
+ qsd->qsd_exp_valid = false;
+ lustre_deregister_lwp_item(&qsd->qsd_exp);
+ }
/* release per-filesystem information */
if (qsd->qsd_fsinfo != NULL) {
qsd->qsd_prepared = true;
write_unlock(&qsd->qsd_lock);
+ if (qsd->qsd_dev->dd_rdonly)
+ RETURN(0);
+
/* start reintegration thread for each type, if required */
for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++) {
struct qsd_qtype_info *qqi = qsd->qsd_type_array[qtype];