1/**
2 * aops.h - Defines for NTFS kernel address space operations and page cache
3 *	    handling.  Part of the Linux-NTFS project.
4 *
5 * Copyright (c) 2001-2004 Anton Altaparmakov
6 * Copyright (c) 2002 Richard Russon
7 *
8 * This program/include file is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License as published
10 * by the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program/include file is distributed in the hope that it will be
14 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program (in the main directory of the Linux-NTFS
20 * distribution in the file COPYING); if not, write to the Free Software
21 * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22 */
23
24#ifndef _LINUX_NTFS_AOPS_H
25#define _LINUX_NTFS_AOPS_H
26
27#include <linux/mm.h>
28#include <linux/highmem.h>
29#include <linux/pagemap.h>
30#include <linux/fs.h>
31
32#include "inode.h"
33
34/**
35 * ntfs_unmap_page - release a page that was mapped using ntfs_map_page()
36 * @page:	the page to release
37 *
38 * Unpin, unmap and release a page that was obtained from ntfs_map_page().
39 */
40static inline void ntfs_unmap_page(struct page *page)
41{
42	kunmap(page);
43	page_cache_release(page);
44}
45
46static inline struct page *ntfs_map_page(struct address_space *mapping,
47		unsigned long index)
48{
49	struct page *page = read_mapping_page(mapping, index, NULL);
50
51	if (!IS_ERR(page)) {
52		kmap(page);
53		if (!PageError(page))
54			return page;
55		ntfs_unmap_page(page);
56		return ERR_PTR(-EIO);
57	}
58	return page;
59}
60
61#ifdef NTFS_RW
62
63extern void mark_ntfs_record_dirty(struct page *page, const unsigned int ofs);
64
65#endif /* NTFS_RW */
66
67#endif /* _LINUX_NTFS_AOPS_H */
68