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
e818fc95
Commit
e818fc95
authored
Sep 29, 2003
by
Stephen Lord
Browse files
Options
Browse Files
Download
Plain Diff
Merge kernel.bkbits.net:/home/repos/linux-2.5
into kernel.bkbits.net:/home/lord/xfs-2.6
parents
57daa604
41dd117c
Changes
25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
85 additions
and
295 deletions
+85
-295
fs/xfs/linux/xfs_super.c
fs/xfs/linux/xfs_super.c
+2
-2
fs/xfs/linux/xfs_vnode.h
fs/xfs/linux/xfs_vnode.h
+0
-1
fs/xfs/pagebuf/page_buf.h
fs/xfs/pagebuf/page_buf.h
+0
-3
fs/xfs/quota/xfs_dquot.c
fs/xfs/quota/xfs_dquot.c
+4
-4
fs/xfs/xfs_attr_fetch.c
fs/xfs/xfs_attr_fetch.c
+0
-100
fs/xfs/xfs_buf.h
fs/xfs/xfs_buf.h
+4
-1
fs/xfs/xfs_buf_item.c
fs/xfs/xfs_buf_item.c
+4
-4
fs/xfs/xfs_da_btree.c
fs/xfs/xfs_da_btree.c
+2
-2
fs/xfs/xfs_da_btree.h
fs/xfs/xfs_da_btree.h
+1
-1
fs/xfs/xfs_error.c
fs/xfs/xfs_error.c
+2
-1
fs/xfs/xfs_error.h
fs/xfs/xfs_error.h
+2
-2
fs/xfs/xfs_inode.c
fs/xfs/xfs_inode.c
+3
-2
fs/xfs/xfs_log.c
fs/xfs/xfs_log.c
+21
-22
fs/xfs/xfs_log.h
fs/xfs/xfs_log.h
+4
-4
fs/xfs/xfs_log_priv.h
fs/xfs/xfs_log_priv.h
+1
-1
fs/xfs/xfs_log_recover.c
fs/xfs/xfs_log_recover.c
+5
-8
fs/xfs/xfs_mount.c
fs/xfs/xfs_mount.c
+4
-4
fs/xfs/xfs_mount.h
fs/xfs/xfs_mount.h
+3
-3
fs/xfs/xfs_rw.c
fs/xfs/xfs_rw.c
+2
-3
fs/xfs/xfs_trans.h
fs/xfs/xfs_trans.h
+0
-1
fs/xfs/xfs_trans_buf.c
fs/xfs/xfs_trans_buf.c
+3
-3
fs/xfs/xfs_trans_inode.c
fs/xfs/xfs_trans_inode.c
+0
-100
fs/xfs/xfs_vfsops.c
fs/xfs/xfs_vfsops.c
+4
-6
fs/xfs/xfs_vnodeops.c
fs/xfs/xfs_vnodeops.c
+1
-2
fs/xfs/xfsidbg.c
fs/xfs/xfsidbg.c
+13
-15
No files found.
fs/xfs/linux/xfs_super.c
View file @
e818fc95
...
...
@@ -315,8 +315,8 @@ xfs_setsize_buftarg(
if
(
set_blocksize
(
btp
->
pbr_bdev
,
sectorsize
))
{
printk
(
KERN_WARNING
"XFS: Cannot set_blocksize to %u on device %
u:%u
\n
"
,
sectorsize
,
MAJOR
(
btp
->
pbr_dev
),
MINOR
(
btp
->
pbr_dev
));
"XFS: Cannot set_blocksize to %u on device %
s
\n
"
,
sectorsize
,
XFS_BUFTARG_NAME
(
btp
));
}
}
...
...
fs/xfs/linux/xfs_vnode.h
View file @
e818fc95
...
...
@@ -378,7 +378,6 @@ typedef struct vattr {
mode_t
va_mode
;
/* file access mode */
uid_t
va_uid
;
/* owner user id */
gid_t
va_gid
;
/* owner group id */
xfs_dev_t
va_fsid
;
/* file system id (dev for now) */
xfs_ino_t
va_nodeid
;
/* node id */
nlink_t
va_nlink
;
/* number of references to file */
xfs_off_t
va_size
;
/* file size in bytes */
...
...
fs/xfs/pagebuf/page_buf.h
View file @
e818fc95
...
...
@@ -136,9 +136,6 @@ typedef enum page_buf_flags_e { /* pb_flags values */
#define PBF_NOT_DONE(pb) (((pb)->pb_flags & (PBF_PARTIAL|PBF_NONE)) != 0)
#define PBF_DONE(pb) (((pb)->pb_flags & (PBF_PARTIAL|PBF_NONE)) == 0)
#define PBR_SECTOR_ONLY 1
/* only use sector size buffer heads */
#define PBR_ALIGNED_ONLY 2
/* only use aligned I/O */
typedef
struct
pb_target
{
dev_t
pbr_dev
;
struct
block_device
*
pbr_bdev
;
...
...
fs/xfs/quota/xfs_dquot.c
View file @
e818fc95
...
...
@@ -87,9 +87,9 @@
STATIC
void
xfs_qm_dqflush_done
(
xfs_buf_t
*
,
xfs_dq_logitem_t
*
);
#ifdef DEBUG
dev_t
xfs_dqerror_dev
=
0
;
int
xfs_do_dqerror
=
0
;
int
xfs_dqreq_num
=
0
;
xfs_buftarg_t
*
xfs_dqerror_target
;
int
xfs_do_dqerror
;
int
xfs_dqreq_num
;
int
xfs_dqerror_mod
=
33
;
#endif
...
...
@@ -911,7 +911,7 @@ xfs_qm_dqget(
#ifdef DEBUG
if
(
xfs_do_dqerror
)
{
if
((
xfs_dqerror_
dev
==
mp
->
m_dev
)
&&
if
((
xfs_dqerror_
target
==
mp
->
m_ddev_targp
)
&&
(
xfs_dqreq_num
++
%
xfs_dqerror_mod
)
==
0
)
{
cmn_err
(
CE_DEBUG
,
"Returning error in dqget"
);
return
(
EIO
);
...
...
fs/xfs/xfs_attr_fetch.c
deleted
100644 → 0
View file @
57daa604
/*
* Copyright (c) 2000, 2002 Silicon Graphics, Inc. All Rights Reserved.
*
* 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
* 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.
*
* Further, this software is distributed without any warranty that it is
* free of the rightful claim of any third person regarding infringement
* or the like. Any license provided herein, whether implied or
* otherwise, applies only to this software file. Patent licenses, if
* any, provided herein do not apply to combinations of this program with
* other software, or any other product whatsoever.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write the Free Software Foundation, Inc., 59
* Temple Place - Suite 330, Boston MA 02111-1307, USA.
*
* Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
* Mountain View, CA 94043, or:
*
* http://www.sgi.com
*
* For further information regarding this notice, see:
*
* http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
*/
#include "xfs.h"
#include "xfs_macros.h"
#include "xfs_types.h"
#include "xfs_inum.h"
#include "xfs_log.h"
#include "xfs_trans.h"
#include "xfs_sb.h"
#include "xfs_ag.h"
#include "xfs_dir.h"
#include "xfs_dir2.h"
#include "xfs_dmapi.h"
#include "xfs_mount.h"
#include "xfs_alloc_btree.h"
#include "xfs_bmap_btree.h"
#include "xfs_ialloc_btree.h"
#include "xfs_itable.h"
#include "xfs_btree.h"
#include "xfs_ialloc.h"
#include "xfs_alloc.h"
#include "xfs_attr_sf.h"
#include "xfs_dir_sf.h"
#include "xfs_dir2_sf.h"
#include "xfs_dinode.h"
#include "xfs_inode_item.h"
#include "xfs_inode.h"
#include "xfs_bmap.h"
#include "xfs_da_btree.h"
#include "xfs_attr.h"
#include "xfs_attr_leaf.h"
int
xfs_attr_fetch
(
xfs_inode_t
*
ip
,
char
*
name
,
char
*
value
,
int
valuelen
)
{
xfs_da_args_t
args
;
int
error
;
if
(
XFS_IFORK_Q
(
ip
)
==
0
)
return
ENOATTR
;
/*
* Do the argument setup for the xfs_attr routines.
*/
memset
((
char
*
)
&
args
,
0
,
sizeof
(
args
));
args
.
dp
=
ip
;
args
.
flags
=
ATTR_ROOT
;
args
.
whichfork
=
XFS_ATTR_FORK
;
args
.
name
=
name
;
args
.
namelen
=
strlen
(
name
);
args
.
value
=
value
;
args
.
valuelen
=
valuelen
;
args
.
hashval
=
xfs_da_hashname
(
args
.
name
,
args
.
namelen
);
args
.
oknoent
=
1
;
/*
* Decide on what work routines to call based on the inode size.
*/
if
(
args
.
dp
->
i_d
.
di_aformat
==
XFS_DINODE_FMT_LOCAL
)
error
=
xfs_attr_shortform_getvalue
(
&
args
);
else
if
(
xfs_bmap_one_block
(
args
.
dp
,
XFS_ATTR_FORK
))
error
=
xfs_attr_leaf_get
(
&
args
);
else
error
=
xfs_attr_node_get
(
&
args
);
if
(
error
==
EEXIST
)
error
=
0
;
return
(
error
);
}
fs/xfs/xfs_buf.h
View file @
e818fc95
...
...
@@ -194,7 +194,10 @@ extern inline xfs_caddr_t xfs_buf_offset(page_buf_t *bp, size_t offset)
(bp)->pb_target = (target)
#define XFS_BUF_TARGET(bp) ((bp)->pb_target)
#define XFS_BUF_TARGET_DEV(bp) ((bp)->pb_target->pbr_dev)
#define XFS_BUFTARG_NAME(target) \
({ char __b[BDEVNAME_SIZE]; bdevname((target->pbr_bdev), __b); __b; })
#define XFS_BUF_SET_VTYPE_REF(bp, type, ref)
#define XFS_BUF_SET_VTYPE(bp, type)
#define XFS_BUF_SET_REF(bp, ref)
...
...
fs/xfs/xfs_buf_item.c
View file @
e818fc95
...
...
@@ -1007,7 +1007,7 @@ xfs_buf_iodone_callbacks(
{
xfs_log_item_t
*
lip
;
static
ulong
lasttime
;
static
dev_t
lastdev
;
static
xfs_buftarg_t
*
lasttarg
;
xfs_mount_t
*
mp
;
ASSERT
(
XFS_BUF_FSPRIVATE
(
bp
,
void
*
)
!=
NULL
);
...
...
@@ -1045,15 +1045,15 @@ xfs_buf_iodone_callbacks(
return
;
}
if
((
XFS_BUF_TARGET
_DEV
(
bp
)
!=
lastdev
)
||
if
((
XFS_BUF_TARGET
(
bp
)
!=
lasttarg
)
||
(
time_after
(
jiffies
,
(
lasttime
+
5
*
HZ
))))
{
lasttime
=
jiffies
;
prdev
(
"XFS write error in file system meta-data "
"block 0x%Lx in %s"
,
XFS_BUF_TARGET
_DEV
(
bp
),
XFS_BUF_TARGET
(
bp
),
XFS_BUF_ADDR
(
bp
),
mp
->
m_fsname
);
}
last
dev
=
XFS_BUF_TARGET_DEV
(
bp
);
last
targ
=
XFS_BUF_TARGET
(
bp
);
if
(
XFS_BUF_ISASYNC
(
bp
))
{
/*
...
...
fs/xfs/xfs_da_btree.c
View file @
e818fc95
...
...
@@ -2450,7 +2450,7 @@ xfs_da_buf_make(int nbuf, xfs_buf_t **bps, inst_t *ra)
dabuf
->
dirty
=
0
;
#ifdef XFS_DABUF_DEBUG
dabuf
->
ra
=
ra
;
dabuf
->
dev
=
XFS_BUF_TARGET_DEV
(
bps
[
0
]);
dabuf
->
target
=
XFS_BUF_TARGET
(
bps
[
0
]);
dabuf
->
blkno
=
XFS_BUF_ADDR
(
bps
[
0
]);
#endif
if
(
nbuf
==
1
)
{
...
...
@@ -2480,7 +2480,7 @@ xfs_da_buf_make(int nbuf, xfs_buf_t **bps, inst_t *ra)
s
=
mutex_spinlock
(
&
xfs_dabuf_global_lock
);
for
(
p
=
xfs_dabuf_global_list
;
p
;
p
=
p
->
next
)
{
ASSERT
(
p
->
blkno
!=
dabuf
->
blkno
||
p
->
dev
!=
dabuf
->
dev
);
p
->
target
!=
dabuf
->
target
);
}
dabuf
->
prev
=
NULL
;
if
(
xfs_dabuf_global_list
)
...
...
fs/xfs/xfs_da_btree.h
View file @
e818fc95
...
...
@@ -212,7 +212,7 @@ typedef struct xfs_dabuf {
inst_t
*
ra
;
/* return address of caller to make */
struct
xfs_dabuf
*
next
;
/* next in global chain */
struct
xfs_dabuf
*
prev
;
/* previous in global chain */
dev_t
dev
;
/* device for buffer */
struct
xfs_buftarg
*
target
;
/* device for buffer */
xfs_daddr_t
blkno
;
/* daddr first in bps[0] */
#endif
struct
xfs_buf
*
bps
[
1
];
/* actually nbuf of these */
...
...
fs/xfs/xfs_error.c
View file @
e818fc95
...
...
@@ -329,6 +329,7 @@ xfs_corruption_error(
int
linenum
,
inst_t
*
ra
)
{
if
(
level
<=
xfs_error_level
)
xfs_hex_dump
(
p
,
16
);
xfs_error_report
(
tag
,
level
,
mp
,
fname
,
linenum
,
ra
);
}
fs/xfs/xfs_error.h
View file @
e818fc95
...
...
@@ -32,8 +32,8 @@
#ifndef __XFS_ERROR_H__
#define __XFS_ERROR_H__
#define prdev(fmt,
dev
,args...) \
printk("XFS: device %
u:%u- " fmt "\n", MAJOR(dev), MINOR(dev
), ## args)
#define prdev(fmt,
targ
,args...) \
printk("XFS: device %
s- " fmt "\n", XFS_BUFTARG_NAME(targ
), ## args)
#define XFS_ERECOVER 1
/* Failure to recover log */
#define XFS_ELOGSTAT 2
/* Failure to stat log in user space */
...
...
fs/xfs/xfs_inode.c
View file @
e818fc95
...
...
@@ -408,8 +408,9 @@ xfs_itobp(
if
(
unlikely
(
XFS_TEST_ERROR
(
!
di_ok
,
mp
,
XFS_ERRTAG_ITOBP_INOTOBP
,
XFS_RANDOM_ITOBP_INOTOBP
)))
{
#ifdef DEBUG
prdev
(
"bad inode magic/vsn daddr 0x%llx #%d (magic=%x)"
,
mp
->
m_dev
,
(
unsigned
long
long
)
imap
.
im_blkno
,
i
,
prdev
(
"bad inode magic/vsn daddr %lld #%d (magic=%x)"
,
mp
->
m_ddev_targp
,
(
unsigned
long
long
)
imap
.
im_blkno
,
i
,
INT_GET
(
dip
->
di_core
.
di_magic
,
ARCH_CONVERT
));
#endif
XFS_CORRUPTION_ERROR
(
"xfs_itobp"
,
XFS_ERRLEVEL_HIGH
,
...
...
fs/xfs/xfs_log.c
View file @
e818fc95
...
...
@@ -65,7 +65,7 @@ STATIC int xlog_bdstrat_cb(struct xfs_buf *);
STATIC
int
xlog_commit_record
(
xfs_mount_t
*
mp
,
xlog_ticket_t
*
ticket
,
xlog_in_core_t
**
,
xfs_lsn_t
*
);
STATIC
xlog_t
*
xlog_alloc_log
(
xfs_mount_t
*
mp
,
dev_t
log_dev
,
xfs_buftarg_t
*
log_target
,
xfs_daddr_t
blk_offset
,
int
num_bblks
);
STATIC
int
xlog_space_left
(
xlog_t
*
log
,
int
cycle
,
int
bytes
);
...
...
@@ -155,7 +155,7 @@ int xlog_error_mod = 33;
*/
#if defined(XLOG_NOLOG) || defined(DEBUG)
int
xlog_debug
=
1
;
dev_t
xlog_devt
=
0
;
xfs_buftarg_t
*
xlog_target
;
#endif
#if defined(XFS_LOG_TRACE)
...
...
@@ -274,7 +274,7 @@ xfs_log_done(xfs_mount_t *mp,
xfs_lsn_t
lsn
=
0
;
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
return
0
;
#endif
...
...
@@ -339,7 +339,7 @@ xfs_log_force(xfs_mount_t *mp,
xlog_t
*
log
=
mp
->
m_log
;
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
return
0
;
#endif
...
...
@@ -378,7 +378,7 @@ xfs_log_notify(xfs_mount_t *mp, /* mount of partition */
int
abortflg
,
spl
;
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
return
0
;
#endif
cb
->
cb_next
=
0
;
...
...
@@ -436,7 +436,7 @@ xfs_log_reserve(xfs_mount_t *mp,
int
retval
;
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
return
0
;
#endif
retval
=
0
;
...
...
@@ -472,7 +472,7 @@ xfs_log_reserve(xfs_mount_t *mp,
* Mount a log filesystem
*
* mp - ubiquitous xfs mount point structure
* log_
dev - device number
of on-disk log device
* log_
target - buftarg
of on-disk log device
* blk_offset - Start block # where block size is 512 bytes (BBSIZE)
* num_bblocks - Number of BBSIZE blocks in on-disk log
*
...
...
@@ -480,7 +480,7 @@ xfs_log_reserve(xfs_mount_t *mp,
*/
int
xfs_log_mount
(
xfs_mount_t
*
mp
,
dev_t
log_dev
,
xfs_buftarg_t
*
log_target
,
xfs_daddr_t
blk_offset
,
int
num_bblks
)
{
...
...
@@ -493,12 +493,11 @@ xfs_log_mount(xfs_mount_t *mp,
ASSERT
(
XFS_MTOVFS
(
mp
)
->
vfs_flag
&
VFS_RDONLY
);
}
mp
->
m_log
=
xlog_alloc_log
(
mp
,
log_
dev
,
blk_offset
,
num_bblks
);
mp
->
m_log
=
xlog_alloc_log
(
mp
,
log_
target
,
blk_offset
,
num_bblks
);
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
)
{
cmn_err
(
CE_NOTE
,
"log dev: %u:%u"
,
MAJOR
(
log_dev
),
MINOR
(
log_dev
));
if
(
!
xlog_debug
)
{
cmn_err
(
CE_NOTE
,
"log dev: %s"
,
XFS_BUFTARG_NAME
(
log_target
));
return
0
;
}
#endif
...
...
@@ -606,7 +605,7 @@ xfs_log_unmount_write(xfs_mount_t *mp)
}
magic
=
{
XLOG_UNMOUNT_TYPE
,
0
,
0
};
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
return
0
;
#endif
...
...
@@ -734,9 +733,9 @@ xfs_log_write(xfs_mount_t * mp,
{
int
error
;
xlog_t
*
log
=
mp
->
m_log
;
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_devt
==
log
->
l_dev
)
{
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_target
==
log
->
l_targ
)
{
*
start_lsn
=
0
;
return
0
;
}
...
...
@@ -761,7 +760,7 @@ xfs_log_move_tail(xfs_mount_t *mp,
SPLDECL
(
s
);
#if defined(DEBUG) || defined(XLOG_NOLOG)
if
(
!
xlog_debug
&&
xlog_
devt
==
log
->
l_dev
)
if
(
!
xlog_debug
&&
xlog_
target
==
log
->
l_targ
)
return
;
#endif
/* XXXsup tmp */
...
...
@@ -1059,14 +1058,14 @@ xlog_get_iclog_buffer_size(xfs_mount_t *mp,
/*
* When logbufs == 0, someone has disabled the log from the FSTAB
* file. This is not a documented feature. We need to set xlog_debug
* to zero (this deactivates the log) and set xlog_
dev
t to the
* to zero (this deactivates the log) and set xlog_
targe
t to the
* appropriate dev_t. Only one filesystem may be affected as such
* since this is just a performance hack to test what we might be able
* to get if the log were not present.
*/
if
(
mp
->
m_logbufs
==
0
)
{
xlog_debug
=
0
;
xlog_
devt
=
log
->
l_dev
;
xlog_
target
=
log
->
l_targ
;
log
->
l_iclog_bufs
=
XLOG_MIN_ICLOGS
;
}
else
#endif
...
...
@@ -1089,8 +1088,8 @@ xlog_get_iclog_buffer_size(xfs_mount_t *mp,
#if defined(DEBUG) || defined(XLOG_NOLOG)
/* We are reactivating a filesystem after it was active */
if
(
log
->
l_
dev
==
xlog_dev
t
)
{
xlog_
devt
=
1
;
if
(
log
->
l_
targ
==
xlog_targe
t
)
{
xlog_
target
=
1
;
/* XXX(hch): WTF? */
xlog_debug
=
1
;
}
#endif
...
...
@@ -1176,7 +1175,7 @@ xlog_get_iclog_buffer_size(xfs_mount_t *mp,
*/
STATIC
xlog_t
*
xlog_alloc_log
(
xfs_mount_t
*
mp
,
dev_t
log_dev
,
xfs_buftarg_t
*
log_target
,
xfs_daddr_t
blk_offset
,
int
num_bblks
)
{
...
...
@@ -1191,7 +1190,7 @@ xlog_alloc_log(xfs_mount_t *mp,
log
=
(
xlog_t
*
)
kmem_zalloc
(
sizeof
(
xlog_t
),
KM_SLEEP
);
log
->
l_mp
=
mp
;
log
->
l_
dev
=
log_dev
;
log
->
l_
targ
=
log_target
;
log
->
l_logsize
=
BBTOB
(
num_bblks
);
log
->
l_logBBstart
=
blk_offset
;
log
->
l_logBBsize
=
num_bblks
;
...
...
fs/xfs/xfs_log.h
View file @
e818fc95
...
...
@@ -154,7 +154,7 @@ int xfs_log_force(struct xfs_mount *mp,
xfs_lsn_t
lsn
,
uint
flags
);
int
xfs_log_mount
(
struct
xfs_mount
*
mp
,
dev_t
log_dev
,
struct
xfs_buftarg
*
log_target
,
xfs_daddr_t
start_block
,
int
num_bblocks
);
int
xfs_log_mount_finish
(
struct
xfs_mount
*
mp
,
int
);
...
...
fs/xfs/xfs_log_priv.h
View file @
e818fc95
...
...
@@ -504,7 +504,7 @@ typedef struct log {
struct
xfs_mount
*
l_mp
;
/* mount point */
struct
xfs_buf
*
l_xbuf
;
/* extra buffer for log
* wrapping */
dev_t
l_dev
;
/* dev_t
of log */
struct
xfs_buftarg
*
l_targ
;
/* buftarg
of log */
xfs_daddr_t
l_logBBstart
;
/* start block of log */
int
l_logsize
;
/* size of log in bytes */
int
l_logBBsize
;
/* size of log in BB chunks */
...
...
fs/xfs/xfs_log_recover.c
View file @
e818fc95
...
...
@@ -2179,8 +2179,8 @@ xlog_recover_do_buffer_trans(
break
;
default:
xfs_fs_cmn_err
(
CE_ALERT
,
log
->
l_mp
,
"xfs_log_recover: unknown buffer type 0x%x, dev %
u:%u
"
,
buf_f
->
blf_type
,
MAJOR
(
log
->
l_dev
),
MINOR
(
log
->
l_dev
));
"xfs_log_recover: unknown buffer type 0x%x, dev %
s
"
,
buf_f
->
blf_type
,
XFS_BUFTARG_NAME
(
log
->
l_targ
));
XFS_ERROR_REPORT
(
"xlog_recover_do_buffer_trans"
,
XFS_ERRLEVEL_LOW
,
log
->
l_mp
);
return
XFS_ERROR
(
EFSCORRUPTED
);
...
...
@@ -3889,9 +3889,8 @@ xlog_recover(
}
cmn_err
(
CE_NOTE
,
"Starting XFS recovery on filesystem: %s (dev: %d/%d)"
,
log
->
l_mp
->
m_fsname
,
MAJOR
(
log
->
l_dev
),
MINOR
(
log
->
l_dev
));
"Starting XFS recovery on filesystem: %s (dev: %s)"
,
log
->
l_mp
->
m_fsname
,
XFS_BUFTARG_NAME
(
log
->
l_targ
));
error
=
xlog_do_recover
(
log
,
head_blk
,
tail_blk
);
log
->
l_flags
|=
XLOG_RECOVERY_NEEDED
;
...
...
@@ -3940,9 +3939,7 @@ xlog_recover_finish(
cmn_err
(
CE_NOTE
,
"Ending XFS recovery on filesystem: %s (dev: %d/%d)"
,
log
->
l_mp
->
m_fsname
,
MAJOR
(
log
->
l_dev
),
MINOR
(
log
->
l_dev
));
log
->
l_mp
->
m_fsname
,
XFS_BUFTARG_NAME
(
log
->
l_targ
));
log
->
l_flags
&=
~
XLOG_RECOVERY_NEEDED
;
}
else
{
cmn_err
(
CE_DEBUG
,
...
...
fs/xfs/xfs_mount.c
View file @
e818fc95
...
...
@@ -285,9 +285,9 @@ xfs_mount_validate_sb(
#if !XFS_BIG_BLKNOS
if
(
unlikely
(
(
sbp
->
sb_dblocks
<<
(
__uint64_t
)(
sbp
->
sb_blocklog
-
BBSHIFT
))
>
INT_MAX
||
>
U
INT_MAX
||
(
sbp
->
sb_rblocks
<<
(
__uint64_t
)(
sbp
->
sb_blocklog
-
BBSHIFT
))
>
INT_MAX
))
{
>
U
INT_MAX
))
{
cmn_err
(
CE_WARN
,
"XFS: File system is too large to be mounted on this system."
);
return
XFS_ERROR
(
E2BIG
);
...
...
@@ -949,7 +949,7 @@ xfs_mountfs(
* log's mount-time initialization. Perform 1st part recovery if needed
*/
if
(
likely
(
sbp
->
sb_logblocks
>
0
))
{
/* check for volume case */
error
=
xfs_log_mount
(
mp
,
mp
->
m_logdev_targp
->
pbr_dev
,
error
=
xfs_log_mount
(
mp
,
mp
->
m_logdev_targp
,
XFS_FSB_TO_DADDR
(
mp
,
sbp
->
sb_logstart
),
XFS_FSB_TO_BB
(
mp
,
sbp
->
sb_logblocks
));
if
(
error
)
{
...
...
@@ -980,7 +980,7 @@ xfs_mountfs(
if
(
unlikely
((
rip
->
i_d
.
di_mode
&
IFMT
)
!=
IFDIR
))
{
cmn_err
(
CE_WARN
,
"XFS: corrupted root inode"
);
prdev
(
"Root inode %llu is not a directory"
,
mp
->
m_d
ev
,
(
unsigned
long
long
)
rip
->
i_ino
);
mp
->
m_d
dev_targp
,
(
unsigned
long
long
)
rip
->
i_ino
);
xfs_iunlock
(
rip
,
XFS_ILOCK_EXCL
);
XFS_ERROR_REPORT
(
"xfs_mountfs_int(2)"
,
XFS_ERRLEVEL_LOW
,
mp
);
...
...
fs/xfs/xfs_mount.h
View file @
e818fc95
...
...
@@ -94,7 +94,7 @@ struct xfs_bmap_free;
typedef
int
(
*
xfs_send_data_t
)(
int
,
struct
bhv_desc
*
,
xfs_off_t
,
size_t
,
int
,
vrwlock_t
*
);
typedef
int
(
*
xfs_send_mmap_t
)(
struct
vm_area_struct
*
,
uint
);
typedef
int
(
*
xfs_send_destroy_t
)(
struct
bhv_desc
*
,
dm_right_t
);
typedef
int
(
*
xfs_send_destroy_t
)(
struct
vnode
*
,
dm_right_t
);
typedef
int
(
*
xfs_send_namesp_t
)(
dm_eventtype_t
,
struct
vnode
*
,
dm_right_t
,
struct
vnode
*
,
dm_right_t
,
char
*
,
char
*
,
mode_t
,
int
,
int
);
...
...
@@ -113,8 +113,8 @@ typedef struct xfs_dmops {
(*(mp)->m_dm_ops.xfs_send_data)(ev,bdp,off,len,fl,lock)
#define XFS_SEND_MMAP(mp, vma,fl) \
(*(mp)->m_dm_ops.xfs_send_mmap)(vma,fl)
#define XFS_SEND_DESTROY(mp,
bd
p,right) \
(*(mp)->m_dm_ops.xfs_send_destroy)(
bd
p,right)
#define XFS_SEND_DESTROY(mp,
v
p,right) \
(*(mp)->m_dm_ops.xfs_send_destroy)(
v
p,right)
#define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \
(*(mp)->m_dm_ops.xfs_send_namesp)(ev,b1,r1,b2,r2,n1,n2,mode,rval,fl)
#define XFS_SEND_UNMOUNT(mp, vfsp,vp,right,mode,rval,fl) \
...
...
fs/xfs/xfs_rw.c
View file @
e818fc95
...
...
@@ -260,11 +260,10 @@ xfs_ioerror_alert(
xfs_daddr_t
blkno
)
{
cmn_err
(
CE_ALERT
,
"I/O error in filesystem (
\"
%s
\"
) meta-data dev %
u:%u
block 0x%llx"
"I/O error in filesystem (
\"
%s
\"
) meta-data dev %
s
block 0x%llx"
" (
\"
%s
\"
) error %d buf count %u"
,
(
!
mp
||
!
mp
->
m_fsname
)
?
"(fs name not set)"
:
mp
->
m_fsname
,
MAJOR
(
XFS_BUF_TARGET_DEV
(
bp
)),
MINOR
(
XFS_BUF_TARGET_DEV
(
bp
)),
XFS_BUFTARG_NAME
(
bp
->
pb_target
),
(
__uint64_t
)
blkno
,
func
,
XFS_BUF_GETERROR
(
bp
),
...
...
fs/xfs/xfs_trans.h
View file @
e818fc95
...
...
@@ -995,7 +995,6 @@ void xfs_trans_dquot_buf(xfs_trans_t *, struct xfs_buf *, uint);
void
xfs_trans_inode_alloc_buf
(
xfs_trans_t
*
,
struct
xfs_buf
*
);
int
xfs_trans_iget
(
struct
xfs_mount
*
,
xfs_trans_t
*
,
xfs_ino_t
,
uint
,
struct
xfs_inode
**
);
void
xfs_trans_iput
(
xfs_trans_t
*
,
struct
xfs_inode
*
,
uint
);
void
xfs_trans_ijoin
(
xfs_trans_t
*
,
struct
xfs_inode
*
,
uint
);
void
xfs_trans_ihold
(
xfs_trans_t
*
,
struct
xfs_inode
*
);
void
xfs_trans_ihold_release
(
xfs_trans_t
*
,
struct
xfs_inode
*
);
...
...
fs/xfs/xfs_trans_buf.c
View file @
e818fc95
...
...
@@ -264,7 +264,7 @@ xfs_trans_getsb(xfs_trans_t *tp,
}
#ifdef DEBUG
dev_t
xfs_error_dev
=
0
;
xfs_buftarg_t
*
xfs_error_target
;
int
xfs_do_error
;
int
xfs_req_num
;
int
xfs_error_mod
=
33
;
...
...
@@ -322,7 +322,7 @@ xfs_trans_read_buf(
}
#ifdef DEBUG
if
(
xfs_do_error
&&
(
bp
!=
NULL
))
{
if
(
xfs_error_
dev
==
target
->
pbr_dev
)
{
if
(
xfs_error_
target
==
target
)
{
if
(((
xfs_req_num
++
)
%
xfs_error_mod
)
==
0
)
{
xfs_buf_relse
(
bp
);
printk
(
"Returning error!
\n
"
);
...
...
@@ -425,7 +425,7 @@ xfs_trans_read_buf(
}
#ifdef DEBUG
if
(
xfs_do_error
&&
!
(
tp
->
t_flags
&
XFS_TRANS_DIRTY
))
{
if
(
xfs_error_
dev
==
target
->
pbr_dev
)
{
if
(
xfs_error_
target
==
target
)
{
if
(((
xfs_req_num
++
)
%
xfs_error_mod
)
==
0
)
{
xfs_force_shutdown
(
tp
->
t_mountp
,
XFS_METADATA_IO_ERROR
);
...
...
fs/xfs/xfs_trans_inode.c
View file @
e818fc95
...
...
@@ -187,106 +187,6 @@ xfs_trans_iget(
}
/*
* Release the inode ip which was previously acquired with xfs_trans_iget()
* or added with xfs_trans_ijoin(). This will decrement the lock
* recursion count of the inode item. If the count goes to less than 0,
* the inode will be unlocked and disassociated from the transaction.
*
* If the inode has been modified within the transaction, it will not be
* unlocked until the transaction commits.
*/
void
xfs_trans_iput
(
xfs_trans_t
*
tp
,
xfs_inode_t
*
ip
,
uint
lock_flags
)
{
xfs_inode_log_item_t
*
iip
;
xfs_log_item_desc_t
*
lidp
;
/*
* If the transaction pointer is NULL, just call xfs_iput().
*/
if
(
tp
==
NULL
)
{
xfs_iput
(
ip
,
lock_flags
);
}
ASSERT
(
ip
->
i_transp
==
tp
);
iip
=
ip
->
i_itemp
;
ASSERT
(
iip
!=
NULL
);
/*
* Find the item descriptor pointing to this inode's
* log item. It must be there.
*/
lidp
=
xfs_trans_find_item
(
tp
,
(
xfs_log_item_t
*
)
iip
);
ASSERT
(
lidp
!=
NULL
);
ASSERT
(
lidp
->
lid_item
==
(
xfs_log_item_t
*
)
iip
);
/*
* Be consistent about the bookkeeping for the inode's
* io lock, but it doesn't mean much really.
*/
ASSERT
((
iip
->
ili_flags
&
XFS_ILI_IOLOCKED_ANY
)
!=
XFS_ILI_IOLOCKED_ANY
);
if
(
lock_flags
&
(
XFS_IOLOCK_EXCL
|
XFS_IOLOCK_SHARED
))
{
ASSERT
(
iip
->
ili_flags
&
XFS_ILI_IOLOCKED_ANY
);
ASSERT
((
!
(
lock_flags
&
XFS_IOLOCK_EXCL
))
||
(
iip
->
ili_flags
&
XFS_ILI_IOLOCKED_EXCL
));
ASSERT
((
!
(
lock_flags
&
XFS_IOLOCK_SHARED
))
||
(
iip
->
ili_flags
&
(
XFS_ILI_IOLOCKED_EXCL
|
XFS_ILI_IOLOCKED_SHARED
)));
if
(
iip
->
ili_iolock_recur
>
0
)
{
iip
->
ili_iolock_recur
--
;
}
}
/*
* If the release is just for a recursive lock on the inode lock,
* then decrement the count and return. We can assert that
* the caller is dropping an EXCL lock on the inode, because
* inode must be locked EXCL within transactions.
*/
ASSERT
(
lock_flags
&
XFS_ILOCK_EXCL
);
if
(
iip
->
ili_ilock_recur
>
0
)
{
iip
->
ili_ilock_recur
--
;
return
;
}
ASSERT
(
iip
->
ili_iolock_recur
==
0
);
/*
* If the inode was dirtied within this transaction, it cannot
* be released until the transaction commits.
*/
if
(
lidp
->
lid_flags
&
XFS_LID_DIRTY
)
{
return
;
}
xfs_trans_free_item
(
tp
,
lidp
);
/*
* Clear the hold and iolocked flags in the inode log item.
* We wouldn't want the next user of the inode to
* get confused. Assert that if the iolocked flag is set
* in the item then we are unlocking it in the call to xfs_iput()
* below.
*/
ASSERT
((
!
(
iip
->
ili_flags
&
XFS_ILI_IOLOCKED_ANY
))
||
(
lock_flags
&
(
XFS_IOLOCK_EXCL
|
XFS_IOLOCK_SHARED
)));
if
(
iip
->
ili_flags
&
(
XFS_ILI_HOLD
|
XFS_ILI_IOLOCKED_ANY
))
{
iip
->
ili_flags
&=
~
(
XFS_ILI_HOLD
|
XFS_ILI_IOLOCKED_ANY
);
}
/*
* Unlike xfs_brelse() the inode log item cannot be
* freed, because it is embedded within the inode.
* All we have to do is release the inode.
*/
xfs_iput
(
ip
,
lock_flags
);
return
;
}
/*
* Add the locked inode to the transaction.
* The inode must be locked, and it cannot be associated with any
...
...
fs/xfs/xfs_vfsops.c
View file @
e818fc95
...
...
@@ -1776,7 +1776,6 @@ xfs_showargs(
};
struct
proc_xfs_info
*
xfs_infop
;
struct
xfs_mount
*
mp
=
XFS_BHVTOM
(
bhv
);
char
b
[
BDEVNAME_SIZE
];
for
(
xfs_infop
=
xfs_info
;
xfs_infop
->
flag
;
xfs_infop
++
)
{
if
(
mp
->
m_flags
&
xfs_infop
->
flag
)
...
...
@@ -1792,14 +1791,13 @@ xfs_showargs(
if
(
mp
->
m_logbsize
>
0
)
seq_printf
(
m
,
","
MNTOPT_LOGBSIZE
"=%d"
,
mp
->
m_logbsize
);
if
(
mp
->
m_ddev_targp
->
pbr_dev
!=
mp
->
m_logdev_targp
->
pbr_dev
)
if
(
mp
->
m_ddev_targp
!=
mp
->
m_logdev_targp
)
seq_printf
(
m
,
","
MNTOPT_LOGDEV
"=%s"
,
bdevname
(
mp
->
m_logdev_targp
->
pbr_bdev
,
b
));
XFS_BUFTARG_NAME
(
mp
->
m_logdev_targp
));
if
(
mp
->
m_rtdev_targp
&&
mp
->
m_ddev_targp
->
pbr_dev
!=
mp
->
m_rtdev_targp
->
pbr_dev
)
if
(
mp
->
m_rtdev_targp
&&
mp
->
m_ddev_targp
!=
mp
->
m_rtdev_targp
)
seq_printf
(
m
,
","
MNTOPT_RTDEV
"=%s"
,
bdevname
(
mp
->
m_rtdev_targp
->
pbr_bdev
,
b
));
XFS_BUFTARG_NAME
(
mp
->
m_rtdev_targp
));
if
(
mp
->
m_dalign
>
0
)
seq_printf
(
m
,
","
MNTOPT_SUNIT
"=%d"
,
...
...
fs/xfs/xfs_vnodeops.c
View file @
e818fc95
...
...
@@ -151,7 +151,6 @@ xfs_getattr(
}
vap
->
va_nblocks
=
XFS_FSB_TO_BB
(
mp
,
ip
->
i_d
.
di_nblocks
+
ip
->
i_delayed_blks
);
vap
->
va_fsid
=
mp
->
m_dev
;
vap
->
va_nodeid
=
ip
->
i_ino
;
#if XFS_BIG_INUMS
vap
->
va_nodeid
+=
mp
->
m_inoadd
;
...
...
@@ -1729,7 +1728,7 @@ xfs_inactive(
if
(
ip
->
i_d
.
di_nlink
==
0
&&
DM_EVENT_ENABLED
(
vp
->
v_vfsp
,
ip
,
DM_EVENT_DESTROY
))
{
(
void
)
XFS_SEND_DESTROY
(
mp
,
bd
p
,
DM_RIGHT_NULL
);
(
void
)
XFS_SEND_DESTROY
(
mp
,
v
p
,
DM_RIGHT_NULL
);
}
error
=
0
;
...
...
fs/xfs/xfsidbg.c
View file @
e818fc95
...
...
@@ -3739,9 +3739,9 @@ xfsidbg_xdabuf(xfs_dabuf_t *dabuf)
kdb_printf
(
" %d:0x%p"
,
i
,
dabuf
->
bps
[
i
]);
kdb_printf
(
"
\n
"
);
#ifdef XFS_DABUF_DEBUG
kdb_printf
(
" ra 0x%x prev 0x%x next 0x%x dev %
u:%u
blkno 0x%x
\n
"
,
kdb_printf
(
" ra 0x%x prev 0x%x next 0x%x dev %
s
blkno 0x%x
\n
"
,
dabuf
->
ra
,
dabuf
->
prev
,
dabuf
->
next
,
MAJOR
(
dabuf
->
dev
),
MINOR
(
dabuf
->
dev
),
dabuf
->
blkno
);
XFS_BUFTARG_NAME
(
dabuf
->
dev
),
dabuf
->
blkno
);
#endif
}
...
...
@@ -4269,9 +4269,8 @@ xfsidbg_xlog(xlog_t *log)
xfsidbg_get_cstate
(
log
->
l_covered_state
));
kdb_printf
(
"flags: "
);
printflags
(
log
->
l_flags
,
t_flags
,
"log"
);
kdb_printf
(
" dev: %u:%u logBBstart: %lld logsize: %d logBBsize: %d
\n
"
,
MAJOR
(
log
->
l_dev
),
MINOR
(
log
->
l_dev
),
(
long
long
)
log
->
l_logBBstart
,
kdb_printf
(
" dev: %s logBBstart: %lld logsize: %d logBBsize: %d
\n
"
,
XFS_BUFTARG_NAME
(
log
->
l_targ
),
(
long
long
)
log
->
l_logBBstart
,
log
->
l_logsize
,
log
->
l_logBBsize
);
kdb_printf
(
"curr_cycle: %d prev_cycle: %d curr_block: %d prev_block: %d
\n
"
,
log
->
l_curr_cycle
,
log
->
l_prev_cycle
,
log
->
l_curr_block
,
...
...
@@ -4646,14 +4645,14 @@ xfsidbg_xmount(xfs_mount_t *mp)
XFS_MTOVFS
(
mp
),
mp
->
m_tid
,
&
mp
->
m_ail_lock
,
&
mp
->
m_ail
);
kdb_printf
(
"ail_gen 0x%x &sb 0x%p
\n
"
,
mp
->
m_ail_gen
,
&
mp
->
m_sb
);
kdb_printf
(
"sb_lock 0x%p sb_bp 0x%p dev %
u:%u logdev %u:%u rtdev %u:%u
\n
"
,
kdb_printf
(
"sb_lock 0x%p sb_bp 0x%p dev %
s logdev %s rtdev %s
\n
"
,
&
mp
->
m_sb_lock
,
mp
->
m_sb_bp
,
mp
->
m_ddev_targp
?
MAJOR
(
mp
->
m_ddev_targp
->
pbr_dev
)
:
0
,
mp
->
m_ddev_targp
?
MINOR
(
mp
->
m_ddev_targp
->
pbr_dev
)
:
0
,
mp
->
m_logdev_targp
?
MAJOR
(
mp
->
m_logdev_targp
->
pbr_dev
)
:
0
,
mp
->
m_logdev_targp
?
MINOR
(
mp
->
m_logdev_targp
->
pbr_dev
)
:
0
,
mp
->
m_rtdev_targp
?
MAJOR
(
mp
->
m_rtdev_targp
->
pbr_dev
)
:
0
,
mp
->
m_rtdev_targp
?
MINOR
(
mp
->
m_rtdev_targp
->
pbr_dev
)
:
0
);
mp
->
m_ddev_targp
?
XFS_BUFTARG_NAME
(
mp
->
m_ddev_targp
)
:
"none"
,
mp
->
m_logdev_targp
?
XFS_BUFTARG_NAME
(
mp
->
m_logdev_targp
)
:
"none"
,
mp
->
m_rtdev_targp
?
XFS_BUFTARG_NAME
(
mp
->
m_rtdev_targp
)
:
"none"
);
kdb_printf
(
"bsize %d agfrotor %d agirotor %d ihash 0x%p ihsize %d
\n
"
,
mp
->
m_bsize
,
mp
->
m_agfrotor
,
mp
->
m_agirotor
,
mp
->
m_ihash
,
mp
->
m_ihsize
);
...
...
@@ -4824,9 +4823,8 @@ xfsidbg_xnode(xfs_inode_t *ip)
ip
->
i_mnext
,
ip
->
i_mprev
,
XFS_ITOV_NULL
(
ip
));
kdb_printf
(
"dev %u:%u ino %s
\n
"
,
MAJOR
(
ip
->
i_mount
->
m_dev
),
MINOR
(
ip
->
i_mount
->
m_dev
),
kdb_printf
(
"dev %s ino %s
\n
"
,
XFS_BUFTARG_NAME
(
ip
->
i_mount
->
m_ddev_targp
),
xfs_fmtino
(
ip
->
i_ino
,
ip
->
i_mount
));
kdb_printf
(
"blkno 0x%llx len 0x%x boffset 0x%x
\n
"
,
(
long
long
)
ip
->
i_blkno
,
...
...
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