Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
6889e783
Commit
6889e783
authored
Oct 13, 2014
by
Dave Chinner
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'xfs-misc-fixes-for-3.18-3' into for-next
parents
75e58ce4
a8b1ee8b
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
57 additions
and
61 deletions
+57
-61
fs/xfs/kmem.c
fs/xfs/kmem.c
+0
-1
fs/xfs/libxfs/xfs_da_btree.c
fs/xfs/libxfs/xfs_da_btree.c
+2
-1
fs/xfs/libxfs/xfs_sb.c
fs/xfs/libxfs/xfs_sb.c
+5
-0
fs/xfs/time.h
fs/xfs/time.h
+0
-36
fs/xfs/xfs_aops.c
fs/xfs/xfs_aops.c
+7
-0
fs/xfs/xfs_bmap_util.c
fs/xfs/xfs_bmap_util.c
+7
-7
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.c
+4
-4
fs/xfs/xfs_inode.h
fs/xfs/xfs_inode.h
+1
-1
fs/xfs/xfs_inode_item.c
fs/xfs/xfs_inode_item.c
+1
-1
fs/xfs/xfs_ioctl.c
fs/xfs/xfs_ioctl.c
+16
-4
fs/xfs/xfs_ioctl32.c
fs/xfs/xfs_ioctl32.c
+2
-0
fs/xfs/xfs_ioctl32.h
fs/xfs/xfs_ioctl32.h
+2
-1
fs/xfs/xfs_iomap.c
fs/xfs/xfs_iomap.c
+2
-2
fs/xfs/xfs_itable.c
fs/xfs/xfs_itable.c
+2
-1
fs/xfs/xfs_linux.h
fs/xfs/xfs_linux.h
+5
-1
fs/xfs/xfs_trans_inode.c
fs/xfs/xfs_trans_inode.c
+1
-1
No files found.
fs/xfs/kmem.c
View file @
6889e783
...
...
@@ -21,7 +21,6 @@
#include <linux/swap.h>
#include <linux/blkdev.h>
#include <linux/backing-dev.h>
#include "time.h"
#include "kmem.h"
#include "xfs_message.h"
...
...
fs/xfs/libxfs/xfs_da_btree.c
View file @
6889e783
...
...
@@ -2563,6 +2563,7 @@ xfs_da_get_buf(
mapp
,
nmap
,
0
);
error
=
bp
?
bp
->
b_error
:
-
EIO
;
if
(
error
)
{
if
(
bp
)
xfs_trans_brelse
(
trans
,
bp
);
goto
out_free
;
}
...
...
fs/xfs/libxfs/xfs_sb.c
View file @
6889e783
...
...
@@ -445,6 +445,8 @@ __xfs_sb_from_disk(
to
->
sb_features_incompat
=
be32_to_cpu
(
from
->
sb_features_incompat
);
to
->
sb_features_log_incompat
=
be32_to_cpu
(
from
->
sb_features_log_incompat
);
/* crc is only used on disk, not in memory; just init to 0 here. */
to
->
sb_crc
=
0
;
to
->
sb_pad
=
0
;
to
->
sb_pquotino
=
be64_to_cpu
(
from
->
sb_pquotino
);
to
->
sb_lsn
=
be64_to_cpu
(
from
->
sb_lsn
);
...
...
@@ -550,6 +552,9 @@ xfs_sb_to_disk(
if
(
!
fields
)
return
;
/* We should never write the crc here, it's updated in the IO path */
fields
&=
~
XFS_SB_CRC
;
xfs_sb_quota_to_disk
(
to
,
from
,
&
fields
);
while
(
fields
)
{
f
=
(
xfs_sb_field_t
)
xfs_lowbit64
((
__uint64_t
)
fields
);
...
...
fs/xfs/time.h
deleted
100644 → 0
View file @
75e58ce4
/*
* Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
* All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it would be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __XFS_SUPPORT_TIME_H__
#define __XFS_SUPPORT_TIME_H__
#include <linux/sched.h>
#include <linux/time.h>
typedef
struct
timespec
timespec_t
;
static
inline
void
delay
(
long
ticks
)
{
schedule_timeout_uninterruptible
(
ticks
);
}
static
inline
void
nanotime
(
struct
timespec
*
tvp
)
{
*
tvp
=
CURRENT_TIME
;
}
#endif
/* __XFS_SUPPORT_TIME_H__ */
fs/xfs/xfs_aops.c
View file @
6889e783
...
...
@@ -560,6 +560,13 @@ xfs_cancel_ioend(
do
{
next_bh
=
bh
->
b_private
;
clear_buffer_async_write
(
bh
);
/*
* The unwritten flag is cleared when added to the
* ioend. We're not submitting for I/O so mark the
* buffer unwritten again for next time around.
*/
if
(
ioend
->
io_type
==
XFS_IO_UNWRITTEN
)
set_buffer_unwritten
(
bh
);
unlock_buffer
(
bh
);
}
while
((
bh
=
next_bh
)
!=
NULL
);
...
...
fs/xfs/xfs_bmap_util.c
View file @
6889e783
...
...
@@ -1368,14 +1368,14 @@ xfs_zero_file_space(
if
(
start_boundary
<
end_boundary
-
1
)
{
/*
* punch out delayed allocation blocks and the page cache over
* the conversion range
* Writeback the range to ensure any inode size updates due to
* appending writes make it to disk (otherwise we could just
* punch out the delalloc blocks).
*/
xfs_ilock
(
ip
,
XFS_ILOCK_EXCL
);
error
=
xfs_bmap_punch_delalloc_range
(
ip
,
XFS_B_TO_FSBT
(
mp
,
start_boundary
),
XFS_B_TO_FSB
(
mp
,
end_boundary
-
start_boundary
));
xfs_iunlock
(
ip
,
XFS_ILOCK_EXCL
);
error
=
filemap_write_and_wait_range
(
VFS_I
(
ip
)
->
i_mapping
,
start_boundary
,
end_boundary
-
1
);
if
(
error
)
goto
out
;
truncate_pagecache_range
(
VFS_I
(
ip
),
start_boundary
,
end_boundary
-
1
);
...
...
fs/xfs/xfs_inode.c
View file @
6889e783
...
...
@@ -654,7 +654,7 @@ xfs_ialloc(
xfs_inode_t
*
ip
;
uint
flags
;
int
error
;
timespec_t
tv
;
struct
timespec
tv
;
/*
* Call the space management code to pick
...
...
@@ -720,7 +720,7 @@ xfs_ialloc(
ip
->
i_d
.
di_nextents
=
0
;
ASSERT
(
ip
->
i_d
.
di_nblocks
==
0
);
nanotime
(
&
tv
);
tv
=
current_fs_time
(
mp
->
m_super
);
ip
->
i_d
.
di_mtime
.
t_sec
=
(
__int32_t
)
tv
.
tv_sec
;
ip
->
i_d
.
di_mtime
.
t_nsec
=
(
__int32_t
)
tv
.
tv_nsec
;
ip
->
i_d
.
di_atime
=
ip
->
i_d
.
di_mtime
;
...
...
@@ -769,6 +769,8 @@ xfs_ialloc(
di_flags
|=
XFS_DIFLAG_EXTSZINHERIT
;
ip
->
i_d
.
di_extsize
=
pip
->
i_d
.
di_extsize
;
}
if
(
pip
->
i_d
.
di_flags
&
XFS_DIFLAG_PROJINHERIT
)
di_flags
|=
XFS_DIFLAG_PROJINHERIT
;
}
else
if
(
S_ISREG
(
mode
))
{
if
(
pip
->
i_d
.
di_flags
&
XFS_DIFLAG_RTINHERIT
)
di_flags
|=
XFS_DIFLAG_REALTIME
;
...
...
@@ -789,8 +791,6 @@ xfs_ialloc(
if
((
pip
->
i_d
.
di_flags
&
XFS_DIFLAG_NOSYMLINKS
)
&&
xfs_inherit_nosymlinks
)
di_flags
|=
XFS_DIFLAG_NOSYMLINKS
;
if
(
pip
->
i_d
.
di_flags
&
XFS_DIFLAG_PROJINHERIT
)
di_flags
|=
XFS_DIFLAG_PROJINHERIT
;
if
((
pip
->
i_d
.
di_flags
&
XFS_DIFLAG_NODEFRAG
)
&&
xfs_inherit_nodefrag
)
di_flags
|=
XFS_DIFLAG_NODEFRAG
;
...
...
fs/xfs/xfs_inode.h
View file @
6889e783
...
...
@@ -102,7 +102,7 @@ xfs_new_eof(struct xfs_inode *ip, xfs_fsize_t new_size)
{
xfs_fsize_t
i_size
=
i_size_read
(
VFS_I
(
ip
));
if
(
new_size
>
i_size
)
if
(
new_size
>
i_size
||
new_size
<
0
)
new_size
=
i_size
;
return
new_size
>
ip
->
i_d
.
di_size
?
new_size
:
0
;
}
...
...
fs/xfs/xfs_inode_item.c
View file @
6889e783
...
...
@@ -615,7 +615,7 @@ xfs_iflush_done(
blip
=
bp
->
b_fspriv
;
prev
=
NULL
;
while
(
blip
!=
NULL
)
{
if
(
lip
->
li_cb
!=
xfs_iflush_done
)
{
if
(
b
lip
->
li_cb
!=
xfs_iflush_done
)
{
prev
=
blip
;
blip
=
blip
->
li_bio_list
;
continue
;
...
...
fs/xfs/xfs_ioctl.c
View file @
6889e783
...
...
@@ -968,8 +968,6 @@ xfs_set_diflags(
di_flags
|=
XFS_DIFLAG_NOATIME
;
if
(
xflags
&
XFS_XFLAG_NODUMP
)
di_flags
|=
XFS_DIFLAG_NODUMP
;
if
(
xflags
&
XFS_XFLAG_PROJINHERIT
)
di_flags
|=
XFS_DIFLAG_PROJINHERIT
;
if
(
xflags
&
XFS_XFLAG_NODEFRAG
)
di_flags
|=
XFS_DIFLAG_NODEFRAG
;
if
(
xflags
&
XFS_XFLAG_FILESTREAM
)
...
...
@@ -981,6 +979,8 @@ xfs_set_diflags(
di_flags
|=
XFS_DIFLAG_NOSYMLINKS
;
if
(
xflags
&
XFS_XFLAG_EXTSZINHERIT
)
di_flags
|=
XFS_DIFLAG_EXTSZINHERIT
;
if
(
xflags
&
XFS_XFLAG_PROJINHERIT
)
di_flags
|=
XFS_DIFLAG_PROJINHERIT
;
}
else
if
(
S_ISREG
(
ip
->
i_d
.
di_mode
))
{
if
(
xflags
&
XFS_XFLAG_REALTIME
)
di_flags
|=
XFS_DIFLAG_REALTIME
;
...
...
@@ -1231,13 +1231,25 @@ xfs_ioctl_setattr(
}
if
(
mask
&
FSX_EXTSIZE
)
ip
->
i_d
.
di_extsize
=
fa
->
fsx_extsize
>>
mp
->
m_sb
.
sb_blocklog
;
if
(
mask
&
FSX_XFLAGS
)
{
xfs_set_diflags
(
ip
,
fa
->
fsx_xflags
);
xfs_diflags_to_linux
(
ip
);
}
/*
* Only set the extent size hint if we've already determined that the
* extent size hint should be set on the inode. If no extent size flags
* are set on the inode then unconditionally clear the extent size hint.
*/
if
(
mask
&
FSX_EXTSIZE
)
{
int
extsize
=
0
;
if
(
ip
->
i_d
.
di_flags
&
(
XFS_DIFLAG_EXTSIZE
|
XFS_DIFLAG_EXTSZINHERIT
))
extsize
=
fa
->
fsx_extsize
>>
mp
->
m_sb
.
sb_blocklog
;
ip
->
i_d
.
di_extsize
=
extsize
;
}
xfs_trans_ichgtime
(
tp
,
ip
,
XFS_ICHGTIME_CHG
);
xfs_trans_log_inode
(
tp
,
ip
,
XFS_ILOG_CORE
);
...
...
fs/xfs/xfs_ioctl32.c
View file @
6889e783
...
...
@@ -160,6 +160,7 @@ xfs_ioctl32_bstat_copyin(
get_user
(
bstat
->
bs_gen
,
&
bstat32
->
bs_gen
)
||
get_user
(
bstat
->
bs_projid_lo
,
&
bstat32
->
bs_projid_lo
)
||
get_user
(
bstat
->
bs_projid_hi
,
&
bstat32
->
bs_projid_hi
)
||
get_user
(
bstat
->
bs_forkoff
,
&
bstat32
->
bs_forkoff
)
||
get_user
(
bstat
->
bs_dmevmask
,
&
bstat32
->
bs_dmevmask
)
||
get_user
(
bstat
->
bs_dmstate
,
&
bstat32
->
bs_dmstate
)
||
get_user
(
bstat
->
bs_aextents
,
&
bstat32
->
bs_aextents
))
...
...
@@ -214,6 +215,7 @@ xfs_bulkstat_one_fmt_compat(
put_user
(
buffer
->
bs_gen
,
&
p32
->
bs_gen
)
||
put_user
(
buffer
->
bs_projid
,
&
p32
->
bs_projid
)
||
put_user
(
buffer
->
bs_projid_hi
,
&
p32
->
bs_projid_hi
)
||
put_user
(
buffer
->
bs_forkoff
,
&
p32
->
bs_forkoff
)
||
put_user
(
buffer
->
bs_dmevmask
,
&
p32
->
bs_dmevmask
)
||
put_user
(
buffer
->
bs_dmstate
,
&
p32
->
bs_dmstate
)
||
put_user
(
buffer
->
bs_aextents
,
&
p32
->
bs_aextents
))
...
...
fs/xfs/xfs_ioctl32.h
View file @
6889e783
...
...
@@ -67,8 +67,9 @@ typedef struct compat_xfs_bstat {
__u32
bs_gen
;
/* generation count */
__u16
bs_projid_lo
;
/* lower part of project id */
#define bs_projid bs_projid_lo
/* (previously just bs_projid) */
__u16
bs_forkoff
;
/* inode fork offset in bytes */
__u16
bs_projid_hi
;
/* high part of project id */
unsigned
char
bs_pad
[
1
2
];
/* pad space, unused */
unsigned
char
bs_pad
[
1
0
];
/* pad space, unused */
__u32
bs_dmevmask
;
/* DMIG event mask */
__u16
bs_dmstate
;
/* DMIG state info */
__u16
bs_aextents
;
/* attribute number of extents */
...
...
fs/xfs/xfs_iomap.c
View file @
6889e783
...
...
@@ -404,8 +404,8 @@ xfs_quota_calc_throttle(
int
shift
=
0
;
struct
xfs_dquot
*
dq
=
xfs_inode_dquot
(
ip
,
type
);
/* over hi wmark, squash the prealloc completely */
if
(
dq
->
q_res_bcount
>=
dq
->
q_prealloc_hi_wmark
)
{
/*
no dq, or
over hi wmark, squash the prealloc completely */
if
(
!
dq
||
dq
->
q_res_bcount
>=
dq
->
q_prealloc_hi_wmark
)
{
*
qblocks
=
0
;
*
qfreesp
=
0
;
return
;
...
...
fs/xfs/xfs_itable.c
View file @
6889e783
...
...
@@ -639,7 +639,8 @@ xfs_inumbers(
xfs_buf_relse
(
agbp
);
agbp
=
NULL
;
agino
=
0
;
}
while
(
++
agno
<
mp
->
m_sb
.
sb_agcount
);
agno
++
;
}
while
(
agno
<
mp
->
m_sb
.
sb_agcount
);
if
(
!
error
)
{
if
(
bufidx
)
{
...
...
fs/xfs/xfs_linux.h
View file @
6889e783
...
...
@@ -56,7 +56,6 @@ typedef __uint64_t __psunsigned_t;
#include "kmem.h"
#include "mrlock.h"
#include "time.h"
#include "uuid.h"
#include <linux/semaphore.h>
...
...
@@ -179,6 +178,11 @@ typedef __uint64_t __psunsigned_t;
#define MAX(a,b) (max(a,b))
#define howmany(x, y) (((x)+((y)-1))/(y))
static
inline
void
delay
(
long
ticks
)
{
schedule_timeout_uninterruptible
(
ticks
);
}
/*
* XFS wrapper structure for sysfs support. It depends on external data
* structures and is embedded in various internal data structures to implement
...
...
fs/xfs/xfs_trans_inode.c
View file @
6889e783
...
...
@@ -70,7 +70,7 @@ xfs_trans_ichgtime(
int
flags
)
{
struct
inode
*
inode
=
VFS_I
(
ip
);
timespec_t
tv
;
struct
timespec
tv
;
ASSERT
(
tp
);
ASSERT
(
xfs_isilocked
(
ip
,
XFS_ILOCK_EXCL
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment