aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Mahoney <jeffm@suse.com>2009-03-30 14:02:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-03-30 15:16:35 -0400
commit702d21c6f6c790b12c4820cd2f29bc8472aed633 (patch)
treeeaed957de4e319dc0083fa66e7614f99a10fda89
parent8e0ee43bc2c3e19db56a4adaa9a9b04ce885cd84 (diff)
reiserfs: add support for mount count incrementing
The following patch adds the fields for tracking mount counts and last fsck timestamps to the superblock. It also increments the mount count on every read-write mount. Reiserfsprogs 3.6.21 added support for these fields. Signed-off-by: Jeff Mahoney <jeffm@suse.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--fs/reiserfs/super.c6
-rw-r--r--include/linux/reiserfs_fs.h6
-rw-r--r--include/linux/reiserfs_fs_sb.h3
3 files changed, 13 insertions, 2 deletions
diff --git a/fs/reiserfs/super.c b/fs/reiserfs/super.c
index f3c820b75829..4ad40afe54e1 100644
--- a/fs/reiserfs/super.c
+++ b/fs/reiserfs/super.c
@@ -1280,6 +1280,8 @@ static int reiserfs_remount(struct super_block *s, int *mount_flags, char *arg)
1280 REISERFS_SB(s)->s_mount_state = sb_umount_state(rs); 1280 REISERFS_SB(s)->s_mount_state = sb_umount_state(rs);
1281 s->s_flags &= ~MS_RDONLY; 1281 s->s_flags &= ~MS_RDONLY;
1282 set_sb_umount_state(rs, REISERFS_ERROR_FS); 1282 set_sb_umount_state(rs, REISERFS_ERROR_FS);
1283 if (!old_format_only(s))
1284 set_sb_mnt_count(rs, sb_mnt_count(rs) + 1);
1283 /* mark_buffer_dirty (SB_BUFFER_WITH_SB (s), 1); */ 1285 /* mark_buffer_dirty (SB_BUFFER_WITH_SB (s), 1); */
1284 journal_mark_dirty(&th, s, SB_BUFFER_WITH_SB(s)); 1286 journal_mark_dirty(&th, s, SB_BUFFER_WITH_SB(s));
1285 REISERFS_SB(s)->s_mount_state = REISERFS_VALID_FS; 1287 REISERFS_SB(s)->s_mount_state = REISERFS_VALID_FS;
@@ -1819,7 +1821,9 @@ static int reiserfs_fill_super(struct super_block *s, void *data, int silent)
1819 } else if (!silent) { 1821 } else if (!silent) {
1820 reiserfs_info(s, "using 3.5.x disk format\n"); 1822 reiserfs_info(s, "using 3.5.x disk format\n");
1821 } 1823 }
1822 } 1824 } else
1825 set_sb_mnt_count(rs, sb_mnt_count(rs) + 1);
1826
1823 1827
1824 journal_mark_dirty(&th, s, SB_BUFFER_WITH_SB(s)); 1828 journal_mark_dirty(&th, s, SB_BUFFER_WITH_SB(s));
1825 errval = journal_end(&th, s, 1); 1829 errval = journal_end(&th, s, 1);
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h
index bc5114d35e99..ab748a03fe97 100644
--- a/include/linux/reiserfs_fs.h
+++ b/include/linux/reiserfs_fs.h
@@ -171,7 +171,11 @@ struct reiserfs_super_block {
171 __le32 s_flags; /* Right now used only by inode-attributes, if enabled */ 171 __le32 s_flags; /* Right now used only by inode-attributes, if enabled */
172 unsigned char s_uuid[16]; /* filesystem unique identifier */ 172 unsigned char s_uuid[16]; /* filesystem unique identifier */
173 unsigned char s_label[16]; /* filesystem volume label */ 173 unsigned char s_label[16]; /* filesystem volume label */
174 char s_unused[88]; /* zero filled by mkreiserfs and 174 __le16 s_mnt_count; /* Count of mounts since last fsck */
175 __le16 s_max_mnt_count; /* Maximum mounts before check */
176 __le32 s_lastcheck; /* Timestamp of last fsck */
177 __le32 s_check_interval; /* Interval between checks */
178 char s_unused[76]; /* zero filled by mkreiserfs and
175 * reiserfs_convert_objectid_map_v1() 179 * reiserfs_convert_objectid_map_v1()
176 * so any additions must be updated 180 * so any additions must be updated
177 * there as well. */ 181 * there as well. */
diff --git a/include/linux/reiserfs_fs_sb.h b/include/linux/reiserfs_fs_sb.h
index bda6b562a1e0..ccd38f351530 100644
--- a/include/linux/reiserfs_fs_sb.h
+++ b/include/linux/reiserfs_fs_sb.h
@@ -73,6 +73,9 @@ typedef enum {
73#define sb_version(sbp) (le16_to_cpu((sbp)->s_v1.s_version)) 73#define sb_version(sbp) (le16_to_cpu((sbp)->s_v1.s_version))
74#define set_sb_version(sbp,v) ((sbp)->s_v1.s_version = cpu_to_le16(v)) 74#define set_sb_version(sbp,v) ((sbp)->s_v1.s_version = cpu_to_le16(v))
75 75
76#define sb_mnt_count(sbp) (le16_to_cpu((sbp)->s_mnt_count))
77#define set_sb_mnt_count(sbp, v) ((sbp)->s_mnt_count = cpu_to_le16(v))
78
76#define sb_reserved_for_journal(sbp) \ 79#define sb_reserved_for_journal(sbp) \
77 (le16_to_cpu((sbp)->s_v1.s_reserved_for_journal)) 80 (le16_to_cpu((sbp)->s_v1.s_reserved_for_journal))
78#define set_sb_reserved_for_journal(sbp,v) \ 81#define set_sb_reserved_for_journal(sbp,v) \