]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/linux/blkdev.h
block: fix memory hotplug and bouncing in block layer
[linux-2.6-omap-h63xx.git] / include / linux / blkdev.h
index 6fe67d1939c27919c0f53396da0718d58ef71b42..c5065e3d2ca9eea3e1a4319d117cdf4d5abbd539 100644 (file)
@@ -112,6 +112,7 @@ enum rq_flag_bits {
        __REQ_RW_SYNC,          /* request is sync (O_DIRECT) */
        __REQ_ALLOCED,          /* request came from our alloc pool */
        __REQ_RW_META,          /* metadata io request */
+       __REQ_COPY_USER,        /* contains copies of user pages */
        __REQ_NR_BITS,          /* stops here */
 };
 
@@ -133,6 +134,7 @@ enum rq_flag_bits {
 #define REQ_RW_SYNC    (1 << __REQ_RW_SYNC)
 #define REQ_ALLOCED    (1 << __REQ_ALLOCED)
 #define REQ_RW_META    (1 << __REQ_RW_META)
+#define REQ_COPY_USER  (1 << __REQ_COPY_USER)
 
 #define BLK_MAX_CDB    16
 
@@ -216,8 +218,8 @@ struct request {
        unsigned int cmd_len;
        unsigned char cmd[BLK_MAX_CDB];
 
-       unsigned int raw_data_len;
        unsigned int data_len;
+       unsigned int extra_len; /* length of alignment and padding */
        unsigned int sense_len;
        void *data;
        void *sense;
@@ -362,6 +364,7 @@ struct request_queue
        unsigned long           seg_boundary_mask;
        void                    *dma_drain_buffer;
        unsigned int            dma_drain_size;
+       unsigned int            dma_pad_mask;
        unsigned int            dma_alignment;
 
        struct blk_queue_tag    *queue_tags;
@@ -532,8 +535,13 @@ extern unsigned long blk_max_low_pfn, blk_max_pfn;
  * BLK_BOUNCE_ANY      : don't bounce anything
  * BLK_BOUNCE_ISA      : bounce pages above ISA DMA boundary
  */
+
+#if BITS_PER_LONG == 32
 #define BLK_BOUNCE_HIGH                ((u64)blk_max_low_pfn << PAGE_SHIFT)
-#define BLK_BOUNCE_ANY         ((u64)blk_max_pfn << PAGE_SHIFT)
+#else
+#define BLK_BOUNCE_HIGH                -1ULL
+#endif
+#define BLK_BOUNCE_ANY         (-1ULL)
 #define BLK_BOUNCE_ISA         (ISA_DMA_THRESHOLD)
 
 /*
@@ -701,6 +709,7 @@ extern void blk_queue_max_hw_segments(struct request_queue *, unsigned short);
 extern void blk_queue_max_segment_size(struct request_queue *, unsigned int);
 extern void blk_queue_hardsect_size(struct request_queue *, unsigned short);
 extern void blk_queue_stack_limits(struct request_queue *t, struct request_queue *b);
+extern void blk_queue_dma_pad(struct request_queue *, unsigned int);
 extern int blk_queue_dma_drain(struct request_queue *q,
                               dma_drain_needed_fn *dma_drain_needed,
                               void *buf, unsigned int size);