提交 254feb88 编写于 作者: L Linus Torvalds
...@@ -886,7 +886,6 @@ xfs_page_state_convert( ...@@ -886,7 +886,6 @@ xfs_page_state_convert(
SetPageUptodate(page); SetPageUptodate(page);
if (startio) { if (startio) {
WARN_ON(page_dirty);
xfs_submit_page(page, wbc, bh_arr, cnt, 0, !page_dirty); xfs_submit_page(page, wbc, bh_arr, cnt, 0, !page_dirty);
} }
......
...@@ -565,7 +565,7 @@ struct file_operations linvfs_file_operations = { ...@@ -565,7 +565,7 @@ struct file_operations linvfs_file_operations = {
.sendfile = linvfs_sendfile, .sendfile = linvfs_sendfile,
.unlocked_ioctl = linvfs_ioctl, .unlocked_ioctl = linvfs_ioctl,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_ioctl = xfs_compat_ioctl, .compat_ioctl = linvfs_compat_ioctl,
#endif #endif
.mmap = linvfs_file_mmap, .mmap = linvfs_file_mmap,
.open = linvfs_open, .open = linvfs_open,
...@@ -587,7 +587,7 @@ struct file_operations linvfs_invis_file_operations = { ...@@ -587,7 +587,7 @@ struct file_operations linvfs_invis_file_operations = {
.sendfile = linvfs_sendfile, .sendfile = linvfs_sendfile,
.unlocked_ioctl = linvfs_ioctl_invis, .unlocked_ioctl = linvfs_ioctl_invis,
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
.compat_ioctl = xfs_compat_invis_ioctl, .compat_ioctl = linvfs_compat_invis_ioctl,
#endif #endif
.mmap = linvfs_file_mmap, .mmap = linvfs_file_mmap,
.open = linvfs_open, .open = linvfs_open,
...@@ -600,6 +600,9 @@ struct file_operations linvfs_dir_operations = { ...@@ -600,6 +600,9 @@ struct file_operations linvfs_dir_operations = {
.read = generic_read_dir, .read = generic_read_dir,
.readdir = linvfs_readdir, .readdir = linvfs_readdir,
.unlocked_ioctl = linvfs_ioctl, .unlocked_ioctl = linvfs_ioctl,
#ifdef CONFIG_COMPAT
.compat_ioctl = linvfs_compat_ioctl,
#endif
.fsync = linvfs_fsync, .fsync = linvfs_fsync,
}; };
......
/* /*
* Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved. * Copyright (c) 2004-2005 Silicon Graphics, Inc. All Rights Reserved.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as * under the terms of version 2 of the GNU General Public License as
...@@ -58,8 +58,9 @@ typedef struct xfs_fsop_bulkreq32 { ...@@ -58,8 +58,9 @@ typedef struct xfs_fsop_bulkreq32 {
__s32 ocount; /* output count pointer */ __s32 ocount; /* output count pointer */
} xfs_fsop_bulkreq32_t; } xfs_fsop_bulkreq32_t;
static unsigned long STATIC unsigned long
xfs_ioctl32_bulkstat(unsigned long arg) xfs_ioctl32_bulkstat(
unsigned long arg)
{ {
xfs_fsop_bulkreq32_t __user *p32 = (void __user *)arg; xfs_fsop_bulkreq32_t __user *p32 = (void __user *)arg;
xfs_fsop_bulkreq_t __user *p = compat_alloc_user_space(sizeof(*p)); xfs_fsop_bulkreq_t __user *p = compat_alloc_user_space(sizeof(*p));
...@@ -78,11 +79,11 @@ xfs_ioctl32_bulkstat(unsigned long arg) ...@@ -78,11 +79,11 @@ xfs_ioctl32_bulkstat(unsigned long arg)
} }
#endif #endif
static long STATIC long
__xfs_compat_ioctl(int mode, struct file *f, unsigned cmd, unsigned long arg) __linvfs_compat_ioctl(int mode, struct file *f, unsigned cmd, unsigned long arg)
{ {
int error; int error;
struct inode *inode = f->f_dentry->d_inode; struct inode *inode = f->f_dentry->d_inode;
vnode_t *vp = LINVFS_GET_VP(inode); vnode_t *vp = LINVFS_GET_VP(inode);
switch (cmd) { switch (cmd) {
...@@ -152,12 +153,20 @@ __xfs_compat_ioctl(int mode, struct file *f, unsigned cmd, unsigned long arg) ...@@ -152,12 +153,20 @@ __xfs_compat_ioctl(int mode, struct file *f, unsigned cmd, unsigned long arg)
return error; return error;
} }
long xfs_compat_ioctl(struct file *f, unsigned cmd, unsigned long arg) long
linvfs_compat_ioctl(
struct file *f,
unsigned cmd,
unsigned long arg)
{ {
return __xfs_compat_ioctl(0, f, cmd, arg); return __linvfs_compat_ioctl(0, f, cmd, arg);
} }
long xfs_compat_invis_ioctl(struct file *f, unsigned cmd, unsigned long arg) long
linvfs_compat_invis_ioctl(
struct file *f,
unsigned cmd,
unsigned long arg)
{ {
return __xfs_compat_ioctl(IO_INVIS, f, cmd, arg); return __linvfs_compat_ioctl(IO_INVIS, f, cmd, arg);
} }
/* /*
* Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved. * Copyright (c) 2004-2005 Silicon Graphics, Inc. All Rights Reserved.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as * under the terms of version 2 of the GNU General Public License as
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
* http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
*/ */
long xfs_compat_ioctl(struct file *f, unsigned cmd, unsigned long arg); long linvfs_compat_ioctl(struct file *f, unsigned cmd, unsigned long arg);
long xfs_compat_invis_ioctl(struct file *f, unsigned cmd, unsigned long arg); long linvfs_compat_invis_ioctl(struct file *f, unsigned cmd, unsigned long arg);
/* /*
* Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved. * Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
* under the terms of version 2 of the GNU General Public License as * under the terms of version 2 of the GNU General Public License as
...@@ -66,7 +66,6 @@ ...@@ -66,7 +66,6 @@
#include "xfs_buf_item.h" #include "xfs_buf_item.h"
#include "xfs_utils.h" #include "xfs_utils.h"
#include "xfs_version.h" #include "xfs_version.h"
#include "xfs_ioctl32.h"
#include <linux/namei.h> #include <linux/namei.h>
#include <linux/init.h> #include <linux/init.h>
......
...@@ -278,7 +278,9 @@ xfs_iomap( ...@@ -278,7 +278,9 @@ xfs_iomap(
switch (flags & (BMAPI_WRITE|BMAPI_ALLOCATE|BMAPI_UNWRITTEN)) { switch (flags & (BMAPI_WRITE|BMAPI_ALLOCATE|BMAPI_UNWRITTEN)) {
case BMAPI_WRITE: case BMAPI_WRITE:
/* If we found an extent, return it */ /* If we found an extent, return it */
if (nimaps && (imap.br_startblock != HOLESTARTBLOCK)) { if (nimaps &&
(imap.br_startblock != HOLESTARTBLOCK) &&
(imap.br_startblock != DELAYSTARTBLOCK)) {
xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, io, xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, io,
offset, count, iomapp, &imap, flags); offset, count, iomapp, &imap, flags);
break; break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册