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]>
Cc: Dave Kleikamp <[email protected]>
---
fs/jfs/super.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index b37d1f7..6ce1aac 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,7 +169,10 @@ 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;
}
--
Coly Li
SuSE Labs
One minor nit...
On Tue, 2009-01-20 at 15:06 +0800, Coly Li wrote:
> 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]>
Acked-by: Dave Kleikamp <[email protected]>
> ---
> fs/jfs/super.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/fs/jfs/super.c b/fs/jfs/super.c
> index b37d1f7..6ce1aac 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,7 +169,10 @@ 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);
> +
checkpatch.pl points out a trailing tab here
> buf->f_namelen = JFS_NAME_MAX;
> return 0;
> }
>
--
David Kleikamp
IBM Linux Technology Center
Dave Kleikamp Wrote:
> One minor nit...
>
Yeah, if there is no other device preempts major device number, it's almost no difference to
huge_encode_dev() method in common cases. Anyway, using uuid a little better than v1 :)
> On Tue, 2009-01-20 at 15:06 +0800, Coly Li wrote:
>> 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]>
>
> Acked-by: Dave Kleikamp <[email protected]>
>
>> ---
>> fs/jfs/super.c | 6 +++++-
>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/fs/jfs/super.c b/fs/jfs/super.c
>> index b37d1f7..6ce1aac 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,7 +169,10 @@ 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);
>> +
>
> checkpatch.pl points out a trailing tab here
>
Oops, thanks for pointing out this. I will send out v3 and add your Acked-By in the patch.
Thanks for review.
--
Coly Li
SuSE Labs