Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
f7001e8f
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f7001e8f
编写于
8月 16, 2005
作者:
T
Tony Luck
浏览文件
操作
浏览文件
下载
差异文件
Auto-update from upstream
上级
85f265d8
cf590012
变更
28
隐藏空白更改
内联
并排
Showing
28 changed file
with
132 addition
and
90 deletion
+132
-90
arch/ia64/kernel/domain.c
arch/ia64/kernel/domain.c
+1
-1
drivers/acpi/motherboard.c
drivers/acpi/motherboard.c
+1
-1
drivers/char/mem.c
drivers/char/mem.c
+8
-4
drivers/scsi/dc395x.c
drivers/scsi/dc395x.c
+13
-35
drivers/video/fbmem.c
drivers/video/fbmem.c
+2
-2
drivers/video/intelfb/intelfbdrv.c
drivers/video/intelfb/intelfbdrv.c
+27
-23
fs/cifs/CHANGES
fs/cifs/CHANGES
+6
-0
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+3
-0
fs/cifs/misc.c
fs/cifs/misc.c
+1
-0
fs/inotify.c
fs/inotify.c
+1
-1
fs/namei.c
fs/namei.c
+2
-1
fs/nfs/inode.c
fs/nfs/inode.c
+24
-13
fs/nfs/nfs3proc.c
fs/nfs/nfs3proc.c
+4
-0
fs/nfs/nfs4proc.c
fs/nfs/nfs4proc.c
+8
-2
fs/nfs/proc.c
fs/nfs/proc.c
+2
-0
fs/nfs_common/nfsacl.c
fs/nfs_common/nfsacl.c
+1
-0
fs/ntfs/ChangeLog
fs/ntfs/ChangeLog
+3
-0
fs/ntfs/mft.c
fs/ntfs/mft.c
+2
-0
fs/reiserfs/namei.c
fs/reiserfs/namei.c
+3
-0
include/asm-i386/pci.h
include/asm-i386/pci.h
+3
-1
include/asm-sh/unistd.h
include/asm-sh/unistd.h
+1
-1
include/asm-um/page.h
include/asm-um/page.h
+2
-2
include/asm-x86_64/pci.h
include/asm-x86_64/pci.h
+3
-1
include/linux/fsnotify.h
include/linux/fsnotify.h
+5
-1
include/linux/inotify.h
include/linux/inotify.h
+3
-1
include/linux/nfs_fs.h
include/linux/nfs_fs.h
+1
-0
include/linux/sunrpc/xdr.h
include/linux/sunrpc/xdr.h
+1
-0
net/sunrpc/xdr.c
net/sunrpc/xdr.c
+1
-0
未找到文件。
arch/ia64/kernel/domain.c
浏览文件 @
f7001e8f
...
...
@@ -341,7 +341,7 @@ void build_sched_domains(const cpumask_t *cpu_map)
#endif
/* Attach the domains */
for_each_
online_cpu
(
i
)
{
for_each_
cpu_mask
(
i
,
*
cpu_map
)
{
struct
sched_domain
*
sd
;
#ifdef CONFIG_SCHED_SMT
sd
=
&
per_cpu
(
cpu_domains
,
i
);
...
...
drivers/acpi/motherboard.c
浏览文件 @
f7001e8f
...
...
@@ -43,7 +43,7 @@ ACPI_MODULE_NAME ("acpi_motherboard")
*/
#define IS_RESERVED_ADDR(base, len) \
(((len) > 0) && ((base) > 0) && ((base) + (len) < IO_SPACE_LIMIT) \
&& ((base) + (len) >
0x1000
))
&& ((base) + (len) >
PCIBIOS_MIN_IO
))
/*
* Clearing the flag (IORESOURCE_BUSY) allows drivers to use
...
...
drivers/char/mem.c
浏览文件 @
f7001e8f
...
...
@@ -261,7 +261,11 @@ static int mmap_mem(struct file * file, struct vm_area_struct * vma)
static
int
mmap_kmem
(
struct
file
*
file
,
struct
vm_area_struct
*
vma
)
{
unsigned
long
long
val
;
unsigned
long
pfn
;
/* Turn a kernel-virtual address into a physical page frame */
pfn
=
__pa
((
u64
)
vma
->
vm_pgoff
<<
PAGE_SHIFT
)
>>
PAGE_SHIFT
;
/*
* RED-PEN: on some architectures there is more mapped memory
* than available in mem_map which pfn_valid checks
...
...
@@ -269,10 +273,10 @@ static int mmap_kmem(struct file * file, struct vm_area_struct * vma)
*
* RED-PEN: vmalloc is not supported right now.
*/
if
(
!
pfn_valid
(
vma
->
vm_pgoff
))
if
(
!
pfn_valid
(
pfn
))
return
-
EIO
;
val
=
(
u64
)
vma
->
vm_pgoff
<<
PAGE_SHIFT
;
vma
->
vm_pgoff
=
__pa
(
val
)
>>
PAGE_SHIFT
;
vma
->
vm_pgoff
=
pfn
;
return
mmap_mem
(
file
,
vma
);
}
...
...
drivers/scsi/dc395x.c
浏览文件 @
f7001e8f
...
...
@@ -183,7 +183,7 @@
* cross a page boundy.
*/
#define SEGMENTX_LEN (sizeof(struct SGentry)*DC395x_MAX_SG_LISTENTRY)
#define VIRTX_LEN (sizeof(void *) * DC395x_MAX_SG_LISTENTRY)
struct
SGentry
{
u32
address
;
/* bus! address */
...
...
@@ -235,7 +235,6 @@ struct ScsiReqBlk {
u8
sg_count
;
/* No of HW sg entries for this request */
u8
sg_index
;
/* Index of HW sg entry for this request */
u32
total_xfer_length
;
/* Total number of bytes remaining to be transfered */
void
**
virt_map
;
unsigned
char
*
virt_addr
;
/* Virtual address of current transfer position */
/*
...
...
@@ -1022,14 +1021,14 @@ static void build_srb(struct scsi_cmnd *cmd, struct DeviceCtlBlk *dcb,
reqlen
,
cmd
->
request_buffer
,
cmd
->
use_sg
,
srb
->
sg_count
);
srb
->
virt_addr
=
page_address
(
sl
->
page
);
for
(
i
=
0
;
i
<
srb
->
sg_count
;
i
++
)
{
u32
seglen
=
(
u32
)
sg_dma_len
(
sl
+
i
);
sgp
[
i
].
address
=
(
u32
)
sg_dma_address
(
sl
+
i
);
u32
busaddr
=
(
u32
)
sg_dma_address
(
&
sl
[
i
]);
u32
seglen
=
(
u32
)
sl
[
i
].
length
;
sgp
[
i
].
address
=
busaddr
;
sgp
[
i
].
length
=
seglen
;
srb
->
total_xfer_length
+=
seglen
;
srb
->
virt_map
[
i
]
=
kmap
(
sl
[
i
].
page
);
}
srb
->
virt_addr
=
srb
->
virt_map
[
0
];
sgp
+=
srb
->
sg_count
-
1
;
/*
...
...
@@ -1976,7 +1975,6 @@ static void sg_update_list(struct ScsiReqBlk *srb, u32 left)
int
segment
=
cmd
->
use_sg
;
u32
xferred
=
srb
->
total_xfer_length
-
left
;
/* bytes transfered */
struct
SGentry
*
psge
=
srb
->
segment_x
+
srb
->
sg_index
;
void
**
virt
=
srb
->
virt_map
;
dprintkdbg
(
DBG_0
,
"sg_update_list: Transfered %i of %i bytes, %i remain
\n
"
,
...
...
@@ -2016,16 +2014,16 @@ static void sg_update_list(struct ScsiReqBlk *srb, u32 left)
/* We have to walk the scatterlist to find it */
sg
=
(
struct
scatterlist
*
)
cmd
->
request_buffer
;
idx
=
0
;
while
(
segment
--
)
{
unsigned
long
mask
=
~
((
unsigned
long
)
sg
->
length
-
1
)
&
PAGE_MASK
;
if
((
sg_dma_address
(
sg
)
&
mask
)
==
(
psge
->
address
&
mask
))
{
srb
->
virt_addr
=
virt
[
idx
]
+
(
psge
->
address
&
~
PAGE_MASK
);
srb
->
virt_addr
=
(
page_address
(
sg
->
page
)
+
psge
->
address
-
(
psge
->
address
&
PAGE_MASK
));
return
;
}
++
sg
;
++
idx
;
}
dprintkl
(
KERN_ERR
,
"sg_update_list: sg_to_virt failed
\n
"
);
...
...
@@ -2151,7 +2149,7 @@ static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
DC395x_read32
(
acb
,
TRM_S1040_DMA_CXCNT
));
}
/*
* calculate all the residue data that not yet tran
s
fered
* calculate all the residue data that not yet tranfered
* SCSI transfer counter + left in SCSI FIFO data
*
* .....TRM_S1040_SCSI_COUNTER (24bits)
...
...
@@ -3269,7 +3267,6 @@ static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
struct
scsi_cmnd
*
cmd
=
srb
->
cmd
;
enum
dma_data_direction
dir
=
cmd
->
sc_data_direction
;
if
(
cmd
->
use_sg
&&
dir
!=
PCI_DMA_NONE
)
{
int
i
;
/* unmap DC395x SG list */
dprintkdbg
(
DBG_SG
,
"pci_unmap_srb: list=%08x(%05x)
\n
"
,
srb
->
sg_bus_addr
,
SEGMENTX_LEN
);
...
...
@@ -3279,8 +3276,6 @@ static void pci_unmap_srb(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb)
dprintkdbg
(
DBG_SG
,
"pci_unmap_srb: segs=%i buffer=%p
\n
"
,
cmd
->
use_sg
,
cmd
->
request_buffer
);
/* unmap the sg segments */
for
(
i
=
0
;
i
<
srb
->
sg_count
;
i
++
)
kunmap
(
virt_to_page
(
srb
->
virt_map
[
i
]));
pci_unmap_sg
(
acb
->
dev
,
(
struct
scatterlist
*
)
cmd
->
request_buffer
,
cmd
->
use_sg
,
dir
);
...
...
@@ -3327,7 +3322,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
if
(
cmd
->
use_sg
)
{
struct
scatterlist
*
sg
=
(
struct
scatterlist
*
)
cmd
->
request_buffer
;
ptr
=
(
struct
ScsiInqData
*
)(
srb
->
virt_map
[
0
]
+
sg
->
offset
);
ptr
=
(
struct
ScsiInqData
*
)(
page_address
(
sg
->
page
)
+
sg
->
offset
);
}
else
{
ptr
=
(
struct
ScsiInqData
*
)(
cmd
->
request_buffer
);
}
...
...
@@ -4262,9 +4257,8 @@ static void adapter_sg_tables_free(struct AdapterCtlBlk *acb)
const
unsigned
srbs_per_page
=
PAGE_SIZE
/
SEGMENTX_LEN
;
for
(
i
=
0
;
i
<
DC395x_MAX_SRB_CNT
;
i
+=
srbs_per_page
)
kfree
(
acb
->
srb_array
[
i
].
segment_x
);
vfree
(
acb
->
srb_array
[
0
].
virt_map
);
if
(
acb
->
srb_array
[
i
].
segment_x
)
kfree
(
acb
->
srb_array
[
i
].
segment_x
);
}
...
...
@@ -4280,12 +4274,9 @@ static int __devinit adapter_sg_tables_alloc(struct AdapterCtlBlk *acb)
int
srb_idx
=
0
;
unsigned
i
=
0
;
struct
SGentry
*
ptr
;
void
**
virt_array
;
for
(
i
=
0
;
i
<
DC395x_MAX_SRB_CNT
;
i
++
)
{
for
(
i
=
0
;
i
<
DC395x_MAX_SRB_CNT
;
i
++
)
acb
->
srb_array
[
i
].
segment_x
=
NULL
;
acb
->
srb_array
[
i
].
virt_map
=
NULL
;
}
dprintkdbg
(
DBG_1
,
"Allocate %i pages for SG tables
\n
"
,
pages
);
while
(
pages
--
)
{
...
...
@@ -4306,19 +4297,6 @@ static int __devinit adapter_sg_tables_alloc(struct AdapterCtlBlk *acb)
ptr
+
(
i
*
DC395x_MAX_SG_LISTENTRY
);
else
dprintkl
(
KERN_DEBUG
,
"No space for tmsrb SG table reserved?!
\n
"
);
virt_array
=
vmalloc
((
DC395x_MAX_SRB_CNT
+
1
)
*
DC395x_MAX_SG_LISTENTRY
*
sizeof
(
void
*
));
if
(
!
virt_array
)
{
adapter_sg_tables_free
(
acb
);
return
1
;
}
for
(
i
=
0
;
i
<
DC395x_MAX_SRB_CNT
+
1
;
i
++
)
{
acb
->
srb_array
[
i
].
virt_map
=
virt_array
;
virt_array
+=
DC395x_MAX_SG_LISTENTRY
;
}
return
0
;
}
...
...
drivers/video/fbmem.c
浏览文件 @
f7001e8f
...
...
@@ -628,7 +628,7 @@ fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var)
int
fb_set_var
(
struct
fb_info
*
info
,
struct
fb_var_screeninfo
*
var
)
{
int
err
;
int
err
,
flags
=
info
->
flags
;
if
(
var
->
activate
&
FB_ACTIVATE_INV_MODE
)
{
struct
fb_videomode
mode1
,
mode2
;
...
...
@@ -682,7 +682,7 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
!
list_empty
(
&
info
->
modelist
))
err
=
fb_add_videomode
(
&
mode
,
&
info
->
modelist
);
if
(
!
err
&&
info
->
flags
&
FBINFO_MISC_USEREVENT
)
{
if
(
!
err
&&
(
flags
&
FBINFO_MISC_USEREVENT
)
)
{
struct
fb_event
event
;
info
->
flags
&=
~
FBINFO_MISC_USEREVENT
;
...
...
drivers/video/intelfb/intelfbdrv.c
浏览文件 @
f7001e8f
...
...
@@ -583,23 +583,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
return
-
ENODEV
;
}
/* Map the fb and MMIO regions */
dinfo
->
aperture
.
virtual
=
(
u8
__iomem
*
)
ioremap_nocache
(
dinfo
->
aperture
.
physical
,
dinfo
->
aperture
.
size
);
if
(
!
dinfo
->
aperture
.
virtual
)
{
ERR_MSG
(
"Cannot remap FB region.
\n
"
);
cleanup
(
dinfo
);
return
-
ENODEV
;
}
dinfo
->
mmio_base
=
(
u8
__iomem
*
)
ioremap_nocache
(
dinfo
->
mmio_base_phys
,
INTEL_REG_SIZE
);
if
(
!
dinfo
->
mmio_base
)
{
ERR_MSG
(
"Cannot remap MMIO region.
\n
"
);
cleanup
(
dinfo
);
return
-
ENODEV
;
}
/* Get the chipset info. */
dinfo
->
pci_chipset
=
pdev
->
device
;
...
...
@@ -630,9 +613,15 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
dinfo
->
accel
=
0
;
}
if
(
MB
(
voffset
)
<
stolen_size
)
offset
=
(
stolen_size
>>
12
);
else
offset
=
ROUND_UP_TO_PAGE
(
MB
(
voffset
))
/
GTT_PAGE_SIZE
;
/* Framebuffer parameters - Use all the stolen memory if >= vram */
if
(
ROUND_UP_TO_PAGE
(
stolen_size
)
>=
MB
(
vram
))
{
if
(
ROUND_UP_TO_PAGE
(
stolen_size
)
>=
((
offset
<<
12
)
+
MB
(
vram
)
))
{
dinfo
->
fb
.
size
=
ROUND_UP_TO_PAGE
(
stolen_size
);
dinfo
->
fb
.
offset
=
0
;
dinfo
->
fbmem_gart
=
0
;
}
else
{
dinfo
->
fb
.
size
=
MB
(
vram
);
...
...
@@ -663,11 +652,6 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
return
-
ENODEV
;
}
if
(
MB
(
voffset
)
<
stolen_size
)
offset
=
(
stolen_size
>>
12
);
else
offset
=
ROUND_UP_TO_PAGE
(
MB
(
voffset
))
/
GTT_PAGE_SIZE
;
/* set the mem offsets - set them after the already used pages */
if
(
dinfo
->
accel
)
{
dinfo
->
ring
.
offset
=
offset
+
gtt_info
.
current_memory
;
...
...
@@ -682,6 +666,26 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
+
(
dinfo
->
cursor
.
size
>>
12
);
}
/* Map the fb and MMIO regions */
/* ioremap only up to the end of used aperture */
dinfo
->
aperture
.
virtual
=
(
u8
__iomem
*
)
ioremap_nocache
(
dinfo
->
aperture
.
physical
,
(
dinfo
->
fb
.
offset
<<
12
)
+
dinfo
->
fb
.
size
);
if
(
!
dinfo
->
aperture
.
virtual
)
{
ERR_MSG
(
"Cannot remap FB region.
\n
"
);
cleanup
(
dinfo
);
return
-
ENODEV
;
}
dinfo
->
mmio_base
=
(
u8
__iomem
*
)
ioremap_nocache
(
dinfo
->
mmio_base_phys
,
INTEL_REG_SIZE
);
if
(
!
dinfo
->
mmio_base
)
{
ERR_MSG
(
"Cannot remap MMIO region.
\n
"
);
cleanup
(
dinfo
);
return
-
ENODEV
;
}
/* Allocate memories (which aren't stolen) */
if
(
dinfo
->
accel
)
{
if
(
!
(
dinfo
->
gtt_ring_mem
=
...
...
fs/cifs/CHANGES
浏览文件 @
f7001e8f
Version 1.35
------------
Add writepage performance improvements. Fix path name conversions
for long filenames on mounts which were done with "mapchars" mount option
specified.
Version 1.34
------------
Fix error mapping of the TOO_MANY_LINKS (hardlinks) case.
...
...
fs/cifs/cifssmb.c
浏览文件 @
f7001e8f
...
...
@@ -2602,6 +2602,9 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon,
if
(
name_len
<
PATH_MAX
)
{
memcpy
(
pSMB
->
ResumeFileName
,
psrch_inf
->
presume_name
,
name_len
);
byte_count
+=
name_len
;
/* 14 byte parm len above enough for 2 byte null terminator */
pSMB
->
ResumeFileName
[
name_len
]
=
0
;
pSMB
->
ResumeFileName
[
name_len
+
1
]
=
0
;
}
else
{
rc
=
-
EINVAL
;
goto
FNext2_err_exit
;
...
...
fs/cifs/misc.c
浏览文件 @
f7001e8f
...
...
@@ -611,6 +611,7 @@ cifsConvertToUCS(__le16 * target, const char *source, int maxlen,
src_char
=
source
[
i
];
switch
(
src_char
)
{
case
0
:
target
[
j
]
=
0
;
goto
ctoUCS_out
;
case
':'
:
target
[
j
]
=
cpu_to_le16
(
UNI_COLON
);
...
...
fs/inotify.c
浏览文件 @
f7001e8f
...
...
@@ -402,7 +402,7 @@ static struct inotify_watch *create_watch(struct inotify_device *dev,
return
ERR_PTR
(
ret
);
}
dev
->
last_wd
=
ret
;
dev
->
last_wd
=
watch
->
wd
;
watch
->
mask
=
mask
;
atomic_set
(
&
watch
->
count
,
0
);
INIT_LIST_HEAD
(
&
watch
->
d_list
);
...
...
fs/namei.c
浏览文件 @
f7001e8f
...
...
@@ -2216,7 +2216,8 @@ int vfs_rename(struct inode *old_dir, struct dentry *old_dentry,
error
=
vfs_rename_other
(
old_dir
,
old_dentry
,
new_dir
,
new_dentry
);
if
(
!
error
)
{
const
char
*
new_name
=
old_dentry
->
d_name
.
name
;
fsnotify_move
(
old_dir
,
new_dir
,
old_name
,
new_name
,
is_dir
,
new_dentry
->
d_inode
);
fsnotify_move
(
old_dir
,
new_dir
,
old_name
,
new_name
,
is_dir
,
new_dentry
->
d_inode
,
old_dentry
->
d_inode
);
}
fsnotify_oldname_free
(
old_name
);
...
...
fs/nfs/inode.c
浏览文件 @
f7001e8f
...
...
@@ -814,28 +814,39 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr)
nfs_wb_all
(
inode
);
}
error
=
NFS_PROTO
(
inode
)
->
setattr
(
dentry
,
&
fattr
,
attr
);
if
(
error
==
0
)
{
if
(
error
==
0
)
nfs_refresh_inode
(
inode
,
&
fattr
);
nfs_end_data_update
(
inode
);
unlock_kernel
();
return
error
;
}
/**
* nfs_setattr_update_inode - Update inode metadata after a setattr call.
* @inode: pointer to struct inode
* @attr: pointer to struct iattr
*
* Note: we do this in the *proc.c in order to ensure that
* it works for things like exclusive creates too.
*/
void
nfs_setattr_update_inode
(
struct
inode
*
inode
,
struct
iattr
*
attr
)
{
if
((
attr
->
ia_valid
&
(
ATTR_MODE
|
ATTR_UID
|
ATTR_GID
))
!=
0
)
{
if
((
attr
->
ia_valid
&
ATTR_MODE
)
!=
0
)
{
int
mode
;
mode
=
inode
->
i_mode
&
~
S_IALLUGO
;
mode
|=
attr
->
ia_mode
&
S_IALLUGO
;
int
mode
=
attr
->
ia_mode
&
S_IALLUGO
;
mode
|=
inode
->
i_mode
&
~
S_IALLUGO
;
inode
->
i_mode
=
mode
;
}
if
((
attr
->
ia_valid
&
ATTR_UID
)
!=
0
)
inode
->
i_uid
=
attr
->
ia_uid
;
if
((
attr
->
ia_valid
&
ATTR_GID
)
!=
0
)
inode
->
i_gid
=
attr
->
ia_gid
;
if
((
attr
->
ia_valid
&
ATTR_SIZE
)
!=
0
)
{
inode
->
i_size
=
attr
->
ia_size
;
vmtruncate
(
inode
,
attr
->
ia_size
);
}
}
if
((
attr
->
ia_valid
&
(
ATTR_MODE
|
ATTR_UID
|
ATTR_GID
))
!=
0
)
NFS_FLAGS
(
inode
)
|=
NFS_INO_INVALID_ACCESS
|
NFS_INO_INVALID_ACL
;
nfs_end_data_update
(
inode
);
unlock_kernel
();
return
error
;
}
if
((
attr
->
ia_valid
&
ATTR_SIZE
)
!=
0
)
{
inode
->
i_size
=
attr
->
ia_size
;
vmtruncate
(
inode
,
attr
->
ia_size
);
}
}
/*
...
...
fs/nfs/nfs3proc.c
浏览文件 @
f7001e8f
...
...
@@ -120,6 +120,8 @@ nfs3_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
dprintk
(
"NFS call setattr
\n
"
);
fattr
->
valid
=
0
;
status
=
rpc_call
(
NFS_CLIENT
(
inode
),
NFS3PROC_SETATTR
,
&
arg
,
fattr
,
0
);
if
(
status
==
0
)
nfs_setattr_update_inode
(
inode
,
sattr
);
dprintk
(
"NFS reply setattr: %d
\n
"
,
status
);
return
status
;
}
...
...
@@ -370,6 +372,8 @@ nfs3_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
* not sure this buys us anything (and I'd have
* to revamp the NFSv3 XDR code) */
status
=
nfs3_proc_setattr
(
dentry
,
&
fattr
,
sattr
);
if
(
status
==
0
)
nfs_setattr_update_inode
(
dentry
->
d_inode
,
sattr
);
nfs_refresh_inode
(
dentry
->
d_inode
,
&
fattr
);
dprintk
(
"NFS reply setattr (post-create): %d
\n
"
,
status
);
}
...
...
fs/nfs/nfs4proc.c
浏览文件 @
f7001e8f
...
...
@@ -753,6 +753,7 @@ static int _nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr,
.
rpc_argp
=
&
arg
,
.
rpc_resp
=
&
res
,
};
int
status
;
fattr
->
valid
=
0
;
...
...
@@ -762,7 +763,8 @@ static int _nfs4_do_setattr(struct nfs_server *server, struct nfs_fattr *fattr,
}
else
memcpy
(
&
arg
.
stateid
,
&
zero_stateid
,
sizeof
(
arg
.
stateid
));
return
rpc_call_sync
(
server
->
client
,
&
msg
,
0
);
status
=
rpc_call_sync
(
server
->
client
,
&
msg
,
0
);
return
status
;
}
static
int
nfs4_do_setattr
(
struct
nfs_server
*
server
,
struct
nfs_fattr
*
fattr
,
...
...
@@ -1145,6 +1147,8 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
status
=
nfs4_do_setattr
(
NFS_SERVER
(
inode
),
fattr
,
NFS_FH
(
inode
),
sattr
,
state
);
if
(
status
==
0
)
nfs_setattr_update_inode
(
inode
,
sattr
);
if
(
state
!=
NULL
)
nfs4_close_state
(
state
,
FMODE_WRITE
);
put_rpccred
(
cred
);
...
...
@@ -1449,8 +1453,10 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
struct
nfs_fattr
fattr
;
status
=
nfs4_do_setattr
(
NFS_SERVER
(
dir
),
&
fattr
,
NFS_FH
(
state
->
inode
),
sattr
,
state
);
if
(
status
==
0
)
if
(
status
==
0
)
{
nfs_setattr_update_inode
(
state
->
inode
,
sattr
);
goto
out
;
}
}
else
if
(
flags
!=
0
)
goto
out
;
nfs4_close_state
(
state
,
flags
);
...
...
fs/nfs/proc.c
浏览文件 @
f7001e8f
...
...
@@ -114,6 +114,8 @@ nfs_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
dprintk
(
"NFS call setattr
\n
"
);
fattr
->
valid
=
0
;
status
=
rpc_call
(
NFS_CLIENT
(
inode
),
NFSPROC_SETATTR
,
&
arg
,
fattr
,
0
);
if
(
status
==
0
)
nfs_setattr_update_inode
(
inode
,
sattr
);
dprintk
(
"NFS reply setattr: %d
\n
"
,
status
);
return
status
;
}
...
...
fs/nfs_common/nfsacl.c
浏览文件 @
f7001e8f
...
...
@@ -239,6 +239,7 @@ nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt,
if
(
xdr_decode_word
(
buf
,
base
,
&
entries
)
||
entries
>
NFS_ACL_MAX_ENTRIES
)
return
-
EINVAL
;
nfsacl_desc
.
desc
.
array_maxlen
=
entries
;
err
=
xdr_decode_array2
(
buf
,
base
+
4
,
&
nfsacl_desc
.
desc
);
if
(
err
)
return
err
;
...
...
fs/ntfs/ChangeLog
浏览文件 @
f7001e8f
...
...
@@ -174,6 +174,9 @@ ToDo/Notes:
fact that the vfs and ntfs inodes are one struct in memory to find
the ntfs inode in memory if present. Also, the ntfs inode has its
own locking so it does not matter if the vfs inode is locked.
- Fix bug in mft record writing where we forgot to set the device in
the buffers when mapping them after the VM had discarded them
Thanks to Martin MOKREJŠ for the bug report.
2.1.22 - Many bug and race fixes and error handling improvements.
...
...
fs/ntfs/mft.c
浏览文件 @
f7001e8f
...
...
@@ -533,6 +533,7 @@ int ntfs_sync_mft_mirror(ntfs_volume *vol, const unsigned long mft_no,
LCN
lcn
;
unsigned
int
vcn_ofs
;
bh
->
b_bdev
=
vol
->
sb
->
s_bdev
;
/* Obtain the vcn and offset of the current block. */
vcn
=
((
VCN
)
mft_no
<<
vol
->
mft_record_size_bits
)
+
(
block_start
-
m_start
);
...
...
@@ -725,6 +726,7 @@ int write_mft_record_nolock(ntfs_inode *ni, MFT_RECORD *m, int sync)
LCN
lcn
;
unsigned
int
vcn_ofs
;
bh
->
b_bdev
=
vol
->
sb
->
s_bdev
;
/* Obtain the vcn and offset of the current block. */
vcn
=
((
VCN
)
ni
->
mft_no
<<
vol
->
mft_record_size_bits
)
+
(
block_start
-
m_start
);
...
...
fs/reiserfs/namei.c
浏览文件 @
f7001e8f
...
...
@@ -593,6 +593,9 @@ static int new_inode_init(struct inode *inode, struct inode *dir, int mode)
*/
inode
->
i_uid
=
current
->
fsuid
;
inode
->
i_mode
=
mode
;
/* Make inode invalid - just in case we are going to drop it before
* the initialization happens */
INODE_PKEY
(
inode
)
->
k_objectid
=
0
;
if
(
dir
->
i_mode
&
S_ISGID
)
{
inode
->
i_gid
=
dir
->
i_gid
;
...
...
include/asm-i386/pci.h
浏览文件 @
f7001e8f
...
...
@@ -18,9 +18,11 @@ extern unsigned int pcibios_assign_all_busses(void);
#define pcibios_scan_all_fns(a, b) 0
extern
unsigned
long
pci_mem_start
;
#define PCIBIOS_MIN_IO 0x
4
000
#define PCIBIOS_MIN_IO 0x
1
000
#define PCIBIOS_MIN_MEM (pci_mem_start)
#define PCIBIOS_MIN_CARDBUS_IO 0x4000
void
pcibios_config_init
(
void
);
struct
pci_bus
*
pcibios_scan_root
(
int
bus
);
...
...
include/asm-sh/unistd.h
浏览文件 @
f7001e8f
...
...
@@ -406,7 +406,7 @@ register long __sc6 __asm__ ("r6") = (long) arg3; \
register long __sc7 __asm__ ("r7") = (long) arg4; \
register long __sc0 __asm__ ("r0") = (long) arg5; \
register long __sc1 __asm__ ("r1") = (long) arg6; \
__asm__ __volatile__ ("trapa #0x1
5
" \
__asm__ __volatile__ ("trapa #0x1
6
" \
: "=z" (__sc0) \
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
"r" (__sc3), "r" (__sc1) \
...
...
include/asm-um/page.h
浏览文件 @
f7001e8f
...
...
@@ -104,8 +104,8 @@ extern void *to_virt(unsigned long phys);
* casting is the right thing, but 32-bit UML can't have 64-bit virtual
* addresses
*/
#define __pa(virt) to_phys((void *) (unsigned long)
virt
)
#define __va(phys) to_virt((unsigned long)
phys
)
#define __pa(virt) to_phys((void *) (unsigned long)
(virt)
)
#define __va(phys) to_virt((unsigned long)
(phys)
)
#define page_to_pfn(page) ((page) - mem_map)
#define pfn_to_page(pfn) (mem_map + (pfn))
...
...
include/asm-x86_64/pci.h
浏览文件 @
f7001e8f
...
...
@@ -22,9 +22,11 @@ extern unsigned int pcibios_assign_all_busses(void);
extern
int
no_iommu
,
force_iommu
;
extern
unsigned
long
pci_mem_start
;
#define PCIBIOS_MIN_IO 0x
4
000
#define PCIBIOS_MIN_IO 0x
1
000
#define PCIBIOS_MIN_MEM (pci_mem_start)
#define PCIBIOS_MIN_CARDBUS_IO 0x4000
void
pcibios_config_init
(
void
);
struct
pci_bus
*
pcibios_scan_root
(
int
bus
);
extern
int
(
*
pci_config_read
)(
int
seg
,
int
bus
,
int
dev
,
int
fn
,
int
reg
,
int
len
,
u32
*
value
);
...
...
include/linux/fsnotify.h
浏览文件 @
f7001e8f
...
...
@@ -21,7 +21,7 @@
*/
static
inline
void
fsnotify_move
(
struct
inode
*
old_dir
,
struct
inode
*
new_dir
,
const
char
*
old_name
,
const
char
*
new_name
,
int
isdir
,
struct
inode
*
target
)
int
isdir
,
struct
inode
*
target
,
struct
inode
*
source
)
{
u32
cookie
=
inotify_get_cookie
();
...
...
@@ -41,6 +41,10 @@ static inline void fsnotify_move(struct inode *old_dir, struct inode *new_dir,
inotify_inode_queue_event
(
target
,
IN_DELETE_SELF
,
0
,
NULL
);
inotify_inode_is_dead
(
target
);
}
if
(
source
)
{
inotify_inode_queue_event
(
source
,
IN_MOVE_SELF
,
0
,
NULL
);
}
}
/*
...
...
include/linux/inotify.h
浏览文件 @
f7001e8f
...
...
@@ -35,6 +35,7 @@ struct inotify_event {
#define IN_CREATE 0x00000100
/* Subfile was created */
#define IN_DELETE 0x00000200
/* Subfile was deleted */
#define IN_DELETE_SELF 0x00000400
/* Self was deleted */
#define IN_MOVE_SELF 0x00000800
/* Self was moved */
/* the following are legal events. they are sent as needed to any watch */
#define IN_UNMOUNT 0x00002000
/* Backing fs was unmounted */
...
...
@@ -56,7 +57,8 @@ struct inotify_event {
*/
#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF)
IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
IN_MOVE_SELF)
#ifdef __KERNEL__
...
...
include/linux/nfs_fs.h
浏览文件 @
f7001e8f
...
...
@@ -292,6 +292,7 @@ extern int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode);
extern
int
__nfs_revalidate_inode
(
struct
nfs_server
*
,
struct
inode
*
);
extern
void
nfs_revalidate_mapping
(
struct
inode
*
inode
,
struct
address_space
*
mapping
);
extern
int
nfs_setattr
(
struct
dentry
*
,
struct
iattr
*
);
extern
void
nfs_setattr_update_inode
(
struct
inode
*
inode
,
struct
iattr
*
attr
);
extern
void
nfs_begin_attr_update
(
struct
inode
*
);
extern
void
nfs_end_attr_update
(
struct
inode
*
);
extern
void
nfs_begin_data_update
(
struct
inode
*
);
...
...
include/linux/sunrpc/xdr.h
浏览文件 @
f7001e8f
...
...
@@ -177,6 +177,7 @@ typedef int (*xdr_xcode_elem_t)(struct xdr_array2_desc *desc, void *elem);
struct
xdr_array2_desc
{
unsigned
int
elem_size
;
unsigned
int
array_len
;
unsigned
int
array_maxlen
;
xdr_xcode_elem_t
xcode
;
};
...
...
net/sunrpc/xdr.c
浏览文件 @
f7001e8f
...
...
@@ -993,6 +993,7 @@ xdr_xcode_array2(struct xdr_buf *buf, unsigned int base,
return
-
EINVAL
;
}
else
{
if
(
xdr_decode_word
(
buf
,
base
,
&
desc
->
array_len
)
!=
0
||
desc
->
array_len
>
desc
->
array_maxlen
||
(
unsigned
long
)
base
+
4
+
desc
->
array_len
*
desc
->
elem_size
>
buf
->
len
)
return
-
EINVAL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录