nbd: switch to using blk_queue_write_cache()
[linux-2.6-block.git] / block / blk-settings.c
index 331e4eee0dda0c29cc673b63c7e7341ae45e5859..c903bee43cf85221a5a007d6c3b60b8b0aa81b23 100644 (file)
@@ -846,6 +846,32 @@ void blk_queue_flush_queueable(struct request_queue *q, bool queueable)
 }
 EXPORT_SYMBOL_GPL(blk_queue_flush_queueable);
 
+/**
+ * blk_queue_write_cache - configure queue's write cache
+ * @q:         the request queue for the device
+ * @wc:                write back cache on or off
+ * @fua:       device supports FUA writes, if true
+ *
+ * Tell the block layer about the write cache of @q.
+ */
+void blk_queue_write_cache(struct request_queue *q, bool wc, bool fua)
+{
+       spin_lock_irq(q->queue_lock);
+       if (wc) {
+               queue_flag_set(QUEUE_FLAG_WC, q);
+               q->flush_flags = REQ_FLUSH;
+       } else
+               queue_flag_clear(QUEUE_FLAG_WC, q);
+       if (fua) {
+               if (wc)
+                       q->flush_flags |= REQ_FUA;
+               queue_flag_set(QUEUE_FLAG_FUA, q);
+       } else
+               queue_flag_clear(QUEUE_FLAG_FUA, q);
+       spin_unlock_irq(q->queue_lock);
+}
+EXPORT_SYMBOL_GPL(blk_queue_write_cache);
+
 static int __init blk_settings_init(void)
 {
        blk_max_low_pfn = max_low_pfn - 1;