git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
fs
/
xfs
/
xfs_vfsops.c
diff --git
a/fs/xfs/xfs_vfsops.c
b/fs/xfs/xfs_vfsops.c
index
0cbe005
..
bace7cd
100644
(file)
--- a/
fs/xfs/xfs_vfsops.c
+++ b/
fs/xfs/xfs_vfsops.c
@@
-24,7
+24,6
@@
#include "xfs_trans.h"
#include "xfs_sb.h"
#include "xfs_ag.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_dir2.h"
#include "xfs_dmapi.h"
#include "xfs_mount.h"
@@
-32,7
+31,6
@@
#include "xfs_bmap_btree.h"
#include "xfs_ialloc_btree.h"
#include "xfs_alloc_btree.h"
#include "xfs_bmap_btree.h"
#include "xfs_ialloc_btree.h"
#include "xfs_alloc_btree.h"
-#include "xfs_dir_sf.h"
#include "xfs_dir2_sf.h"
#include "xfs_attr_sf.h"
#include "xfs_dinode.h"
#include "xfs_dir2_sf.h"
#include "xfs_attr_sf.h"
#include "xfs_dinode.h"
@@
-131,9
+129,6
@@
xfs_init(void)
#ifdef XFS_BMBT_TRACE
xfs_bmbt_trace_buf = ktrace_alloc(XFS_BMBT_TRACE_SIZE, KM_SLEEP);
#endif
#ifdef XFS_BMBT_TRACE
xfs_bmbt_trace_buf = ktrace_alloc(XFS_BMBT_TRACE_SIZE, KM_SLEEP);
#endif
-#ifdef XFS_DIR_TRACE
- xfs_dir_trace_buf = ktrace_alloc(XFS_DIR_TRACE_SIZE, KM_SLEEP);
-#endif
#ifdef XFS_ATTR_TRACE
xfs_attr_trace_buf = ktrace_alloc(XFS_ATTR_TRACE_SIZE, KM_SLEEP);
#endif
#ifdef XFS_ATTR_TRACE
xfs_attr_trace_buf = ktrace_alloc(XFS_ATTR_TRACE_SIZE, KM_SLEEP);
#endif
@@
-177,9
+172,6
@@
xfs_cleanup(void)
#ifdef XFS_ATTR_TRACE
ktrace_free(xfs_attr_trace_buf);
#endif
#ifdef XFS_ATTR_TRACE
ktrace_free(xfs_attr_trace_buf);
#endif
-#ifdef XFS_DIR_TRACE
- ktrace_free(xfs_dir_trace_buf);
-#endif
#ifdef XFS_BMBT_TRACE
ktrace_free(xfs_bmbt_trace_buf);
#endif
#ifdef XFS_BMBT_TRACE
ktrace_free(xfs_bmbt_trace_buf);
#endif
@@
-212,7
+204,7
@@
xfs_cleanup(void)
*/
STATIC int
xfs_start_flags(
*/
STATIC int
xfs_start_flags(
- struct
vfs
*vfs,
+ struct
bhv_vfs
*vfs,
struct xfs_mount_args *ap,
struct xfs_mount *mp)
{
struct xfs_mount_args *ap,
struct xfs_mount *mp)
{
@@
-308,8
+300,8
@@
xfs_start_flags(
if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE;
if (ap->flags2 & XFSMNT2_COMPAT_IOSIZE)
mp->m_flags |= XFS_MOUNT_COMPAT_IOSIZE;
- if (ap->flags2 & XFSMNT2_TAG
XI
D)
- mp->m_flags |= XFS_MOUNT_TAG
XI
D;
+ if (ap->flags2 & XFSMNT2_TAG
GE
D)
+ mp->m_flags |= XFS_MOUNT_TAG
GE
D;
/*
* no recovery flag requires a read-only mount
/*
* no recovery flag requires a read-only mount
@@
-339,7
+331,7
@@
xfs_start_flags(
*/
STATIC int
xfs_finish_flags(
*/
STATIC int
xfs_finish_flags(
- struct
vfs
*vfs,
+ struct
bhv_vfs
*vfs,
struct xfs_mount_args *ap,
struct xfs_mount *mp)
{
struct xfs_mount_args *ap,
struct xfs_mount *mp)
{
@@
-404,8
+396,8
@@
xfs_finish_flags(
return XFS_ERROR(EINVAL);
}
return XFS_ERROR(EINVAL);
}
- if (ap->flags2 & XFSMNT2_TAG
XI
D)
- vfs->vfs_super->s_flags |= MS_TAG
XI
D;
+ if (ap->flags2 & XFSMNT2_TAG
GE
D)
+ vfs->vfs_super->s_flags |= MS_TAG
GE
D;
return 0;
}
return 0;
}
@@
-427,7
+419,7
@@
xfs_mount(
struct xfs_mount_args *args,
cred_t *credp)
{
struct xfs_mount_args *args,
cred_t *credp)
{
- struct
vfs
*vfsp = bhvtovfs(bhvp);
+ struct
bhv_vfs
*vfsp = bhvtovfs(bhvp);
struct bhv_desc *p;
struct xfs_mount *mp = XFS_BHVTOM(bhvp);
struct block_device *ddev, *logdev, *rtdev;
struct bhv_desc *p;
struct xfs_mount *mp = XFS_BHVTOM(bhvp);
struct block_device *ddev, *logdev, *rtdev;
@@
-527,7
+519,7
@@
xfs_mount(
if (error)
goto error2;
if (error)
goto error2;
- if (
(mp->m_flags & XFS_MOUNT_BARRIER) && !(vfsp->vfs_flag & VFS_RDONLY)
)
+ if (
mp->m_flags & XFS_MOUNT_BARRIER
)
xfs_mountfs_check_barriers(mp);
error = XFS_IOINIT(vfsp, args, flags);
xfs_mountfs_check_barriers(mp);
error = XFS_IOINIT(vfsp, args, flags);
@@
-556,10
+548,10
@@
xfs_unmount(
int flags,
cred_t *credp)
{
int flags,
cred_t *credp)
{
-
struct vfs
*vfsp = bhvtovfs(bdp);
+
bhv_vfs_t
*vfsp = bhvtovfs(bdp);
xfs_mount_t *mp = XFS_BHVTOM(bdp);
xfs_inode_t *rip;
xfs_mount_t *mp = XFS_BHVTOM(bdp);
xfs_inode_t *rip;
-
vnode_t
*rvp;
+
bhv_vnode_t
*rvp;
int unmount_event_wanted = 0;
int unmount_event_flags = 0;
int xfs_unmountfs_needed = 0;
int unmount_event_wanted = 0;
int unmount_event_flags = 0;
int xfs_unmountfs_needed = 0;
@@
-669,9
+661,8
@@
xfs_mntupdate(
int *flags,
struct xfs_mount_args *args)
{
int *flags,
struct xfs_mount_args *args)
{
-
struct vfs
*vfsp = bhvtovfs(bdp);
+
bhv_vfs_t
*vfsp = bhvtovfs(bdp);
xfs_mount_t *mp = XFS_BHVTOM(bdp);
xfs_mount_t *mp = XFS_BHVTOM(bdp);
- int error;
if (!(*flags & MS_RDONLY)) { /* rw/ro -> rw */
if (vfsp->vfs_flag & VFS_RDONLY)
if (!(*flags & MS_RDONLY)) { /* rw/ro -> rw */
if (vfsp->vfs_flag & VFS_RDONLY)
@@
-683,7
+674,7
@@
xfs_mntupdate(
mp->m_flags &= ~XFS_MOUNT_BARRIER;
}
} else if (!(vfsp->vfs_flag & VFS_RDONLY)) { /* rw -> ro */
mp->m_flags &= ~XFS_MOUNT_BARRIER;
}
} else if (!(vfsp->vfs_flag & VFS_RDONLY)) { /* rw -> ro */
-
VFS_SYNC(vfsp, SYNC_FSDATA|SYNC_BDFLUSH|SYNC_ATTR, NULL, error
);
+
bhv_vfs_sync(vfsp, SYNC_FSDATA|SYNC_BDFLUSH|SYNC_ATTR, NULL
);
xfs_quiesce_fs(mp);
xfs_log_unmount_write(mp);
xfs_unmountfs_writesb(mp);
xfs_quiesce_fs(mp);
xfs_log_unmount_write(mp);
xfs_unmountfs_writesb(mp);
@@
-706,7
+697,7
@@
xfs_unmount_flush(
xfs_inode_t *rip = mp->m_rootip;
xfs_inode_t *rbmip;
xfs_inode_t *rsumip = NULL;
xfs_inode_t *rip = mp->m_rootip;
xfs_inode_t *rbmip;
xfs_inode_t *rsumip = NULL;
-
vnode_t
*rvp = XFS_ITOV(rip);
+
bhv_vnode_t
*rvp = XFS_ITOV(rip);
int error;
xfs_ilock(rip, XFS_ILOCK_EXCL);
int error;
xfs_ilock(rip, XFS_ILOCK_EXCL);
@@
-785,9
+776,9
@@
fscorrupt_out2:
STATIC int
xfs_root(
bhv_desc_t *bdp,
STATIC int
xfs_root(
bhv_desc_t *bdp,
-
vnode_t
**vpp)
+
bhv_vnode_t
**vpp)
{
{
-
vnode_t
*vp;
+
bhv_vnode_t
*vp;
vp = XFS_ITOV((XFS_BHVTOM(bdp))->m_rootip);
VN_HOLD(vp);
vp = XFS_ITOV((XFS_BHVTOM(bdp))->m_rootip);
VN_HOLD(vp);
@@
-805,8
+796,8
@@
xfs_root(
STATIC int
xfs_statvfs(
bhv_desc_t *bdp,
STATIC int
xfs_statvfs(
bhv_desc_t *bdp,
-
xfs_statfs_t
*statp,
-
vnode_t
*vp)
+
bhv_statvfs_t
*statp,
+
bhv_vnode_t
*vp)
{
__uint64_t fakeinos;
xfs_extlen_t lsize;
{
__uint64_t fakeinos;
xfs_extlen_t lsize;
@@
-824,7
+815,8
@@
xfs_statvfs(
statp->f_bsize = sbp->sb_blocksize;
lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0;
statp->f_blocks = sbp->sb_dblocks - lsize;
statp->f_bsize = sbp->sb_blocksize;
lsize = sbp->sb_logstart ? sbp->sb_logblocks : 0;
statp->f_blocks = sbp->sb_dblocks - lsize;
- statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks;
+ statp->f_bfree = statp->f_bavail =
+ sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp);
fakeinos = statp->f_bfree << sbp->sb_inopblog;
#if XFS_BIG_INUMS
fakeinos += mp->m_inoadd;
fakeinos = statp->f_bfree << sbp->sb_inopblog;
#if XFS_BIG_INUMS
fakeinos += mp->m_inoadd;
@@
-904,7
+896,7
@@
xfs_sync(
/*
* xfs sync routine for internal use
*
/*
* xfs sync routine for internal use
*
- * This routine supports all of the flags defined for the generic
VFS_SYNC
+ * This routine supports all of the flags defined for the generic
vfs_sync
* interface as explained above under xfs_sync. In the interests of not
* changing interfaces within the 6.5 family, additional internally-
* required functions are specified within a separate xflags parameter,
* interface as explained above under xfs_sync. In the interests of not
* changing interfaces within the 6.5 family, additional internally-
* required functions are specified within a separate xflags parameter,
@@
-921,7
+913,7
@@
xfs_sync_inodes(
xfs_inode_t *ip = NULL;
xfs_inode_t *ip_next;
xfs_buf_t *bp;
xfs_inode_t *ip = NULL;
xfs_inode_t *ip_next;
xfs_buf_t *bp;
-
vnode_t
*vp = NULL;
+
bhv_vnode_t
*vp = NULL;
int error;
int last_error;
uint64_t fflag;
int error;
int last_error;
uint64_t fflag;
@@
-1160,9
+1152,9
@@
xfs_sync_inodes(
xfs_iunlock(ip, XFS_ILOCK_SHARED);
if (XFS_FORCED_SHUTDOWN(mp)) {
xfs_iunlock(ip, XFS_ILOCK_SHARED);
if (XFS_FORCED_SHUTDOWN(mp)) {
-
VOP_TOSS_PAGES
(vp, 0, -1, FI_REMAPF);
+
bhv_vop_toss_pages
(vp, 0, -1, FI_REMAPF);
} else {
} else {
-
VOP_FLUSHINVAL_PAGES
(vp, 0, -1, FI_REMAPF);
+
bhv_vop_flushinval_pages
(vp, 0, -1, FI_REMAPF);
}
xfs_ilock(ip, XFS_ILOCK_SHARED);
}
xfs_ilock(ip, XFS_ILOCK_SHARED);
@@
-1182,8
+1174,8
@@
xfs_sync_inodes(
* across calls to the buffer cache.
*/
xfs_iunlock(ip, XFS_ILOCK_SHARED);
* across calls to the buffer cache.
*/
xfs_iunlock(ip, XFS_ILOCK_SHARED);
-
VOP_FLUSH_PAGES(vp, (xfs_off_t)0, -1
,
-
fflag, FI_NONE, error
);
+
error = bhv_vop_flush_pages(vp, (xfs_off_t)0
,
+
-1, fflag, FI_NONE
);
xfs_ilock(ip, XFS_ILOCK_SHARED);
}
xfs_ilock(ip, XFS_ILOCK_SHARED);
}
@@
-1235,9
+1227,7
@@
xfs_sync_inodes(
* marker and free it.
*/
XFS_MOUNT_ILOCK(mp);
* marker and free it.
*/
XFS_MOUNT_ILOCK(mp);
-
IPOINTER_REMOVE(ip, mp);
IPOINTER_REMOVE(ip, mp);
-
XFS_MOUNT_IUNLOCK(mp);
ASSERT(!(lock_flags &
XFS_MOUNT_IUNLOCK(mp);
ASSERT(!(lock_flags &
@@
-1425,7
+1415,7
@@
xfs_sync_inodes(
/*
* xfs sync routine for internal use
*
/*
* xfs sync routine for internal use
*
- * This routine supports all of the flags defined for the generic
VFS_SYNC
+ * This routine supports all of the flags defined for the generic
vfs_sync
* interface as explained above under xfs_sync. In the interests of not
* changing interfaces within the 6.5 family, additional internally-
* required functions are specified within a separate xflags parameter,
* interface as explained above under xfs_sync. In the interests of not
* changing interfaces within the 6.5 family, additional internally-
* required functions are specified within a separate xflags parameter,
@@
-1578,7
+1568,7
@@
xfs_syncsub(
STATIC int
xfs_vget(
bhv_desc_t *bdp,
STATIC int
xfs_vget(
bhv_desc_t *bdp,
-
vnode_t
**vpp,
+
bhv_vnode_t
**vpp,
fid_t *fidp)
{
xfs_mount_t *mp = XFS_BHVTOM(bdp);
fid_t *fidp)
{
xfs_mount_t *mp = XFS_BHVTOM(bdp);
@@
-1659,13
+1649,15
@@
xfs_vget(
* in stat(). */
#define MNTOPT_ATTR2 "attr2" /* do use attr2 attribute format */
#define MNTOPT_NOATTR2 "noattr2" /* do not use attr2 attribute format */
* in stat(). */
#define MNTOPT_ATTR2 "attr2" /* do use attr2 attribute format */
#define MNTOPT_NOATTR2 "noattr2" /* do not use attr2 attribute format */
-#define MNTOPT_TAGXID "tagxid" /* context xid tagging for inodes */
+#define MNTOPT_TAGXID "tagxid" /* context tagging for inodes */
+#define MNTOPT_TAGGED "tag" /* context tagging for inodes */
+#define MNTOPT_NOTAGTAG "notag" /* do not use context tagging */
STATIC unsigned long
STATIC unsigned long
-suffix_strtoul(c
onst char *cp
, char **endp, unsigned int base)
+suffix_strtoul(c
har *s
, char **endp, unsigned int base)
{
int last, shift_left_factor = 0;
{
int last, shift_left_factor = 0;
- char *value =
(char *)cp
;
+ char *value =
s
;
last = strlen(value) - 1;
if (value[last] == 'K' || value[last] == 'k') {
last = strlen(value) - 1;
if (value[last] == 'K' || value[last] == 'k') {
@@
-1681,7
+1673,7
@@
suffix_strtoul(const char *cp, char **endp, unsigned int base)
value[last] = '\0';
}
value[last] = '\0';
}
- return simple_strtoul(
cp
, endp, base) << shift_left_factor;
+ return simple_strtoul(
(const char *)s
, endp, base) << shift_left_factor;
}
STATIC int
}
STATIC int
@@
-1691,7
+1683,7
@@
xfs_parseargs(
struct xfs_mount_args *args,
int update)
{
struct xfs_mount_args *args,
int update)
{
-
struct vfs
*vfsp = bhvtovfs(bhv);
+
bhv_vfs_t
*vfsp = bhvtovfs(bhv);
char *this_char, *value, *eov;
int dsunit, dswidth, vol_dsunit, vol_dswidth;
int iosize;
char *this_char, *value, *eov;
int dsunit, dswidth, vol_dsunit, vol_dswidth;
int iosize;
@@
-1713,42
+1705,48
@@
xfs_parseargs(
if (!strcmp(this_char, MNTOPT_LOGBUFS)) {
if (!value || !*value) {
if (!strcmp(this_char, MNTOPT_LOGBUFS)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
args->logbufs = simple_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_LOGBSIZE)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
args->logbufs = simple_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_LOGBSIZE)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
args->logbufsize = suffix_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_LOGDEV)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
args->logbufsize = suffix_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_LOGDEV)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
strncpy(args->logname, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_MTPT)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
strncpy(args->logname, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_MTPT)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
strncpy(args->mtpt, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_RTDEV)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
strncpy(args->mtpt, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_RTDEV)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
strncpy(args->rtname, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_BIOSIZE)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
strncpy(args->rtname, value, MAXNAMELEN);
} else if (!strcmp(this_char, MNTOPT_BIOSIZE)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
this_char);
return EINVAL;
}
@@
-1757,7
+1755,8
@@
xfs_parseargs(
args->iosizelog = (uint8_t) iosize;
} else if (!strcmp(this_char, MNTOPT_ALLOCSIZE)) {
if (!value || !*value) {
args->iosizelog = (uint8_t) iosize;
} else if (!strcmp(this_char, MNTOPT_ALLOCSIZE)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
this_char);
return EINVAL;
}
@@
-1766,7
+1765,8
@@
xfs_parseargs(
args->iosizelog = ffs(iosize) - 1;
} else if (!strcmp(this_char, MNTOPT_IHASHSIZE)) {
if (!value || !*value) {
args->iosizelog = ffs(iosize) - 1;
} else if (!strcmp(this_char, MNTOPT_IHASHSIZE)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
this_char);
return EINVAL;
}
@@
-1787,7
+1787,8
@@
xfs_parseargs(
} else if (!strcmp(this_char, MNTOPT_INO64)) {
args->flags |= XFSMNT_INO64;
#if !XFS_BIG_INUMS
} else if (!strcmp(this_char, MNTOPT_INO64)) {
args->flags |= XFSMNT_INO64;
#if !XFS_BIG_INUMS
- printk("XFS: %s option not allowed on this system\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option not allowed on this system",
this_char);
return EINVAL;
#endif
this_char);
return EINVAL;
#endif
@@
-1797,14
+1798,16
@@
xfs_parseargs(
args->flags |= XFSMNT_SWALLOC;
} else if (!strcmp(this_char, MNTOPT_SUNIT)) {
if (!value || !*value) {
args->flags |= XFSMNT_SWALLOC;
} else if (!strcmp(this_char, MNTOPT_SUNIT)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
dsunit = simple_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_SWIDTH)) {
if (!value || !*value) {
this_char);
return EINVAL;
}
dsunit = simple_strtoul(value, &eov, 10);
} else if (!strcmp(this_char, MNTOPT_SWIDTH)) {
if (!value || !*value) {
- printk("XFS: %s option requires an argument\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option requires an argument",
this_char);
return EINVAL;
}
this_char);
return EINVAL;
}
@@
-1812,7
+1815,8
@@
xfs_parseargs(
} else if (!strcmp(this_char, MNTOPT_64BITINODE)) {
args->flags &= ~XFSMNT_32BITINODES;
#if !XFS_BIG_INUMS
} else if (!strcmp(this_char, MNTOPT_64BITINODE)) {
args->flags &= ~XFSMNT_32BITINODES;
#if !XFS_BIG_INUMS
- printk("XFS: %s option not allowed on this system\n",
+ cmn_err(CE_WARN,
+ "XFS: %s option not allowed on this system",
this_char);
return EINVAL;
#endif
this_char);
return EINVAL;
#endif
@@
-1834,42
+1838,56
@@
xfs_parseargs(
args->flags |= XFSMNT_ATTR2;
} else if (!strcmp(this_char, MNTOPT_NOATTR2)) {
args->flags &= ~XFSMNT_ATTR2;
args->flags |= XFSMNT_ATTR2;
} else if (!strcmp(this_char, MNTOPT_NOATTR2)) {
args->flags &= ~XFSMNT_ATTR2;
-#ifndef CONFIG_INOXID_NONE
+#ifndef CONFIG_TAGGING_NONE
+ } else if (!strcmp(this_char, MNTOPT_TAGGED)) {
+ args->flags2 |= XFSMNT2_TAGGED;
+ } else if (!strcmp(this_char, MNTOPT_NOTAGTAG)) {
+ args->flags2 &= ~XFSMNT2_TAGGED;
} else if (!strcmp(this_char, MNTOPT_TAGXID)) {
} else if (!strcmp(this_char, MNTOPT_TAGXID)) {
- args->flags2 |= XFSMNT2_TAGXID;
+ args->flags2 |= XFSMNT2_TAGGED;
+#endif
+#ifdef CONFIG_PROPAGATE
+ } else if (!strcmp(this_char, MNTOPT_TAGGED)) {
+ /* use value */
+ args->flags2 |= XFSMNT2_TAGGED;
#endif
} else if (!strcmp(this_char, "osyncisdsync")) {
/* no-op, this is now the default */
#endif
} else if (!strcmp(this_char, "osyncisdsync")) {
/* no-op, this is now the default */
-printk("XFS: osyncisdsync is now the default, option is deprecated.\n");
+ cmn_err(CE_WARN,
+ "XFS: osyncisdsync is now the default, option is deprecated.");
} else if (!strcmp(this_char, "irixsgid")) {
} else if (!strcmp(this_char, "irixsgid")) {
-printk("XFS: irixsgid is now a sysctl(2) variable, option is deprecated.\n");
+ cmn_err(CE_WARN,
+ "XFS: irixsgid is now a sysctl(2) variable, option is deprecated.");
} else {
} else {
- printk("XFS: unknown mount option [%s].\n", this_char);
+ cmn_err(CE_WARN,
+ "XFS: unknown mount option [%s].", this_char);
return EINVAL;
}
}
if (args->flags & XFSMNT_NORECOVERY) {
if ((vfsp->vfs_flag & VFS_RDONLY) == 0) {
return EINVAL;
}
}
if (args->flags & XFSMNT_NORECOVERY) {
if ((vfsp->vfs_flag & VFS_RDONLY) == 0) {
- printk("XFS: no-recovery mounts must be read-only.\n");
+ cmn_err(CE_WARN,
+ "XFS: no-recovery mounts must be read-only.");
return EINVAL;
}
}
if ((args->flags & XFSMNT_NOALIGN) && (dsunit || dswidth)) {
return EINVAL;
}
}
if ((args->flags & XFSMNT_NOALIGN) && (dsunit || dswidth)) {
- printk(
- "XFS: sunit and swidth options incompatible with the noalign option
\n
");
+ cmn_err(CE_WARN,
+ "XFS: sunit and swidth options incompatible with the noalign option");
return EINVAL;
}
if ((dsunit && !dswidth) || (!dsunit && dswidth)) {
return EINVAL;
}
if ((dsunit && !dswidth) || (!dsunit && dswidth)) {
- printk("XFS: sunit and swidth must be specified together\n");
+ cmn_err(CE_WARN,
+ "XFS: sunit and swidth must be specified together");
return EINVAL;
}
if (dsunit && (dswidth % dsunit != 0)) {
return EINVAL;
}
if (dsunit && (dswidth % dsunit != 0)) {
- printk(
- "XFS: stripe width (%d) must be a multiple of the stripe unit (%d)
\n
",
+ cmn_err(CE_WARN,
+ "XFS: stripe width (%d) must be a multiple of the stripe unit (%d)",
dswidth, dsunit);
return EINVAL;
}
dswidth, dsunit);
return EINVAL;
}
@@
-1916,7
+1934,7
@@
xfs_showargs(
};
struct proc_xfs_info *xfs_infop;
struct xfs_mount *mp = XFS_BHVTOM(bhv);
};
struct proc_xfs_info *xfs_infop;
struct xfs_mount *mp = XFS_BHVTOM(bhv);
- struct
vfs
*vfsp = XFS_MTOVFS(mp);
+ struct
bhv_vfs
*vfsp = XFS_MTOVFS(mp);
for (xfs_infop = xfs_info; xfs_infop->flag; xfs_infop++) {
if (mp->m_flags & xfs_infop->flag)
for (xfs_infop = xfs_info; xfs_infop->flag; xfs_infop++) {
if (mp->m_flags & xfs_infop->flag)
@@
-1924,7
+1942,7
@@
xfs_showargs(
}
if (mp->m_flags & XFS_MOUNT_IHASHSIZE)
}
if (mp->m_flags & XFS_MOUNT_IHASHSIZE)
- seq_printf(m, "," MNTOPT_IHASHSIZE "=%d", mp->m_ihsize);
+ seq_printf(m, "," MNTOPT_IHASHSIZE "=%d",
(int)
mp->m_ihsize);
if (mp->m_flags & XFS_MOUNT_DFLT_IOSIZE)
seq_printf(m, "," MNTOPT_ALLOCSIZE "=%dk",
if (mp->m_flags & XFS_MOUNT_DFLT_IOSIZE)
seq_printf(m, "," MNTOPT_ALLOCSIZE "=%dk",
@@
-1976,7
+1994,7
@@
xfs_freeze(
}
}
-vfsops_t xfs_vfsops = {
+
bhv_
vfsops_t xfs_vfsops = {
BHV_IDENTITY_INIT(VFS_BHV_XFS,VFS_POSITION_XFS),
.vfs_parseargs = xfs_parseargs,
.vfs_showargs = xfs_showargs,
BHV_IDENTITY_INIT(VFS_BHV_XFS,VFS_POSITION_XFS),
.vfs_parseargs = xfs_parseargs,
.vfs_showargs = xfs_showargs,