Revision bfc835b5716fd86b568d4f9b15be04c4f361082b authored by Linus Torvalds on 26 January 2015, 01:25:01 UTC, committed by Linus Torvalds on 26 January 2015, 01:25:01 UTC
Pull device mapper fixes from Mike Snitzer:
 "Two stable fixes for dm-cache and one 3.19 DM core fix:

   - fix potential for dm-cache metadata corruption via stale metadata
     buffers being used when switching an inactive cache table to
     active; this could occur due to each table having it's own bufio
     client rather than sharing the client between tables.

   - fix dm-cache target to properly account for discard IO while
     suspending otherwise IO quiescing could complete prematurely.

   - fix DM core's handling of multiple internal suspends by maintaining
     an 'internal_suspend_count' and only resuming the device when this
     count drops to zero"

* tag 'dm-3.19-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
  dm: fix handling of multiple internal suspends
  dm cache: fix problematic dual use of a single migration count variable
  dm cache: share cache-metadata object across inactive and active DM tables
2 parent s 8e908e9 + 96b26c8
Raw File
a3000.h
#ifndef A3000_H
#define A3000_H

/* $Id: a3000.h,v 1.4 1997/01/19 23:07:10 davem Exp $
 *
 * Header file for the Amiga 3000 built-in SCSI controller for Linux
 *
 * Written and (C) 1993, Hamish Macdonald, see a3000.c for more info
 *
 */

#include <linux/types.h>

#ifndef CMD_PER_LUN
#define CMD_PER_LUN		2
#endif

#ifndef CAN_QUEUE
#define CAN_QUEUE		16
#endif

/*
 * if the transfer address ANDed with this results in a non-zero
 * result, then we can't use DMA.
 */
#define A3000_XFER_MASK		(0x00000003)

struct a3000_scsiregs {
		 unsigned char	pad1[2];
	volatile unsigned short	DAWR;
	volatile unsigned int	WTC;
		 unsigned char	pad2[2];
	volatile unsigned short	CNTR;
	volatile unsigned long	ACR;
		 unsigned char	pad3[2];
	volatile unsigned short	ST_DMA;
		 unsigned char	pad4[2];
	volatile unsigned short	FLUSH;
		 unsigned char	pad5[2];
	volatile unsigned short	CINT;
		 unsigned char	pad6[2];
	volatile unsigned short	ISTR;
		 unsigned char	pad7[30];
	volatile unsigned short	SP_DMA;
		 unsigned char	pad8;
	volatile unsigned char	SASR;
		 unsigned char	pad9;
	volatile unsigned char	SCMD;
};

#define DAWR_A3000		(3)

/* CNTR bits. */
#define CNTR_TCEN		(1<<5)
#define CNTR_PREST		(1<<4)
#define CNTR_PDMD		(1<<3)
#define CNTR_INTEN		(1<<2)
#define CNTR_DDIR		(1<<1)
#define CNTR_IO_DX		(1<<0)

/* ISTR bits. */
#define ISTR_INTX		(1<<8)
#define ISTR_INT_F		(1<<7)
#define ISTR_INTS		(1<<6)
#define ISTR_E_INT		(1<<5)
#define ISTR_INT_P		(1<<4)
#define ISTR_UE_INT		(1<<3)
#define ISTR_OE_INT		(1<<2)
#define ISTR_FF_FLG		(1<<1)
#define ISTR_FE_FLG		(1<<0)

#endif /* A3000_H */
back to top