diff options
Diffstat (limited to 'fs/xfs')
-rw-r--r-- | fs/xfs/xfs_attr.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_bmap_btree.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_discard.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_dquot.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_dquot_item.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_format.h | 86 | ||||
-rw-r--r-- | fs/xfs/xfs_icache.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_inode.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_ioctl.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_iomap.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_iops.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_log_format.h | 58 | ||||
-rw-r--r-- | fs/xfs/xfs_log_recover.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_mount.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_qm.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_qm_bhv.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_qm_syscalls.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_quota.h | 126 | ||||
-rw-r--r-- | fs/xfs/xfs_quotaops.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_rename.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_super.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_symlink.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_trace.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_trans.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_trans_dquot.c | 1 | ||||
-rw-r--r-- | fs/xfs/xfs_types.h | 6 | ||||
-rw-r--r-- | fs/xfs/xfs_utils.c | 2 | ||||
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 2 |
29 files changed, 175 insertions, 137 deletions
diff --git a/fs/xfs/xfs_attr.c b/fs/xfs/xfs_attr.c index 20fe3fe9d341..27a48bb07249 100644 --- a/fs/xfs/xfs_attr.c +++ b/fs/xfs/xfs_attr.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 05c698ccb238..0343b44b8284 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 0c61a22be6fd..bcee383b23b6 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_discard.c b/fs/xfs/xfs_discard.c index 69cf4fcde03e..65831f9babeb 100644 --- a/fs/xfs/xfs_discard.c +++ b/fs/xfs/xfs_discard.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_format.h" | ||
19 | #include "xfs_sb.h" | 20 | #include "xfs_sb.h" |
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_ag.h" | 22 | #include "xfs_ag.h" |
diff --git a/fs/xfs/xfs_dquot.c b/fs/xfs/xfs_dquot.c index 0adf27ecf3f1..36e1cf32f741 100644 --- a/fs/xfs/xfs_dquot.c +++ b/fs/xfs/xfs_dquot.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
21 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_dquot_item.c b/fs/xfs/xfs_dquot_item.c index 57aa4b03720c..f07a4365def6 100644 --- a/fs/xfs/xfs_dquot_item.c +++ b/fs/xfs/xfs_dquot_item.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
22 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h new file mode 100644 index 000000000000..2b4f16668123 --- /dev/null +++ b/fs/xfs/xfs_format.h | |||
@@ -0,0 +1,86 @@ | |||
1 | /* | ||
2 | * Copyright (c) 2000-2005 Silicon Graphics, Inc. | ||
3 | * All Rights Reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License as | ||
7 | * published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope that it would be useful, | ||
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
12 | * GNU General Public License for more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License | ||
15 | * along with this program; if not, write the Free Software Foundation, | ||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
17 | */ | ||
18 | #ifndef __XFS_FORMAT_H__ | ||
19 | #define __XFS_FORMAT_H__ | ||
20 | |||
21 | /* | ||
22 | * XFS On Disk Format Definitions | ||
23 | * | ||
24 | * This header file defines all the on-disk format definitions for | ||
25 | * general XFS objects. Directory and attribute related objects are defined in | ||
26 | * xfs_da_format.h, which log and log item formats are defined in | ||
27 | * xfs_log_format.h. Everything else goes here. | ||
28 | */ | ||
29 | |||
30 | /* | ||
31 | * Dquot and dquot block format definitions | ||
32 | */ | ||
33 | #define XFS_DQUOT_MAGIC 0x4451 /* 'DQ' */ | ||
34 | #define XFS_DQUOT_VERSION (u_int8_t)0x01 /* latest version number */ | ||
35 | |||
36 | /* | ||
37 | * This is the main portion of the on-disk representation of quota | ||
38 | * information for a user. This is the q_core of the xfs_dquot_t that | ||
39 | * is kept in kernel memory. We pad this with some more expansion room | ||
40 | * to construct the on disk structure. | ||
41 | */ | ||
42 | typedef struct xfs_disk_dquot { | ||
43 | __be16 d_magic; /* dquot magic = XFS_DQUOT_MAGIC */ | ||
44 | __u8 d_version; /* dquot version */ | ||
45 | __u8 d_flags; /* XFS_DQ_USER/PROJ/GROUP */ | ||
46 | __be32 d_id; /* user,project,group id */ | ||
47 | __be64 d_blk_hardlimit;/* absolute limit on disk blks */ | ||
48 | __be64 d_blk_softlimit;/* preferred limit on disk blks */ | ||
49 | __be64 d_ino_hardlimit;/* maximum # allocated inodes */ | ||
50 | __be64 d_ino_softlimit;/* preferred inode limit */ | ||
51 | __be64 d_bcount; /* disk blocks owned by the user */ | ||
52 | __be64 d_icount; /* inodes owned by the user */ | ||
53 | __be32 d_itimer; /* zero if within inode limits if not, | ||
54 | this is when we refuse service */ | ||
55 | __be32 d_btimer; /* similar to above; for disk blocks */ | ||
56 | __be16 d_iwarns; /* warnings issued wrt num inodes */ | ||
57 | __be16 d_bwarns; /* warnings issued wrt disk blocks */ | ||
58 | __be32 d_pad0; /* 64 bit align */ | ||
59 | __be64 d_rtb_hardlimit;/* absolute limit on realtime blks */ | ||
60 | __be64 d_rtb_softlimit;/* preferred limit on RT disk blks */ | ||
61 | __be64 d_rtbcount; /* realtime blocks owned */ | ||
62 | __be32 d_rtbtimer; /* similar to above; for RT disk blocks */ | ||
63 | __be16 d_rtbwarns; /* warnings issued wrt RT disk blocks */ | ||
64 | __be16 d_pad; | ||
65 | } xfs_disk_dquot_t; | ||
66 | |||
67 | /* | ||
68 | * This is what goes on disk. This is separated from the xfs_disk_dquot because | ||
69 | * carrying the unnecessary padding would be a waste of memory. | ||
70 | */ | ||
71 | typedef struct xfs_dqblk { | ||
72 | xfs_disk_dquot_t dd_diskdq; /* portion that lives incore as well */ | ||
73 | char dd_fill[4]; /* filling for posterity */ | ||
74 | |||
75 | /* | ||
76 | * These two are only present on filesystems with the CRC bits set. | ||
77 | */ | ||
78 | __be32 dd_crc; /* checksum */ | ||
79 | __be64 dd_lsn; /* last modification in log */ | ||
80 | uuid_t dd_uuid; /* location information */ | ||
81 | } xfs_dqblk_t; | ||
82 | |||
83 | #define XFS_DQUOT_CRC_OFF offsetof(struct xfs_dqblk, dd_crc) | ||
84 | |||
85 | |||
86 | #endif /* __XFS_FORMAT_H__ */ | ||
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index 3f90e1ceb8d6..d9a41671a4ad 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_types.h" | 21 | #include "xfs_types.h" |
21 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
22 | #include "xfs_log_priv.h" | 23 | #include "xfs_log_priv.h" |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index bb262c25c8de..516a70a5a45d 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | #include "xfs.h" | 20 | #include "xfs.h" |
21 | #include "xfs_fs.h" | 21 | #include "xfs_fs.h" |
22 | #include "xfs_types.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_log.h" | 23 | #include "xfs_log.h" |
24 | #include "xfs_inum.h" | 24 | #include "xfs_inum.h" |
25 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c index 6e2bca5d44d6..3124efafb8bf 100644 --- a/fs/xfs/xfs_ioctl.c +++ b/fs/xfs/xfs_ioctl.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
22 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 6a7096422295..e4577f819f1f 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
22 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 96dda62d497b..e44169843c40 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_acl.h" | 21 | #include "xfs_acl.h" |
21 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_log_format.h b/fs/xfs/xfs_log_format.h index d1e93d38bd39..5963ec73a95a 100644 --- a/fs/xfs/xfs_log_format.h +++ b/fs/xfs/xfs_log_format.h | |||
@@ -544,4 +544,62 @@ typedef struct xfs_efd_log_format_64 { | |||
544 | xfs_extent_64_t efd_extents[1]; /* array of extents freed */ | 544 | xfs_extent_64_t efd_extents[1]; /* array of extents freed */ |
545 | } xfs_efd_log_format_64_t; | 545 | } xfs_efd_log_format_64_t; |
546 | 546 | ||
547 | /* | ||
548 | * Dquot Log format definitions. | ||
549 | * | ||
550 | * The first two fields must be the type and size fitting into | ||
551 | * 32 bits : log_recovery code assumes that. | ||
552 | */ | ||
553 | typedef struct xfs_dq_logformat { | ||
554 | __uint16_t qlf_type; /* dquot log item type */ | ||
555 | __uint16_t qlf_size; /* size of this item */ | ||
556 | xfs_dqid_t qlf_id; /* usr/grp/proj id : 32 bits */ | ||
557 | __int64_t qlf_blkno; /* blkno of dquot buffer */ | ||
558 | __int32_t qlf_len; /* len of dquot buffer */ | ||
559 | __uint32_t qlf_boffset; /* off of dquot in buffer */ | ||
560 | } xfs_dq_logformat_t; | ||
561 | |||
562 | /* | ||
563 | * log format struct for QUOTAOFF records. | ||
564 | * The first two fields must be the type and size fitting into | ||
565 | * 32 bits : log_recovery code assumes that. | ||
566 | * We write two LI_QUOTAOFF logitems per quotaoff, the last one keeps a pointer | ||
567 | * to the first and ensures that the first logitem is taken out of the AIL | ||
568 | * only when the last one is securely committed. | ||
569 | */ | ||
570 | typedef struct xfs_qoff_logformat { | ||
571 | unsigned short qf_type; /* quotaoff log item type */ | ||
572 | unsigned short qf_size; /* size of this item */ | ||
573 | unsigned int qf_flags; /* USR and/or GRP */ | ||
574 | char qf_pad[12]; /* padding for future */ | ||
575 | } xfs_qoff_logformat_t; | ||
576 | |||
577 | |||
578 | /* | ||
579 | * Disk quotas status in m_qflags, and also sb_qflags. 16 bits. | ||
580 | */ | ||
581 | #define XFS_UQUOTA_ACCT 0x0001 /* user quota accounting ON */ | ||
582 | #define XFS_UQUOTA_ENFD 0x0002 /* user quota limits enforced */ | ||
583 | #define XFS_UQUOTA_CHKD 0x0004 /* quotacheck run on usr quotas */ | ||
584 | #define XFS_PQUOTA_ACCT 0x0008 /* project quota accounting ON */ | ||
585 | #define XFS_OQUOTA_ENFD 0x0010 /* other (grp/prj) quota limits enforced */ | ||
586 | #define XFS_OQUOTA_CHKD 0x0020 /* quotacheck run on other (grp/prj) quotas */ | ||
587 | #define XFS_GQUOTA_ACCT 0x0040 /* group quota accounting ON */ | ||
588 | |||
589 | /* | ||
590 | * Conversion to and from the combined OQUOTA flag (if necessary) | ||
591 | * is done only in xfs_sb_qflags_to_disk() and xfs_sb_qflags_from_disk() | ||
592 | */ | ||
593 | #define XFS_GQUOTA_ENFD 0x0080 /* group quota limits enforced */ | ||
594 | #define XFS_GQUOTA_CHKD 0x0100 /* quotacheck run on group quotas */ | ||
595 | #define XFS_PQUOTA_ENFD 0x0200 /* project quota limits enforced */ | ||
596 | #define XFS_PQUOTA_CHKD 0x0400 /* quotacheck run on project quotas */ | ||
597 | |||
598 | #define XFS_ALL_QUOTA_ACCT \ | ||
599 | (XFS_UQUOTA_ACCT | XFS_GQUOTA_ACCT | XFS_PQUOTA_ACCT) | ||
600 | #define XFS_ALL_QUOTA_ENFD \ | ||
601 | (XFS_UQUOTA_ENFD | XFS_GQUOTA_ENFD | XFS_PQUOTA_ENFD) | ||
602 | #define XFS_ALL_QUOTA_CHKD \ | ||
603 | (XFS_UQUOTA_CHKD | XFS_GQUOTA_CHKD | XFS_PQUOTA_CHKD) | ||
604 | |||
547 | #endif /* __XFS_LOG_FORMAT_H__ */ | 605 | #endif /* __XFS_LOG_FORMAT_H__ */ |
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 7d3fc9ec56a2..7e480860fa75 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index a0fa8021330d..ca4a1a5776af 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c index 1e2361d0294e..92c36ac4bb23 100644 --- a/fs/xfs/xfs_qm.c +++ b/fs/xfs/xfs_qm.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_bit.h" | 21 | #include "xfs_bit.h" |
21 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_qm_bhv.c b/fs/xfs/xfs_qm_bhv.c index 437a52d91f6d..3af50ccdfac1 100644 --- a/fs/xfs/xfs_qm_bhv.c +++ b/fs/xfs/xfs_qm_bhv.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
22 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_qm_syscalls.c b/fs/xfs/xfs_qm_syscalls.c index 8d9e4c78e1ab..18519392c486 100644 --- a/fs/xfs/xfs_qm_syscalls.c +++ b/fs/xfs/xfs_qm_syscalls.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include "xfs.h" | 21 | #include "xfs.h" |
22 | #include "xfs_fs.h" | 22 | #include "xfs_fs.h" |
23 | #include "xfs_format.h" | ||
23 | #include "xfs_bit.h" | 24 | #include "xfs_bit.h" |
24 | #include "xfs_log.h" | 25 | #include "xfs_log.h" |
25 | #include "xfs_trans.h" | 26 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_quota.h b/fs/xfs/xfs_quota.h index b14f42c714b6..16bde32f140e 100644 --- a/fs/xfs/xfs_quota.h +++ b/fs/xfs/xfs_quota.h | |||
@@ -21,18 +21,6 @@ | |||
21 | struct xfs_trans; | 21 | struct xfs_trans; |
22 | 22 | ||
23 | /* | 23 | /* |
24 | * The ondisk form of a dquot structure. | ||
25 | */ | ||
26 | #define XFS_DQUOT_MAGIC 0x4451 /* 'DQ' */ | ||
27 | #define XFS_DQUOT_VERSION (u_int8_t)0x01 /* latest version number */ | ||
28 | |||
29 | /* | ||
30 | * uid_t and gid_t are hard-coded to 32 bits in the inode. | ||
31 | * Hence, an 'id' in a dquot is 32 bits.. | ||
32 | */ | ||
33 | typedef __uint32_t xfs_dqid_t; | ||
34 | |||
35 | /* | ||
36 | * Even though users may not have quota limits occupying all 64-bits, | 24 | * Even though users may not have quota limits occupying all 64-bits, |
37 | * they may need 64-bit accounting. Hence, 64-bit quota-counters, | 25 | * they may need 64-bit accounting. Hence, 64-bit quota-counters, |
38 | * and quota-limits. This is a waste in the common case, but hey ... | 26 | * and quota-limits. This is a waste in the common case, but hey ... |
@@ -41,55 +29,6 @@ typedef __uint64_t xfs_qcnt_t; | |||
41 | typedef __uint16_t xfs_qwarncnt_t; | 29 | typedef __uint16_t xfs_qwarncnt_t; |
42 | 30 | ||
43 | /* | 31 | /* |
44 | * This is the main portion of the on-disk representation of quota | ||
45 | * information for a user. This is the q_core of the xfs_dquot_t that | ||
46 | * is kept in kernel memory. We pad this with some more expansion room | ||
47 | * to construct the on disk structure. | ||
48 | */ | ||
49 | typedef struct xfs_disk_dquot { | ||
50 | __be16 d_magic; /* dquot magic = XFS_DQUOT_MAGIC */ | ||
51 | __u8 d_version; /* dquot version */ | ||
52 | __u8 d_flags; /* XFS_DQ_USER/PROJ/GROUP */ | ||
53 | __be32 d_id; /* user,project,group id */ | ||
54 | __be64 d_blk_hardlimit;/* absolute limit on disk blks */ | ||
55 | __be64 d_blk_softlimit;/* preferred limit on disk blks */ | ||
56 | __be64 d_ino_hardlimit;/* maximum # allocated inodes */ | ||
57 | __be64 d_ino_softlimit;/* preferred inode limit */ | ||
58 | __be64 d_bcount; /* disk blocks owned by the user */ | ||
59 | __be64 d_icount; /* inodes owned by the user */ | ||
60 | __be32 d_itimer; /* zero if within inode limits if not, | ||
61 | this is when we refuse service */ | ||
62 | __be32 d_btimer; /* similar to above; for disk blocks */ | ||
63 | __be16 d_iwarns; /* warnings issued wrt num inodes */ | ||
64 | __be16 d_bwarns; /* warnings issued wrt disk blocks */ | ||
65 | __be32 d_pad0; /* 64 bit align */ | ||
66 | __be64 d_rtb_hardlimit;/* absolute limit on realtime blks */ | ||
67 | __be64 d_rtb_softlimit;/* preferred limit on RT disk blks */ | ||
68 | __be64 d_rtbcount; /* realtime blocks owned */ | ||
69 | __be32 d_rtbtimer; /* similar to above; for RT disk blocks */ | ||
70 | __be16 d_rtbwarns; /* warnings issued wrt RT disk blocks */ | ||
71 | __be16 d_pad; | ||
72 | } xfs_disk_dquot_t; | ||
73 | |||
74 | /* | ||
75 | * This is what goes on disk. This is separated from the xfs_disk_dquot because | ||
76 | * carrying the unnecessary padding would be a waste of memory. | ||
77 | */ | ||
78 | typedef struct xfs_dqblk { | ||
79 | xfs_disk_dquot_t dd_diskdq; /* portion that lives incore as well */ | ||
80 | char dd_fill[4]; /* filling for posterity */ | ||
81 | |||
82 | /* | ||
83 | * These two are only present on filesystems with the CRC bits set. | ||
84 | */ | ||
85 | __be32 dd_crc; /* checksum */ | ||
86 | __be64 dd_lsn; /* last modification in log */ | ||
87 | uuid_t dd_uuid; /* location information */ | ||
88 | } xfs_dqblk_t; | ||
89 | |||
90 | #define XFS_DQUOT_CRC_OFF offsetof(struct xfs_dqblk, dd_crc) | ||
91 | |||
92 | /* | ||
93 | * flags for q_flags field in the dquot. | 32 | * flags for q_flags field in the dquot. |
94 | */ | 33 | */ |
95 | #define XFS_DQ_USER 0x0001 /* a user quota */ | 34 | #define XFS_DQ_USER 0x0001 /* a user quota */ |
@@ -131,71 +70,6 @@ typedef struct xfs_dqblk { | |||
131 | #define XFS_DQUOT_LOGRES(mp) \ | 70 | #define XFS_DQUOT_LOGRES(mp) \ |
132 | ((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6) | 71 | ((sizeof(struct xfs_dq_logformat) + sizeof(struct xfs_disk_dquot)) * 6) |
133 | 72 | ||
134 | /* | ||
135 | * These are the structures used to lay out dquots and quotaoff | ||
136 | * records on the log. Quite similar to those of inodes. | ||
137 | */ | ||
138 | |||
139 | /* | ||
140 | * log format struct for dquots. | ||
141 | * The first two fields must be the type and size fitting into | ||
142 | * 32 bits : log_recovery code assumes that. | ||
143 | */ | ||
144 | typedef struct xfs_dq_logformat { | ||
145 | __uint16_t qlf_type; /* dquot log item type */ | ||
146 | __uint16_t qlf_size; /* size of this item */ | ||
147 | xfs_dqid_t qlf_id; /* usr/grp/proj id : 32 bits */ | ||
148 | __int64_t qlf_blkno; /* blkno of dquot buffer */ | ||
149 | __int32_t qlf_len; /* len of dquot buffer */ | ||
150 | __uint32_t qlf_boffset; /* off of dquot in buffer */ | ||
151 | } xfs_dq_logformat_t; | ||
152 | |||
153 | /* | ||
154 | * log format struct for QUOTAOFF records. | ||
155 | * The first two fields must be the type and size fitting into | ||
156 | * 32 bits : log_recovery code assumes that. | ||
157 | * We write two LI_QUOTAOFF logitems per quotaoff, the last one keeps a pointer | ||
158 | * to the first and ensures that the first logitem is taken out of the AIL | ||
159 | * only when the last one is securely committed. | ||
160 | */ | ||
161 | typedef struct xfs_qoff_logformat { | ||
162 | unsigned short qf_type; /* quotaoff log item type */ | ||
163 | unsigned short qf_size; /* size of this item */ | ||
164 | unsigned int qf_flags; /* USR and/or GRP */ | ||
165 | char qf_pad[12]; /* padding for future */ | ||
166 | } xfs_qoff_logformat_t; | ||
167 | |||
168 | |||
169 | /* | ||
170 | * Disk quotas status in m_qflags, and also sb_qflags. 16 bits. | ||
171 | */ | ||
172 | #define XFS_UQUOTA_ACCT 0x0001 /* user quota accounting ON */ | ||
173 | #define XFS_UQUOTA_ENFD 0x0002 /* user quota limits enforced */ | ||
174 | #define XFS_UQUOTA_CHKD 0x0004 /* quotacheck run on usr quotas */ | ||
175 | #define XFS_PQUOTA_ACCT 0x0008 /* project quota accounting ON */ | ||
176 | #define XFS_OQUOTA_ENFD 0x0010 /* other (grp/prj) quota limits enforced */ | ||
177 | #define XFS_OQUOTA_CHKD 0x0020 /* quotacheck run on other (grp/prj) quotas */ | ||
178 | #define XFS_GQUOTA_ACCT 0x0040 /* group quota accounting ON */ | ||
179 | |||
180 | /* | ||
181 | * Conversion to and from the combined OQUOTA flag (if necessary) | ||
182 | * is done only in xfs_sb_qflags_to_disk() and xfs_sb_qflags_from_disk() | ||
183 | */ | ||
184 | #define XFS_GQUOTA_ENFD 0x0080 /* group quota limits enforced */ | ||
185 | #define XFS_GQUOTA_CHKD 0x0100 /* quotacheck run on group quotas */ | ||
186 | #define XFS_PQUOTA_ENFD 0x0200 /* project quota limits enforced */ | ||
187 | #define XFS_PQUOTA_CHKD 0x0400 /* quotacheck run on project quotas */ | ||
188 | |||
189 | /* | ||
190 | * Quota Accounting/Enforcement flags | ||
191 | */ | ||
192 | #define XFS_ALL_QUOTA_ACCT \ | ||
193 | (XFS_UQUOTA_ACCT | XFS_GQUOTA_ACCT | XFS_PQUOTA_ACCT) | ||
194 | #define XFS_ALL_QUOTA_ENFD \ | ||
195 | (XFS_UQUOTA_ENFD | XFS_GQUOTA_ENFD | XFS_PQUOTA_ENFD) | ||
196 | #define XFS_ALL_QUOTA_CHKD \ | ||
197 | (XFS_UQUOTA_CHKD | XFS_GQUOTA_CHKD | XFS_PQUOTA_CHKD) | ||
198 | |||
199 | #define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) | 73 | #define XFS_IS_QUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_ALL_QUOTA_ACCT) |
200 | #define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) | 74 | #define XFS_IS_UQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_UQUOTA_ACCT) |
201 | #define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) | 75 | #define XFS_IS_PQUOTA_RUNNING(mp) ((mp)->m_qflags & XFS_PQUOTA_ACCT) |
diff --git a/fs/xfs/xfs_quotaops.c b/fs/xfs/xfs_quotaops.c index 20e30f93b0c7..acf50712f4d7 100644 --- a/fs/xfs/xfs_quotaops.c +++ b/fs/xfs/xfs_quotaops.c | |||
@@ -16,6 +16,7 @@ | |||
16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | 16 | * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_format.h" | ||
19 | #include "xfs_sb.h" | 20 | #include "xfs_sb.h" |
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_ag.h" | 22 | #include "xfs_ag.h" |
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c index 30ff5f401d28..0c1f8ef1880b 100644 --- a/fs/xfs/xfs_rename.c +++ b/fs/xfs/xfs_rename.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
23 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 19922ebeea25..47a1abd94aca 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include "xfs.h" | 19 | #include "xfs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_inum.h" | 22 | #include "xfs_inum.h" |
22 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c index f4895b662fcb..80d550c18bd5 100644 --- a/fs/xfs/xfs_symlink.c +++ b/fs/xfs/xfs_symlink.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #include "xfs.h" | 19 | #include "xfs.h" |
20 | #include "xfs_fs.h" | 20 | #include "xfs_fs.h" |
21 | #include "xfs_types.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_bit.h" | 22 | #include "xfs_bit.h" |
23 | #include "xfs_log.h" | 23 | #include "xfs_log.h" |
24 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
diff --git a/fs/xfs/xfs_trace.c b/fs/xfs/xfs_trace.c index b6e3897c1d9f..5d7b3e40705f 100644 --- a/fs/xfs/xfs_trace.c +++ b/fs/xfs/xfs_trace.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_types.h" |
21 | #include "xfs_format.h" | ||
21 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
23 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c index 35a229981354..1d2a0613cf6a 100644 --- a/fs/xfs/xfs_trans.c +++ b/fs/xfs/xfs_trans.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #include "xfs.h" | 19 | #include "xfs.h" |
20 | #include "xfs_fs.h" | 20 | #include "xfs_fs.h" |
21 | #include "xfs_types.h" | 21 | #include "xfs_format.h" |
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_trans.h" | 23 | #include "xfs_trans.h" |
24 | #include "xfs_sb.h" | 24 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index 61407a847b86..54ee3c5dee76 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c | |||
@@ -17,6 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_format.h" | ||
20 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
21 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
22 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h index 39c48ca64a60..69074ac20ac3 100644 --- a/fs/xfs/xfs_types.h +++ b/fs/xfs/xfs_types.h | |||
@@ -177,4 +177,10 @@ struct xfs_name { | |||
177 | int len; | 177 | int len; |
178 | }; | 178 | }; |
179 | 179 | ||
180 | /* | ||
181 | * uid_t and gid_t are hard-coded to 32 bits in the inode. | ||
182 | * Hence, an 'id' in a dquot is 32 bits.. | ||
183 | */ | ||
184 | typedef __uint32_t xfs_dqid_t; | ||
185 | |||
180 | #endif /* __XFS_TYPES_H__ */ | 186 | #endif /* __XFS_TYPES_H__ */ |
diff --git a/fs/xfs/xfs_utils.c b/fs/xfs/xfs_utils.c index 0025c78ac03c..58386fab913e 100644 --- a/fs/xfs/xfs_utils.c +++ b/fs/xfs/xfs_utils.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | #include "xfs.h" | 18 | #include "xfs.h" |
19 | #include "xfs_fs.h" | 19 | #include "xfs_fs.h" |
20 | #include "xfs_types.h" | 20 | #include "xfs_format.h" |
21 | #include "xfs_log.h" | 21 | #include "xfs_log.h" |
22 | #include "xfs_trans.h" | 22 | #include "xfs_trans.h" |
23 | #include "xfs_sb.h" | 23 | #include "xfs_sb.h" |
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index dc730ac272be..c2d96cd43809 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | #include "xfs.h" | 20 | #include "xfs.h" |
21 | #include "xfs_fs.h" | 21 | #include "xfs_fs.h" |
22 | #include "xfs_types.h" | 22 | #include "xfs_format.h" |
23 | #include "xfs_bit.h" | 23 | #include "xfs_bit.h" |
24 | #include "xfs_log.h" | 24 | #include "xfs_log.h" |
25 | #include "xfs_trans.h" | 25 | #include "xfs_trans.h" |