[PATCH 4/9] jfs: return f_fsid for statfs(2)

[email protected] Wed, 17 Jun 2009 08:44:30 -0500 (CDT)
Newsgroups gmane.comp.file-systems.jfs.patches
Message-ID <[email protected]>
commit b5c816a4f177604ae708892bba074b1d534fcbee
Author: Coly Li <[email protected]>
Date:   Wed Jan 21 00:05:39 2009 +0800

    jfs: return f_fsid for statfs(2)
    
    This patch makes jfs return f_fsid info for statfs(2). By Andreas'
    suggestion, this patch populates a persistent f_fsid between boots/mounts
    with help of on-disk uuid record.
    
    Signed-off-by: Coly Li <[email protected]>
    Signed-off-by: Dave Kleikamp <[email protected]>

diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index 0dae345..59e07c1 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -29,6 +29,7 @@
 #include <linux/posix_acl.h>
 #include <linux/buffer_head.h>
 #include <linux/exportfs.h>
+#include <linux/crc32.h>
 #include <asm/uaccess.h>
 #include <linux/seq_file.h>
 
@@ -168,6 +169,9 @@ static int jfs_statfs(struct dentry *dentry, struct kstatfs *buf)
 	buf->f_files = maxinodes;
 	buf->f_ffree = maxinodes - (atomic_read(&imap->im_numinos) -
 				    atomic_read(&imap->im_numfree));
+	buf->f_fsid.val[0] = (u32)crc32_le(0, sbi->uuid, sizeof(sbi->uuid)/2);
+	buf->f_fsid.val[1] = (u32)crc32_le(0, sbi->uuid + sizeof(sbi->uuid)/2,
+					sizeof(sbi->uuid)/2);
 
 	buf->f_namelen = JFS_NAME_MAX;
 	return 0;

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects