summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2002-06-02 04:24:30 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-06-02 04:24:30 -0700
commitb2ea3f319615bd297c22017fef7d5f12bce11a15 (patch)
treec2e46c645e079f240bbf087e7c9b686e1058e4fd /include
parent4da4483e5655259b2f3184a2833a6330276ab14a (diff)
parent6d693005e1d16e2205daae79539d4103ac35e590 (diff)
Merge http://linux-isdn.bkbits.net/linux-2.5.make
into home.transmeta.com:/home/torvalds/v2.5/linux
Diffstat (limited to 'include')
-rw-r--r--include/asm-alpha/pgtable.h13
-rw-r--r--include/asm-arm/pgtable.h10
-rw-r--r--include/asm-cris/pgtable.h14
-rw-r--r--include/asm-i386/pgtable.h12
-rw-r--r--include/asm-ia64/pgtable.h13
-rw-r--r--include/asm-m68k/pgtable.h22
-rw-r--r--include/asm-mips/pgtable.h13
-rw-r--r--include/asm-mips64/pgtable.h14
-rw-r--r--include/asm-parisc/pgtable.h13
-rw-r--r--include/asm-ppc/pgtable.h10
-rw-r--r--include/asm-ppc64/pgtable.h10
-rw-r--r--include/asm-s390/pgtable.h12
-rw-r--r--include/asm-s390x/pgtable.h12
-rw-r--r--include/asm-sh/pgtable.h12
-rw-r--r--include/asm-sparc/pgtable.h10
-rw-r--r--include/asm-sparc64/pgtable.h10
-rw-r--r--include/asm-x86_64/pgtable.h12
-rw-r--r--include/linux/blk.h40
-rw-r--r--include/linux/blkdev.h2
-rw-r--r--include/linux/buffer_head.h3
-rw-r--r--include/linux/ext3_fs.h1
-rw-r--r--include/linux/ext3_jbd.h5
-rw-r--r--include/linux/fs.h4
-rw-r--r--include/linux/hdreg.h13
-rw-r--r--include/linux/ide.h148
-rw-r--r--include/linux/jbd.h3
-rw-r--r--include/linux/list.h2
-rw-r--r--include/linux/nfs_fs.h3
-rw-r--r--include/linux/raid/md_k.h4
-rw-r--r--include/linux/swap.h11
-rw-r--r--include/linux/swapops.h68
-rw-r--r--include/linux/types.h8
-rw-r--r--include/linux/writeback.h1
33 files changed, 249 insertions, 279 deletions
diff --git a/include/asm-alpha/pgtable.h b/include/asm-alpha/pgtable.h
index 073f2c8b5cd0..a972181fd540 100644
--- a/include/asm-alpha/pgtable.h
+++ b/include/asm-alpha/pgtable.h
@@ -340,14 +340,11 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
{ pte_t pte; pte_val(pte) = (type << 32) | (offset << 40); return pte; }
-#define SWP_TYPE(x) (((x).val >> 32) & 0xff)
-#define SWP_OFFSET(x) ((x).val >> 40)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
+#define __swp_type(x) (((x).val >> 32) & 0xff)
+#define __swp_offset(x) ((x).val >> 40)
+#define __swp_entry(type, offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#ifndef CONFIG_DISCONTIGMEM
#define kern_addr_valid(addr) (1)
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h
index dbbb85bd3995..62456af5582a 100644
--- a/include/asm-arm/pgtable.h
+++ b/include/asm-arm/pgtable.h
@@ -142,11 +142,11 @@ extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
*
* We support up to 32GB of swap on 4k machines
*/
-#define SWP_TYPE(x) (((x).val >> 2) & 0x7f)
-#define SWP_OFFSET(x) ((x).val >> 9)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 9) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(swp) ((pte_t) { (swp).val })
+#define __swp_type(x) (((x).val >> 2) & 0x7f)
+#define __swp_offset(x) ((x).val >> 9)
+#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 9) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(swp) ((pte_t) { (swp).val })
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
/* FIXME: this is not correct */
diff --git a/include/asm-cris/pgtable.h b/include/asm-cris/pgtable.h
index 51eb17d87f9d..57e391330752 100644
--- a/include/asm-cris/pgtable.h
+++ b/include/asm-cris/pgtable.h
@@ -500,14 +500,12 @@ static inline void update_mmu_cache(struct vm_area_struct * vma,
/* Encode and de-code a swap entry (must be !pte_none(e) && !pte_present(e)) */
/* Since the PAGE_PRESENT bit is bit 4, we can use the bits above */
-#define SWP_TYPE(x) (((x).val >> 5) & 0x7f)
-#define SWP_OFFSET(x) ((x).val >> 12)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 5) | ((offset) << 12) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
+#define __swp_type(x) (((x).val >> 5) & 0x7f)
+#define __swp_offset(x) ((x).val >> 12)
+#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 5) | ((offset) << 12) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+
#define kern_addr_valid(addr) (1)
#include <asm-generic/pgtable.h>
diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h
index 8785225614da..f48db2beeeba 100644
--- a/include/asm-i386/pgtable.h
+++ b/include/asm-i386/pgtable.h
@@ -269,16 +269,14 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
#define update_mmu_cache(vma,address,pte) do { } while (0)
/* Encode and de-code a swap entry */
-#define SWP_TYPE(x) (((x).val >> 1) & 0x3f)
-#define SWP_OFFSET(x) ((x).val >> 8)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) (((x).val >> 1) & 0x3f)
+#define __swp_offset(x) ((x).val >> 8)
+#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
#define io_remap_page_range remap_page_range
diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h
index 4ff23d54e418..cc8c0a29b335 100644
--- a/include/asm-ia64/pgtable.h
+++ b/include/asm-ia64/pgtable.h
@@ -402,14 +402,11 @@ pte_same (pte_t a, pte_t b)
extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
extern void paging_init (void);
-#define SWP_TYPE(entry) (((entry).val >> 1) & 0xff)
-#define SWP_OFFSET(entry) (((entry).val << 1) >> 10)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { ((type) << 1) | ((long) (offset) << 9) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
+#define __swp_type(entry) (((entry).val >> 1) & 0xff)
+#define __swp_offset(entry) (((entry).val << 1) >> 10)
+#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 1) | ((long) (offset) << 9) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#define io_remap_page_range remap_page_range /* XXX is this right? */
diff --git a/include/asm-m68k/pgtable.h b/include/asm-m68k/pgtable.h
index 0d20bd4ed997..597f08991de3 100644
--- a/include/asm-m68k/pgtable.h
+++ b/include/asm-m68k/pgtable.h
@@ -145,27 +145,25 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
#ifdef CONFIG_SUN3
/* Macros to (de)construct the fake PTEs representing swap pages. */
-#define SWP_TYPE(x) ((x).val & 0x7F)
-#define SWP_OFFSET(x) (((x).val) >> 7)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { ((type) | ((offset) << 7)) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) ((x).val & 0x7F)
+#define __swp_offset(x) (((x).val) >> 7)
+#define __swp_entry(type,offset) ((swp_entry_t) { ((type) | ((offset) << 7)) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#else
/* Encode and de-code a swap entry (must be !pte_none(e) && !pte_present(e)) */
-#define SWP_TYPE(x) (((x).val >> 1) & 0xff)
-#define SWP_OFFSET(x) ((x).val >> 10)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 10) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) (((x).val >> 1) & 0xff)
+#define __swp_offset(x) ((x).val >> 10)
+#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 10) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#endif /* CONFIG_SUN3 */
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
#define io_remap_page_range remap_page_range
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index b70d53edab46..bec6e22366e5 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -493,15 +493,12 @@ extern void paging_init(void);
extern void update_mmu_cache(struct vm_area_struct *vma,
unsigned long address, pte_t pte);
-#define SWP_TYPE(x) (((x).val >> 1) & 0x3f)
-#define SWP_OFFSET(x) ((x).val >> 8)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) (((x).val >> 1) & 0x3f)
+#define __swp_offset(x) ((x).val >> 8)
+#define __swp_entry(type,offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
/* TLB operations. */
diff --git a/include/asm-mips64/pgtable.h b/include/asm-mips64/pgtable.h
index d5f16df89c8a..d3118912a2a5 100644
--- a/include/asm-mips64/pgtable.h
+++ b/include/asm-mips64/pgtable.h
@@ -553,14 +553,12 @@ extern void (*update_mmu_cache)(struct vm_area_struct *vma,
extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
{ pte_t pte; pte_val(pte) = (type << 32) | (offset << 40); return pte; }
-#define SWP_TYPE(x) (((x).val >> 32) & 0xff)
-#define SWP_OFFSET(x) ((x).val >> 40)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
-
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
+#define __swp_type(x) (((x).val >> 32) & 0xff)
+#define __swp_offset(x) ((x).val >> 40)
+#define __swp_entry(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
+
#ifndef CONFIG_DISCONTIGMEM
#define kern_addr_valid(addr) (1)
#endif
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h
index df853449c900..c1d676cf92ea 100644
--- a/include/asm-parisc/pgtable.h
+++ b/include/asm-parisc/pgtable.h
@@ -312,14 +312,14 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
/* Encode and de-code a swap entry */
-#define SWP_TYPE(x) ((x).val & 0x3f)
-#define SWP_OFFSET(x) ( (((x).val >> 6) & 0x7) | \
+#define __swp_type(x) ((x).val & 0x3f)
+#define __swp_offset(x) ( (((x).val >> 6) & 0x7) | \
(((x).val >> 7) & ~0x7) )
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { (type) | \
+#define __swp_entry(type, offset) ((swp_entry_t) { (type) | \
((offset & 0x7) << 6) | \
((offset & ~0x7) << 7) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#define module_map vmalloc
#define module_unmap vfree
@@ -328,9 +328,6 @@ extern inline void update_mmu_cache(struct vm_area_struct * vma,
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
-
#define io_remap_page_range remap_page_range
/*
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h
index a0514543259c..c5bfc1332e5f 100644
--- a/include/asm-ppc/pgtable.h
+++ b/include/asm-ppc/pgtable.h
@@ -482,11 +482,11 @@ extern void add_hash_page(unsigned context, unsigned long va,
* must not include the _PAGE_PRESENT bit, or the _PAGE_HASHPTE bit
* (if used). -- paulus
*/
-#define SWP_TYPE(entry) ((entry).val & 0x3f)
-#define SWP_OFFSET(entry) ((entry).val >> 6)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { (type) | ((offset) << 6) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 2 })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val << 2 })
+#define __swp_type(entry) ((entry).val & 0x3f)
+#define __swp_offset(entry) ((entry).val >> 6)
+#define __swp_entry(type, offset) ((swp_entry_t) { (type) | ((offset) << 6) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> 2 })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val << 2 })
/* CONFIG_APUS */
/* For virtual address to physical address conversion */
diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h
index 48d9f43a3e49..e546e3f0f88c 100644
--- a/include/asm-ppc64/pgtable.h
+++ b/include/asm-ppc64/pgtable.h
@@ -359,11 +359,11 @@ extern void paging_init(void);
extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t);
/* Encode and de-code a swap entry */
-#define SWP_TYPE(entry) (((entry).val >> 1) & 0x3f)
-#define SWP_OFFSET(entry) ((entry).val >> 8)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> PTE_SHIFT })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val << PTE_SHIFT })
+#define __swp_type(entry) (((entry).val >> 1) & 0x3f)
+#define __swp_offset(entry) ((entry).val >> 8)
+#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) >> PTE_SHIFT })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val << PTE_SHIFT })
/*
* kern_addr_valid is intended to indicate whether an address is a valid
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h
index 026e0ee40a23..fa9993ad8e9d 100644
--- a/include/asm-s390/pgtable.h
+++ b/include/asm-s390/pgtable.h
@@ -485,17 +485,15 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
return pte;
}
-#define SWP_TYPE(entry) (((entry).val >> 1) & 0x3f)
-#define SWP_OFFSET(entry) (((entry).val >> 12) & 0x7FFFF )
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
+#define __swp_type(entry) (((entry).val >> 1) & 0x3f)
+#define __swp_offset(entry) (((entry).val >> 12) & 0x7FFFF )
+#define __swp_entry(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
/*
diff --git a/include/asm-s390x/pgtable.h b/include/asm-s390x/pgtable.h
index 4fee035ea2dc..a2729aa46c35 100644
--- a/include/asm-s390x/pgtable.h
+++ b/include/asm-s390x/pgtable.h
@@ -505,17 +505,15 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
return pte;
}
-#define SWP_TYPE(entry) (((entry).val >> 1) & 0x3f)
-#define SWP_OFFSET(entry) ((entry).val >> 12)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
+#define __swp_type(entry) (((entry).val >> 1) & 0x3f)
+#define __swp_offset(entry) ((entry).val >> 12)
+#define __swp_entry(type,offset) ((swp_entry_t) { pte_val(mk_swap_pte((type),(offset))) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
/*
diff --git a/include/asm-sh/pgtable.h b/include/asm-sh/pgtable.h
index a7e2b8dfecaf..74034ac9c862 100644
--- a/include/asm-sh/pgtable.h
+++ b/include/asm-sh/pgtable.h
@@ -294,11 +294,11 @@ extern void update_mmu_cache(struct vm_area_struct * vma,
* NOTE: We should set ZEROs at the position of _PAGE_PRESENT
* and _PAGE_PROTONOE bits
*/
-#define SWP_TYPE(x) ((x).val & 0xff)
-#define SWP_OFFSET(x) ((x).val >> 10)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { (type) | ((offset) << 10) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) ((x).val & 0xff)
+#define __swp_offset(x) ((x).val >> 10)
+#define __swp_entry(type, offset) ((swp_entry_t) { (type) | ((offset) << 10) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
/*
* Routines for update of PTE
@@ -312,8 +312,6 @@ extern void update_mmu_cache(struct vm_area_struct * vma,
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
#define io_remap_page_range remap_page_range
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h
index b73aaa20847e..775e8483859a 100644
--- a/include/asm-sparc/pgtable.h
+++ b/include/asm-sparc/pgtable.h
@@ -376,11 +376,11 @@ BTFIXUPDEF_CALL(void, update_mmu_cache, struct vm_area_struct *, unsigned long,
extern int invalid_segment;
/* Encode and de-code a swap entry */
-#define SWP_TYPE(x) (((x).val >> 2) & 0x7f)
-#define SWP_OFFSET(x) (((x).val >> 9) & 0x3ffff)
-#define SWP_ENTRY(type,offset) ((swp_entry_t) { (((type) & 0x7f) << 2) | (((offset) & 0x3ffff) << 9) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) (((x).val >> 2) & 0x7f)
+#define __swp_offset(x) (((x).val >> 9) & 0x3ffff)
+#define __swp_entry(type,offset) ((swp_entry_t) { (((type) & 0x7f) << 2) | (((offset) & 0x3ffff) << 9) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
struct ctx_list {
struct ctx_list *next;
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h
index 73d5951edfb9..e5c086958155 100644
--- a/include/asm-sparc64/pgtable.h
+++ b/include/asm-sparc64/pgtable.h
@@ -298,16 +298,16 @@ extern inline pte_t mk_pte_io(unsigned long page, pgprot_t prot, int space)
}
/* Encode and de-code a swap entry */
-#define SWP_TYPE(entry) (((entry).val >> PAGE_SHIFT) & 0xffUL)
-#define SWP_OFFSET(entry) ((entry).val >> (PAGE_SHIFT + 8UL))
-#define SWP_ENTRY(type, offset) \
+#define __swp_type(entry) (((entry).val >> PAGE_SHIFT) & 0xffUL)
+#define __swp_offset(entry) ((entry).val >> (PAGE_SHIFT + 8UL))
+#define __swp_entry(type, offset) \
( (swp_entry_t) \
{ \
(((long)(type) << PAGE_SHIFT) | \
((long)(offset) << (PAGE_SHIFT + 8UL))) \
} )
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
extern unsigned long prom_virt_to_phys(unsigned long, int *);
diff --git a/include/asm-x86_64/pgtable.h b/include/asm-x86_64/pgtable.h
index 6a79a3d416d1..09d3254fa9a7 100644
--- a/include/asm-x86_64/pgtable.h
+++ b/include/asm-x86_64/pgtable.h
@@ -329,16 +329,14 @@ extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
#define update_mmu_cache(vma,address,pte) do { } while (0)
/* Encode and de-code a swap entry */
-#define SWP_TYPE(x) (((x).val >> 1) & 0x3f)
-#define SWP_OFFSET(x) ((x).val >> 8)
-#define SWP_ENTRY(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
-#define pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
-#define swp_entry_to_pte(x) ((pte_t) { (x).val })
+#define __swp_type(x) (((x).val >> 1) & 0x3f)
+#define __swp_offset(x) ((x).val >> 8)
+#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
+#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
+#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
#endif /* !__ASSEMBLY__ */
-/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
-#define PageSkip(page) (0)
#define kern_addr_valid(addr) (1)
#define io_remap_page_range remap_page_range
diff --git a/include/linux/blk.h b/include/linux/blk.h
index 8126a0cc27fd..de2f1acc9071 100644
--- a/include/linux/blk.h
+++ b/include/linux/blk.h
@@ -125,7 +125,6 @@ extern inline struct request *elv_next_request(request_queue_t *q)
static void floppy_off(unsigned int nr);
#define DEVICE_NAME "floppy"
-#define DEVICE_INTR do_floppy
#define DEVICE_NR(device) ( (minor(device) & 3) | ((minor(device) & 0x80 ) >> 5 ))
#elif (MAJOR_NR == HD_MAJOR)
@@ -149,14 +148,14 @@ static void floppy_off(unsigned int nr);
#elif (MAJOR_NR == SCSI_TAPE_MAJOR)
#define DEVICE_NAME "scsitape"
-#define DEVICE_INTR do_st
+#define DEVICE_INTR do_st
#define DEVICE_NR(device) (minor(device) & 0x7f)
#elif (MAJOR_NR == OSST_MAJOR)
-#define DEVICE_NAME "onstream"
+#define DEVICE_NAME "onstream"
#define DEVICE_INTR do_osst
-#define DEVICE_NR(device) (minor(device) & 0x7f)
+#define DEVICE_NR(device) (minor(device) & 0x7f)
#elif (MAJOR_NR == SCSI_CDROM_MAJOR)
@@ -187,33 +186,16 @@ static void floppy_off(unsigned int nr);
#elif (MAJOR_NR == MITSUMI_CDROM_MAJOR)
#define DEVICE_NAME "Mitsumi CD-ROM"
-/* #define DEVICE_INTR do_mcd */
#define DEVICE_NR(device) (minor(device))
#elif (MAJOR_NR == MITSUMI_X_CDROM_MAJOR)
#define DEVICE_NAME "Mitsumi CD-ROM"
-/* #define DEVICE_INTR do_mcdx */
#define DEVICE_NR(device) (minor(device))
#elif (MAJOR_NR == MATSUSHITA_CDROM_MAJOR)
-#define DEVICE_NAME "Matsushita CD-ROM controller #1"
-#define DEVICE_NR(device) (minor(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM2_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #2"
-#define DEVICE_NR(device) (minor(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM3_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #3"
-#define DEVICE_NR(device) (minor(device))
-
-#elif (MAJOR_NR == MATSUSHITA_CDROM4_MAJOR)
-
-#define DEVICE_NAME "Matsushita CD-ROM controller #4"
+#define DEVICE_NAME "Matsushita CD-ROM controller"
#define DEVICE_NR(device) (minor(device))
#elif (MAJOR_NR == AZTECH_CDROM_MAJOR)
@@ -292,27 +274,23 @@ static void floppy_off(unsigned int nr);
#if (MAJOR_NR != SCSI_TAPE_MAJOR) && (MAJOR_NR != OSST_MAJOR)
#if !defined(IDE_DRIVER)
-#ifndef CURRENT
-# define CURRENT elv_next_request(&blk_dev[MAJOR_NR].request_queue)
-#endif
#ifndef QUEUE
# define QUEUE (&blk_dev[MAJOR_NR].request_queue)
#endif
+#ifndef CURRENT
+# define CURRENT elv_next_request(QUEUE)
+#endif
#ifndef DEVICE_NAME
# define DEVICE_NAME "unknown"
#endif
#ifdef DEVICE_INTR
static void (*DEVICE_INTR)(void) = NULL;
-#endif
-
-#define SET_INTR(x) (DEVICE_INTR = (x))
-
-# ifdef DEVICE_INTR
-# define CLEAR_INTR SET_INTR(NULL)
+# define CLEAR_INTR DEVICE_INTR = NULL
# else
# define CLEAR_INTR
# endif
+
#endif /* !defined(IDE_DRIVER) */
/*
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 407b176d7dad..a3e1c02d6d63 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -81,7 +81,6 @@ enum rq_flag_bits {
/*
* for ATA/ATAPI devices
*/
- __REQ_DRIVE_CMD,
__REQ_DRIVE_ACB,
__REQ_PC, /* packet command (special) */
@@ -101,7 +100,6 @@ enum rq_flag_bits {
#define REQ_STARTED (1 << __REQ_STARTED)
#define REQ_DONTPREP (1 << __REQ_DONTPREP)
#define REQ_QUEUED (1 << __REQ_QUEUED)
-#define REQ_DRIVE_CMD (1 << __REQ_DRIVE_CMD)
#define REQ_DRIVE_ACB (1 << __REQ_DRIVE_ACB)
#define REQ_PC (1 << __REQ_PC)
#define REQ_BLOCK_PC (1 << __REQ_BLOCK_PC)
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index 9bcb2b34df84..90767fc78617 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -191,8 +191,7 @@ void FASTCALL(unlock_buffer(struct buffer_head *bh));
* address_spaces.
*/
int try_to_release_page(struct page * page, int gfp_mask);
-int block_flushpage(struct page *page, unsigned long offset);
-int block_symlink(struct inode *, const char *, int);
+int block_invalidatepage(struct page *page, unsigned long offset);
int block_write_full_page(struct page*, get_block_t*);
int block_read_full_page(struct page*, get_block_t*);
int block_prepare_write(struct page*, unsigned, unsigned, get_block_t*);
diff --git a/include/linux/ext3_fs.h b/include/linux/ext3_fs.h
index f8630de86518..5847e06c1020 100644
--- a/include/linux/ext3_fs.h
+++ b/include/linux/ext3_fs.h
@@ -695,6 +695,7 @@ extern struct file_operations ext3_file_operations;
/* inode.c */
extern struct address_space_operations ext3_aops;
+extern struct address_space_operations ext3_writeback_aops;
/* namei.c */
extern struct inode_operations ext3_dir_inode_operations;
diff --git a/include/linux/ext3_jbd.h b/include/linux/ext3_jbd.h
index ece9ec115665..05645eb7afca 100644
--- a/include/linux/ext3_jbd.h
+++ b/include/linux/ext3_jbd.h
@@ -299,5 +299,10 @@ static inline int ext3_should_order_data(struct inode *inode)
return (test_opt(inode->i_sb, DATA_FLAGS) == EXT3_MOUNT_ORDERED_DATA);
}
+static inline int ext3_should_writeback_data(struct inode *inode)
+{
+ return !ext3_should_journal_data(inode) &&
+ !ext3_should_order_data(inode);
+}
#endif /* _LINUX_EXT3_JBD_H */
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 31a691491a9f..839dfbd712e2 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -306,7 +306,7 @@ struct address_space_operations {
int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
/* Unfortunately this kludge is needed for FIBMAP. Don't use it */
int (*bmap)(struct address_space *, long);
- int (*flushpage) (struct page *, unsigned long);
+ int (*invalidatepage) (struct page *, unsigned long);
int (*releasepage) (struct page *, int);
#define KERNEL_HAS_O_DIRECT /* this is for modules out of the kernel */
int (*direct_IO)(int, struct inode *, struct kiobuf *, unsigned long, int);
@@ -383,7 +383,6 @@ struct inode {
struct inode_operations *i_op;
struct file_operations *i_fop; /* former ->i_op->default_file_ops */
struct super_block *i_sb;
- wait_queue_head_t i_wait;
struct file_lock *i_flock;
struct address_space *i_mapping;
struct address_space i_data;
@@ -1245,6 +1244,7 @@ extern int vfs_readlink(struct dentry *, char *, int, const char *);
extern int vfs_follow_link(struct nameidata *, const char *);
extern int page_readlink(struct dentry *, char *, int);
extern int page_follow_link(struct dentry *, struct nameidata *);
+extern int page_symlink(struct inode *inode, const char *symname, int len);
extern struct inode_operations page_symlink_inode_operations;
extern void generic_fillattr(struct inode *, struct kstat *);
diff --git a/include/linux/hdreg.h b/include/linux/hdreg.h
index 598827f0ee06..6f1fd4aae99a 100644
--- a/include/linux/hdreg.h
+++ b/include/linux/hdreg.h
@@ -74,25 +74,12 @@
#define IDE_DRIVE_TASK_RAW_WRITE 4
struct hd_drive_task_hdr {
- u8 data;
u8 feature;
u8 sector_count;
u8 sector_number;
u8 low_cylinder;
u8 high_cylinder;
u8 device_head;
- u8 command;
-} __attribute__((packed));
-
-struct hd_drive_hob_hdr {
- u8 data;
- u8 feature;
- u8 sector_count;
- u8 sector_number;
- u8 low_cylinder;
- u8 high_cylinder;
- u8 device_head;
- u8 control;
} __attribute__((packed));
/*
diff --git a/include/linux/ide.h b/include/linux/ide.h
index f9b112fa19b2..24f5ce47a19d 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -38,11 +38,6 @@
# define SUPPORT_SLOW_DATA_PORTS 1 /* 0 to reduce kernel size */
#endif
-/* Right now this is only needed by a promise controlled.
- */
-#ifndef OK_TO_RESET_CONTROLLER /* 1 needed for good error recovery */
-# define OK_TO_RESET_CONTROLLER 0 /* 0 for use with AH2372A/B interface */
-#endif
#ifndef FANCY_STATUS_DUMPS /* 1 for human-readable drive errors */
# define FANCY_STATUS_DUMPS 1 /* 0 to reduce kernel size */
#endif
@@ -73,21 +68,22 @@ typedef unsigned char byte; /* used everywhere */
*/
enum {
- IDE_DATA_OFFSET = 0,
- IDE_ERROR_OFFSET = 1,
- IDE_NSECTOR_OFFSET = 2,
- IDE_SECTOR_OFFSET = 3,
- IDE_LCYL_OFFSET = 4,
- IDE_HCYL_OFFSET = 5,
- IDE_SELECT_OFFSET = 6,
- IDE_STATUS_OFFSET = 7,
- IDE_CONTROL_OFFSET = 8,
- IDE_IRQ_OFFSET = 9,
- IDE_NR_PORTS = 10
+ IDE_DATA_OFFSET = 0,
+ IDE_ERROR_OFFSET = 1,
+ IDE_FEATURE_OFFSET = 1,
+ IDE_NSECTOR_OFFSET = 2,
+ IDE_SECTOR_OFFSET = 3,
+ IDE_LCYL_OFFSET = 4,
+ IDE_HCYL_OFFSET = 5,
+ IDE_SELECT_OFFSET = 6,
+ IDE_STATUS_OFFSET = 7,
+ IDE_COMMAND_OFFSET = 7,
+ IDE_CONTROL_OFFSET = 8,
+ IDE_ALTSTATUS_OFFSET = 8,
+ IDE_IRQ_OFFSET = 9,
+ IDE_NR_PORTS = 10
};
-#define IDE_FEATURE_OFFSET IDE_ERROR_OFFSET
-#define IDE_COMMAND_OFFSET IDE_STATUS_OFFSET
#define IDE_DATA_REG (drive->channel->io_ports[IDE_DATA_OFFSET])
#define IDE_ERROR_REG (drive->channel->io_ports[IDE_ERROR_OFFSET])
@@ -96,20 +92,16 @@ enum {
#define IDE_LCYL_REG (drive->channel->io_ports[IDE_LCYL_OFFSET])
#define IDE_HCYL_REG (drive->channel->io_ports[IDE_HCYL_OFFSET])
#define IDE_SELECT_REG (drive->channel->io_ports[IDE_SELECT_OFFSET])
-#define IDE_STATUS_REG (drive->channel->io_ports[IDE_STATUS_OFFSET])
-#define IDE_CONTROL_REG (drive->channel->io_ports[IDE_CONTROL_OFFSET])
+#define IDE_COMMAND_REG (drive->channel->io_ports[IDE_STATUS_OFFSET])
#define IDE_IRQ_REG (drive->channel->io_ports[IDE_IRQ_OFFSET])
#define IDE_FEATURE_REG IDE_ERROR_REG
-#define IDE_COMMAND_REG IDE_STATUS_REG
-#define IDE_ALTSTATUS_REG IDE_CONTROL_REG
#define IDE_IREASON_REG IDE_NSECTOR_REG
#define IDE_BCOUNTL_REG IDE_LCYL_REG
#define IDE_BCOUNTH_REG IDE_HCYL_REG
#define GET_ERR() IN_BYTE(IDE_ERROR_REG)
-#define GET_STAT() IN_BYTE(IDE_STATUS_REG)
-#define GET_ALTSTAT() IN_BYTE(IDE_CONTROL_REG)
+#define GET_ALTSTAT() IN_BYTE(drive->channel->io_ports[IDE_CONTROL_OFFSET])
#define GET_FEAT() IN_BYTE(IDE_NSECTOR_REG)
#define BAD_R_STAT (BUSY_STAT | ERR_STAT)
@@ -278,29 +270,6 @@ typedef union {
} b;
} select_t;
-typedef union {
- unsigned all : 8; /* all of the bits together */
- struct {
-#if defined(__LITTLE_ENDIAN_BITFIELD)
- unsigned bit0 : 1;
- unsigned nIEN : 1; /* device INTRQ to host */
- unsigned SRST : 1; /* host soft reset bit */
- unsigned bit3 : 1; /* ATA-2 thingy */
- unsigned reserved456 : 3;
- unsigned HOB : 1; /* 48-bit address ordering */
-#elif defined(__BIG_ENDIAN_BITFIELD)
- unsigned HOB : 1;
- unsigned reserved456 : 3;
- unsigned bit3 : 1;
- unsigned SRST : 1;
- unsigned nIEN : 1;
- unsigned bit0 : 1;
-#else
-#error "Please fix <asm/byteorder.h>"
-#endif
- } b;
-} control_t;
-
/*
* ATA/ATAPI device structure :
*/
@@ -346,8 +315,6 @@ struct ata_device {
byte scsi; /* 0=default, 1=skip current ide-subdriver for ide-scsi emulation */
select_t select; /* basic drive/head select reg value */
-
- u8 ctl; /* "normal" value for IDE_CONTROL_REG */
u8 status; /* last retrived status value for device */
byte ready_stat; /* min status value for drive ready */
@@ -458,7 +425,7 @@ struct ata_channel {
* mode itself.
*/
- /* setup disk on a channel for a particular transfer mode */
+ /* setup disk on a channel for a particular PIO transfer mode */
void (*tuneproc) (struct ata_device *, byte pio);
/* setup the chipset timing for a particular transfer mode */
@@ -488,18 +455,13 @@ struct ata_channel {
void (*atapi_read)(struct ata_device *, void *, unsigned int);
void (*atapi_write)(struct ata_device *, void *, unsigned int);
- int (*XXX_udma)(struct ata_device *);
+ int (*udma_setup)(struct ata_device *);
void (*udma_enable)(struct ata_device *, int, int);
-
int (*udma_start) (struct ata_device *, struct request *rq);
int (*udma_stop) (struct ata_device *);
-
- int (*udma_read) (struct ata_device *, struct request *rq);
- int (*udma_write) (struct ata_device *, struct request *rq);
-
+ int (*udma_init) (struct ata_device *, struct request *rq);
int (*udma_irq_status) (struct ata_device *);
-
void (*udma_timeout) (struct ata_device *);
void (*udma_irq_lost) (struct ata_device *);
@@ -540,7 +502,7 @@ struct ata_channel {
* Register new hardware with ide
*/
extern int ide_register_hw(hw_regs_t *hw);
-extern void ide_unregister(struct ata_channel *hwif);
+extern void ide_unregister(struct ata_channel *);
struct ata_taskfile;
@@ -653,25 +615,10 @@ extern void ide_set_handler(struct ata_device *drive, ata_handler_t handler,
*/
extern u8 ide_dump_status(struct ata_device *, struct request *rq, const char *, u8);
-extern ide_startstop_t ide_error(struct ata_device *, struct request *rq,
- const char *, byte);
+extern ide_startstop_t ata_error(struct ata_device *, struct request *rq, const char *);
-/*
- * ide_fixstring() cleans up and (optionally) byte-swaps a text string,
- * removing leading/trailing blanks and compressing internal blanks.
- * It is primarily used to tidy up the model name/number fields as
- * returned by the WIN_[P]IDENTIFY commands.
- */
-void ide_fixstring(byte *s, const int bytecount, const int byteswap);
+extern void ide_fixstring(char *s, const int bytecount, const int byteswap);
-/*
- * This routine busy-waits for the drive status to be not "busy".
- * It then checks the status for all of the "good" bits and none
- * of the "bad" bits, and if all is okay it returns 0. All other
- * cases return 1 after doing "*startstop = ide_error()", and the
- * caller should return the updated value of "startstop" in this case.
- * "startstop" is unchanged when the function returns 0;
- */
extern int ide_wait_stat(ide_startstop_t *,
struct ata_device *, struct request *rq,
byte, byte, unsigned long);
@@ -696,11 +643,6 @@ struct ata_device *get_info_ptr(kdev_t i_rdev);
ide_startstop_t restart_request(struct ata_device *);
/*
- * This function is intended to be used prior to invoking ide_do_drive_cmd().
- */
-extern void ide_init_drive_cmd(struct request *rq);
-
-/*
* "action" parameter type for ide_do_drive_cmd() below.
*/
typedef enum {
@@ -719,11 +661,12 @@ extern int ide_do_drive_cmd(struct ata_device *, struct request *, ide_action_t)
/*
* Clean up after success/failure of an explicit drive cmd.
*/
-extern void ide_end_drive_cmd(struct ata_device *, struct request *, u8);
+extern void ide_end_drive_cmd(struct ata_device *, struct request *);
struct ata_taskfile {
struct hd_drive_task_hdr taskfile;
- struct hd_drive_hob_hdr hobfile;
+ struct hd_drive_task_hdr hobfile;
+ u8 cmd; /* actual ATA command */
int command_type;
ide_startstop_t (*prehandler)(struct ata_device *, struct request *);
ide_startstop_t (*handler)(struct ata_device *, struct request *);
@@ -742,21 +685,18 @@ extern ide_startstop_t ata_taskfile(struct ata_device *,
extern ide_startstop_t recal_intr(struct ata_device *, struct request *);
extern ide_startstop_t task_no_data_intr(struct ata_device *, struct request *);
-
-/* This is setting up all fields in args, which depend upon the command type.
- */
extern void ide_cmd_type_parser(struct ata_taskfile *args);
extern int ide_raw_taskfile(struct ata_device *, struct ata_taskfile *);
-extern int ide_cmd_ioctl(struct ata_device *drive, unsigned long arg);
extern void ide_fix_driveid(struct hd_driveid *id);
extern int ide_config_drive_speed(struct ata_device *, byte);
extern byte eighty_ninty_three(struct ata_device *);
-extern int system_bus_speed;
extern void ide_stall_queue(struct ata_device *, unsigned long);
+extern int system_bus_speed;
+
/*
* CompactFlash cards and their brethern pretend to be removable hard disks,
* but they never have a slave unit, and they don't have doorlock mechanisms.
@@ -825,14 +765,12 @@ static inline int udma_stop(struct ata_device *drive)
return drive->channel->udma_stop(drive);
}
-static inline int udma_read(struct ata_device *drive, struct request *rq)
-{
- return drive->channel->udma_read(drive, rq);
-}
-
-static inline int udma_write(struct ata_device *drive, struct request *rq)
+/*
+ * Initiate actual DMA data transfer. The direction is encoded in the request.
+ */
+static inline int udma_init(struct ata_device *drive, struct request *rq)
{
- return drive->channel->udma_write(drive, rq);
+ return drive->channel->udma_init(drive, rq);
}
static inline int udma_irq_status(struct ata_device *drive)
@@ -852,14 +790,14 @@ static inline void udma_irq_lost(struct ata_device *drive)
#ifdef CONFIG_BLK_DEV_IDEDMA
-void udma_pci_enable(struct ata_device *drive, int on, int verbose);
-int udma_pci_start(struct ata_device *drive, struct request *rq);
-int udma_pci_stop(struct ata_device *drive);
-int udma_pci_read(struct ata_device *drive, struct request *rq);
-int udma_pci_write(struct ata_device *drive, struct request *rq);
-int udma_pci_irq_status(struct ata_device *drive);
-void udma_pci_timeout(struct ata_device *drive);
-void udma_pci_irq_lost(struct ata_device *);
+extern void udma_pci_enable(struct ata_device *drive, int on, int verbose);
+extern int udma_pci_start(struct ata_device *drive, struct request *rq);
+extern int udma_pci_stop(struct ata_device *drive);
+extern int udma_pci_init(struct ata_device *drive, struct request *rq);
+extern int udma_pci_irq_status(struct ata_device *drive);
+extern void udma_pci_timeout(struct ata_device *drive);
+extern void udma_pci_irq_lost(struct ata_device *);
+extern int udma_pci_setup(struct ata_device *);
extern int udma_new_table(struct ata_channel *, struct request *);
extern void udma_destroy_table(struct ata_channel *);
@@ -868,14 +806,11 @@ extern void udma_print(struct ata_device *);
extern int udma_black_list(struct ata_device *);
extern int udma_white_list(struct ata_device *);
-extern int ata_do_udma(unsigned int reading, struct ata_device *drive, struct request *rq);
-
extern ide_startstop_t udma_tcq_taskfile(struct ata_device *, struct request *);
extern int udma_tcq_enable(struct ata_device *, int);
extern ide_startstop_t ide_dma_intr(struct ata_device *, struct request *);
extern int check_drive_lists(struct ata_device *, int good_bad);
-extern int XXX_ide_dmaproc(struct ata_device *);
extern void ide_release_dma(struct ata_channel *);
extern int ata_start_dma(struct ata_device *, struct request *rq);
@@ -896,5 +831,8 @@ extern int drive_is_ready(struct ata_device *drive);
extern void ata_select(struct ata_device *, unsigned long);
extern void ata_mask(struct ata_device *);
extern int ata_status(struct ata_device *, u8, u8);
+extern int ata_irq_enable(struct ata_device *, int);
+extern void ata_reset(struct ata_channel *);
+extern void ata_out_regfile(struct ata_device *, struct hd_drive_task_hdr *);
#endif
diff --git a/include/linux/jbd.h b/include/linux/jbd.h
index d0c52537a274..835d38c9dbfc 100644
--- a/include/linux/jbd.h
+++ b/include/linux/jbd.h
@@ -641,7 +641,8 @@ extern int journal_dirty_metadata (handle_t *, struct buffer_head *);
extern void journal_release_buffer (handle_t *, struct buffer_head *);
extern void journal_forget (handle_t *, struct buffer_head *);
extern void journal_sync_buffer (struct buffer_head *);
-extern int journal_flushpage(journal_t *, struct page *, unsigned long);
+extern int journal_invalidatepage(journal_t *,
+ struct page *, unsigned long);
extern int journal_try_to_free_buffers(journal_t *, struct page *, int);
extern int journal_stop(handle_t *);
extern int journal_flush (journal_t *);
diff --git a/include/linux/list.h b/include/linux/list.h
index 99da4ab62ec2..f6ea9d2d9f25 100644
--- a/include/linux/list.h
+++ b/include/linux/list.h
@@ -94,6 +94,8 @@ static __inline__ void __list_del(struct list_head * prev,
static __inline__ void list_del(struct list_head *entry)
{
__list_del(entry->prev, entry->next);
+ entry->next = (void *) 0;
+ entry->prev = (void *) 0;
}
/**
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 027986b2f336..64c3b5ef2d88 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -13,6 +13,7 @@
#include <linux/in.h>
#include <linux/mm.h>
#include <linux/pagemap.h>
+#include <linux/wait.h>
#include <linux/nfs_fs_sb.h>
@@ -159,6 +160,8 @@ struct nfs_inode {
/* Credentials for shared mmap */
struct rpc_cred *mm_cred;
+ wait_queue_head_t nfs_i_wait;
+
struct inode vfs_inode;
};
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h
index 62024cab73f2..7b270a50487e 100644
--- a/include/linux/raid/md_k.h
+++ b/include/linux/raid/md_k.h
@@ -355,7 +355,7 @@ do { \
if (condition) \
break; \
spin_unlock_irq(&lock); \
- run_task_queue(&tq_disk); \
+ blk_run_queues(); \
schedule(); \
spin_lock_irq(&lock); \
} \
@@ -381,7 +381,7 @@ do { \
set_current_state(TASK_UNINTERRUPTIBLE); \
if (condition) \
break; \
- run_task_queue(&tq_disk); \
+ blk_run_queues(); \
schedule(); \
} \
current->state = TASK_RUNNING; \
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 7e20b3016c7f..d0160265e3c5 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -11,7 +11,16 @@
#define SWAP_FLAG_PRIO_MASK 0x7fff
#define SWAP_FLAG_PRIO_SHIFT 0
-#define MAX_SWAPFILES 32
+/*
+ * MAX_SWAPFILES defines the maximum number of swaptypes: things which can
+ * be swapped to. The swap type and the offset into that swap type are
+ * encoded into pte's and into pgoff_t's in the swapcache. Using five bits
+ * for the type means that the maximum number of swapcache pages is 27 bits
+ * on 32-bit-pgoff_t architectures. And that assumes that the architecture packs
+ * the type/offset into the pte as 5/27 as well.
+ */
+#define MAX_SWAPFILES_SHIFT 5
+#define MAX_SWAPFILES (1 << MAX_SWAPFILES_SHIFT)
/*
* Magic header for a swap area. The first part of the union is
diff --git a/include/linux/swapops.h b/include/linux/swapops.h
new file mode 100644
index 000000000000..500f9960d939
--- /dev/null
+++ b/include/linux/swapops.h
@@ -0,0 +1,68 @@
+/*
+ * swapcache pages are stored in the swapper_space radix tree. We want to
+ * get good packing density in that tree, so the index should be dense in
+ * the low-order bits.
+ *
+ * We arrange the `type' and `offset' fields so that `type' is at the five
+ * high-order bits of the smp_entry_t and `offset' is right-aligned in the
+ * remaining bits.
+ *
+ * swp_entry_t's are *never* stored anywhere in their arch-dependent format.
+ */
+#define SWP_TYPE_SHIFT(e) (sizeof(e.val) * 8 - MAX_SWAPFILES_SHIFT)
+#define SWP_OFFSET_MASK(e) ((1 << SWP_TYPE_SHIFT(e)) - 1)
+
+/*
+ * Store a type+offset into a swp_entry_t in an arch-independent format
+ */
+static inline swp_entry_t swp_entry(unsigned type, pgoff_t offset)
+{
+ swp_entry_t ret;
+
+ ret.val = (type << SWP_TYPE_SHIFT(ret)) |
+ (offset & SWP_OFFSET_MASK(ret));
+ return ret;
+}
+
+/*
+ * Extract the `type' field from a swp_entry_t. The swp_entry_t is in
+ * arch-independent format
+ */
+static inline unsigned swp_type(swp_entry_t entry)
+{
+ return (entry.val >> SWP_TYPE_SHIFT(entry)) &
+ ((1 << MAX_SWAPFILES_SHIFT) - 1);
+}
+
+/*
+ * Extract the `offset' field from a swp_entry_t. The swp_entry_t is in
+ * arch-independent format
+ */
+static inline pgoff_t swp_offset(swp_entry_t entry)
+{
+ return entry.val & SWP_OFFSET_MASK(entry);
+}
+
+/*
+ * Convert the arch-dependent pte representation of a swp_entry_t into an
+ * arch-independent swp_entry_t.
+ */
+static inline swp_entry_t pte_to_swp_entry(pte_t pte)
+{
+ swp_entry_t arch_entry;
+
+ arch_entry = __pte_to_swp_entry(pte);
+ return swp_entry(__swp_type(arch_entry), __swp_offset(arch_entry));
+}
+
+/*
+ * Convert the arch-independent representation of a swp_entry_t into the
+ * arch-dependent pte representation.
+ */
+static inline pte_t swp_entry_to_pte(swp_entry_t entry)
+{
+ swp_entry_t arch_entry;
+
+ arch_entry = __swp_entry(swp_type(entry), swp_offset(entry));
+ return __swp_entry_to_pte(arch_entry);
+}
diff --git a/include/linux/types.h b/include/linux/types.h
index 211461bc97c0..c102bcf8be83 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -124,6 +124,14 @@ typedef u64 sector_t;
typedef unsigned long sector_t;
#endif
+/*
+ * The type of an index into the pagecache. Use a #define so asm/types.h
+ * can override it.
+ */
+#ifndef pgoff_t
+#define pgoff_t unsigned long
+#endif
+
#endif /* __KERNEL_STRICT_NAMES */
/*
diff --git a/include/linux/writeback.h b/include/linux/writeback.h
index 5f035892d26f..cf706c783eda 100644
--- a/include/linux/writeback.h
+++ b/include/linux/writeback.h
@@ -31,6 +31,7 @@ static inline int current_is_pdflush(void)
void writeback_unlocked_inodes(int *nr_to_write, int sync_mode,
unsigned long *older_than_this);
+void wake_up_inode(struct inode *inode);
void __wait_on_inode(struct inode * inode);
void sync_inodes_sb(struct super_block *, int wait);
void sync_inodes(int wait);