# include <linux/init.h>
# include <linux/fs.h>
# include <linux/jbd.h>
-# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
-# include <linux/smp_lock.h>
-# include <linux/buffer_head.h>
-# include <linux/workqueue.h>
-# include <linux/mount.h>
-# else
-# include <linux/locks.h>
-# endif
+# include <linux/smp_lock.h>
+# include <linux/buffer_head.h>
+# include <linux/workqueue.h>
+# include <linux/mount.h>
#else /* __KERNEL__ */
# include <liblustre.h>
#endif
spin_lock(&qctxt->lqc_lock);
qctxt->lqc_import = NULL;
spin_unlock(&qctxt->lqc_lock);
+ dqacq_interrupt(qctxt);
CDEBUG(D_QUOTA, "%s: lqc_import of obd(%p) is invalid now.\n",
obd->obd_name, obd);
}
/* in order to complete this write, we need extra
* meta blocks. This function can get it through
* data needed to be written b=16542 */
- mb = *pending;
- LASSERT(inode && frags > 0);
- if (fsfilt_get_mblk(obd, qctxt->lqc_sb, &mb,
- inode, frags) < 0)
- CDEBUG(D_ERROR,
- "can't get extra meta blocks.\n");
- else
- *pending += mb;
+ if (inode) {
+ mb = *pending;
+ rc = fsfilt_get_mblk(obd, qctxt->lqc_sb,
+ &mb, inode,frags);
+ if (rc)
+ CDEBUG(D_ERROR,
+ "can't get extra "
+ "meta blocks.\n");
+ else
+ *pending += mb;
+ }
lqs->lqs_bwrite_pending += *pending;
} else {
*pending = count;
/* please reference to dqacq_completion for the below */
/* a new request is finished, try again */
- if (rc == -EAGAIN) {
+ if (rc == QUOTA_REQ_RETURNED) {
CDEBUG(D_QUOTA, "finish a quota req, try again\n");
continue;
}